- Arduino и термометр DS18B20
- Описание
- Подключение
- Библиотеки
- Примеры
- Лазерный инфракрасный термометр Arduino
- Шаг 1. Вступление
- Шаг 2. Необходимые компоненты
- Шаг 3. Инфракрасный датчик температуры GY-906
- Шаг 4. Электроника
- Шаг 5. Программирование
- Шаг 6. Делаем 3D-корпус
- Делаем термометр на основе Arduino UNO и датчика DS18B20
- Обзор датчика DS18B20
- Особенности DS18B20
- Требования к комплектующим
- Схема соединения
- Исходный код для термометра
Arduino и термометр DS18B20
Описание
DS18B20 – высокоточный цифровой датчик температуры. Основные характеристики:
- Диапазон: -55.. 125 °C
- Точность: 0.5 °C
- Разрешение: 9.. 12 бит (0.48.. 0.06 °C)
- Питание: 3-5.5V
- Период выдачи результата:
- 750 мс при точности 12 бит
- 94 мс при точности 9 бит
- Интерфейс связи: 1-Wire (OneWire)
- Корпус: TO-92, SOIC-8 или герметичное исполнение
В наборе идёт датчик в герметичном исполнении со стандартным гнездом (шаг 2.54 мм) для подключения
Подключение
Датчик имеет следующие назначения пинов:
Датчик подключается к любому цифровому пину Arduino, но пин должен быть подтянут к питанию резистором 4.7 кОм. На один пин можно подключить несколько датчиков DS18B20.
В рамках набора GyverKIT резистор на 4.7 кОм можно заменить двумя резисторами на 10 кОм (есть в комплекте), подключенными параллельно:
Библиотеки
Для этого датчика есть несколько библиотек:
- “Официальная” библиотека DallasTemperature.h, для работы которой также понадобится библиотека OneWire.h.
- Наша библиотека microDS18B20
В примерах на этом сайте мы будем использовать microDS18B20, так как она в несколько раз легче и проще в использовании, чем официальная. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию microDS18B20. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Библиотека позволяет работать по схеме “один датчик – один пин”, в которой адрес датчика получать не нужно. Достаточно подключить и использовать:
Каждый датчик имеет свой уникальный адрес. Его можно прочитать следующим образом:
Данный код выводит в порт адрес текущего подключенного датчика.
Зная адреса датчиков, можно подключить несколько штук на один пин и обращаться к ним в коде следующим образом:
Источник
Лазерный инфракрасный термометр Arduino
В этом проекте мы создадим цифровой лазерный инфракрасный термометр на основе Ардуино и в распечатанном 3D-корпусе.
Шаг 1. Вступление
Инфракрасные термометры широко используются для определения температуры поверхности объектов. Часто в технических системах или в электронной цепи повышение температуры является одним из первых признаков того, что что-то не так. Быстрая бесконтактная проверка с помощью инфракрасного термометра поможет понять, что происходит с температурой системы, что позволит отключить ее, прежде чем это приведет к необратимому повреждению.
Инфракрасное излучение — это просто еще один тип излучения, которое существует в электромагнитном спектре. Мы этого не видим, но если бы вы поместили руку рядом с чем-то горячим, например, с плитой, вы бы почувствовали воздействие инфракрасного излучения. Все объекты излучают энергию в виде инфракрасного излучения. Большинство ручных термометров используют линзы для фокусировки света от одного объекта на термобатарею, которая поглощает инфракрасное излучение. Чем больше инфракрасной энергии поглощается, тем больше она нагревается и уровень тепла преобразуется в электрический сигнал, который в конечном итоге преобразуется в показание температуры.
Я работал на трассе на днях, и у меня был компонент, который был очень горячим. Я хотел узнать его температуру, но, поскольку у меня не было инфракрасного термометра под рукой, то было принято решение создать свой собственный. Устройство будет иметь специальный 3D-корпус, который можно распечатать и собрать прямо у себя дома.
Это простой проект, который можно использовать как отличное введение в сенсоры, 3D дизайн или печать, электронику и программирование.
Шаг 2. Необходимые компоненты
Компоненты, необходимые для сборки нашего инфракрасного термометра Ардуино приведены ниже:
- Кнопка-переключатель
- Резисторы 5 кОм, 200 Ом
- 5В лазер
- Ардуино Нано
- Переключатель Вкл/Выкл
- Дисплей OLED 0,96″
- Датчик температуры GY-906 или датчик MLX90614 с соответствующими конденсаторами/резисторами
- Аккумулятор 9В
- 3D-принтер и нить (например, Hatchbox PLA)
Многие компоненты можно приобрести в большинстве интернет-магазинов.
Шаг 3. Инфракрасный датчик температуры GY-906
Я использовал датчик инфракрасного термометра GY-906, который является переходной платой для бесконтактного инфракрасного термометра MLX90614 от Melexis.
Выносная плата очень недорогая и ее легко интегрировать, поставляется с подтягивающими резисторами 10К для интерфейса I2C.
Подтягивающий резистор нужен, чтобы гарантировать на логическом входе, с которым соединён проводник, высокий (в первом случае) либо низкий (во втором случае) уровень в случаях:
- проводник не соединён с логическим выходом;
- присоединённый логический выход находится в высокоимпедансном состоянии;
- когда разомкнут ключевой элемент на присоединённом логическом выходе, который устроен как открытый вывод ключевого элемента.
GY-906 поставляется с заводской калибровкой в диапазоне от -40 до +125 градусов по Цельсию для температуры датчика и от -70 до 380 градусов по Цельсию для температуры объекта. Точность этого датчика составляет примерно 0,5 градуса Цельсия.
Шаг 4. Электроника
Теперь, когда вы собрали все необходимые компоненты, пришло время начать сборку всего вместе. Я бы порекомендовал сначала подключить все на макете, а затем, как только все заработало, приступить к пайке.
Схема нашего устройства (нажмите на схему для увеличения):
Слева у нас есть наш лазер с токоограничивающим резистором 200 Ом, управляемый от цифрового выхода 5. Также есть стандартная кнопка, которая подключена между 5 В и цифровым входом 2. Есть подтягивающий резистор 5 кОм, чтобы когда переключатель разомкнут, на вход ничего не идет, а вместо этого устанавливается на 0 В.
Справа у нас есть основной выключатель, который соединяет нашу батарею 9 В с выводами VIN и GND на Arduino Nano. Дисплей OLED и инфракрасный датчик температуры GY-906 подключены к 3,3 В, а линии SDA подключены к A4, а SCL к A5. На дисплее и GY-906 уже есть подтягивающие резисторы на линиях I2C.
Шаг 5. Программирование
Нужно будет установить следующие библиотеки, чтобы код компилировался.
Программа постоянно считывает данные о температуре с MLX90614, но отображается на OLED только при нажатии кнопки триггера. Если нажать на курок, лазер также включается, чтобы помочь определить, какой объект измеряется.
Код для нашего инфракрасного термометра Ардуино ниже:
Шаг 6. Делаем 3D-корпус
Все создано в Fusion 360. В основании термометра есть место для батареи 9 В, переключателя Вкл/Выкл и спускового механизма (триггера), который представляет собой простую кратковременную кнопку. Крышка основания защелкивается на месте. Есть также пространство для прокладки проводки базовых компонентов в верхней части термометра.
Имеется отверстие для 0,96-дюймового OLED-дисплея и передняя часть на конце термометра для лазера и датчика MLX90614. Как лазер, так и датчик могут быть запрессованы в отверстие. Верхняя часть предназначена для Arduino Nano, и, честно говоря, я действительно недооценил количество проводов, необходимое для подключения в небольшом пространстве.
Все файлы можно скачать по этой ссылке.
Когда я вжал Arduino Nano в небольшое пространство, то потерял много проводов, поэтому в итоге я использовал клеевой пистолет, чтобы зафиксировать провода на месте, устанавливая Nano внутрь корпуса. Я всегда устанавливаю Arduino Nano в специальные держатели, на случай, если захочу использовать его для проектов позже, так что держатели заняли много дополнительного места, которое не понадобилось бы, если бы вы просто всё припаяли. Тем не менее, в конце концов, когда я все установил в корпус, то просто надавил на верхнюю крышку.
Теперь, когда у вас есть лазерный инфракрасный термометр, собранный и запрограммированный, пришло время проверить его!
Нажмите кнопку питания и подождите пока загрузится дисплей.
Источник
Делаем термометр на основе Arduino UNO и датчика DS18B20
В этом уроке мы будем использовать датчик температуры DS18B20 с Arduino UNO для создания термометра. Датчик DS18B20 является хорошим вариантом, когда в проекте с высокой точностью требуется хорошая реакция. Мы покажем как подключить DS18B20 к вашему Arduino UNO и отобразить данные температуры на ЖК-дисплее 16×2.
Обзор датчика DS18B20
Датчик DS18B20 взаимодействует с Arduino через 1-проводную шину. По определению для связи с Arduino требуется только одна линия данных (и земля).
Рабочая температура датчика колеблется от -55° C до + 125° C с точностью ± 0,5° C в диапазоне от -10° C до + 85° C. Кроме того, DS18B20 может получать питание непосредственно от линии передачи данных («паразитный источник питания») без необходимости внешнего источника питания.
Каждый DS18B20 имеет уникальный 64-битный последовательный код или адрес, который позволяет нескольким DS18B20s работать на той же однопроводной шине. Поэтому использование микропроцессора упрощает управление несколькими DS18B20, распределенными по большой площади. Приложения для этой функции включают в себя экологический контроль, системы контроля температуры в зданиях и механическом оборудовании.
Особенности DS18B20
- Необходим только один однопроводный интерфейс для связи между микроконтроллером и датчиком.
- Требуется только один внешний компонент: резистор 4,7 кОм.
- Может питаться от линии передачи данных напрямую, требуя напряжения от 3,0 до 5,5 В.
- Каждое устройство имеет уникальный 64-битный последовательный код, хранящийся на встроенном ПЗУ.
- Может измерять температуру в диапазоне от -55° C до + 125° C (от -67° F до + 257° F).
- Точность ± 0,5° C в диапазоне от -10° C до + 85° C.
В этом проекте используется DS18B20, который поставляется в форме температурного зонда, который является водонепроницаемым. Использование водонепроницаемого датчика расширяет возможности — датчик температуры сможет измерить температуру жидкостей, таких как вода, химикаты, чай и кофе.
Требования к комплектующим
Требования к оборудованию для вашего термометра достаточно стандартные, нам пригодятся:
- Arduino UNO
- ЖК-дисплей 16х2
- Датчик температуры DS18B20
- Провода для перемычек
- Резистор 1K
- Макетная плата
Схема соединения
Сделайте соединения согласно приведенной ниже схеме.
Соединяем датчик и Ардуино
- VCC -> Arduino 5V, плюс резистор 4,7K, идущий от VCC к Data
- Data -> Пин 7 Arduino
- GND -> GND Arduino
Соединения для ЖК-дисплея и Arduino UNO
- Пин 1 -> GND
- Пин 2 -> VCC
- Пин 3 -> Arduino Пин 3
- Пин 4 -> Arduino Пин 33
- Пин 5 -> GND
- Пин 6 -> Arduino Пин 31
- Пин 7-10 -> GND
- Пин 11 -> Arduino Пин 22
- Пин 12 -> Arduino Пин 24
- Пин 13 -> Arduino Пин 26
- Пин 14 -> Arduino Пин 28
- Пин 15 -> VCC через резистор 220 Ом
- Пин 16 -> GND
Подключите потенциометр, как показано выше, к контакту 3 на ЖК-дисплее, для управления контрастностью.
Этот проект работает на температурах до 125° C. В случае наличия некоторого диссонанса в значении показанной температуры дважды проверьте соединения с резистором, подключенным к DS18B20. После соединения всего, что описано выше, мы можем перейти к программированию.
Исходный код для термометра
Перед загрузкой исходного кода вам нужно настроить две библиотеки, необходимые для запуска этого кода в среде Arduino.
- Первая библиотека называется — OneWire (скачать).
- Вторая библиотека называется — DallasTemperature (перейти на GitHub).
После скачивания обеих библиотек переместите файлы в папку библиотек Arduino по умолчанию. Затем скопируйте код в IDE Arduino и загрузите его после двойной проверки правильности подключения вашего датчика.
Примерно это выглядит так:
Мы смогли измерить температуру до 100°C с помощью этого датчика! Он очень отзывчив.
После того, как вы создали проект, потестируйте устройство, погрузив датчик в горячую и холодную воду.
Источник