Цифровые датчики температуры ds18b20

Цифровые датчики температуры ds18b20

Датчик температуры в Arduino – один из самых распространенных видов сенсоров. Разработчику проектов с термометрами на Arduino доступно множество разных вариантов, отличающихся по принципу действия, точности, конструктивному исполнению. Цифровой датчик DS18B20 является одним из наиболее популярных температурных датчиков, часто он используется в водонепроницаемом корпусе для измерения температуры воды или других жидкостей. В этой статье вы найдете описание датчика ds18b20 на русском, мы вместе рассмотрим особенности подключения к ардуино, принцип работы датчика, описание библиотек и скетчей.

Описание датчика DS18B20 для Arduino

DS18B20 – это цифровой температурный датчик, обладающий множеством полезных функций. По сути, DS18B20 – это целый микроконтроллер, который может хранить значение измерений, сигнализировать о выходе температуры за установленные границы (сами границы мы можем устанавливать и менять), менять точность измерений, способ взаимодействия с контроллером и многое другое. Все это в очень небольшом корпусе, который, к тому же, доступен в водонепроницаемом исполнении.

Микросхема имеет три выхода, из которых для данных используется только один, два остальных – это земля и питание. Число проводов можно сократить до двух, если использовать схему с паразитным питанием и соединить Vdd с землей. К одному проводу с данными можно подключить сразу несколько датчиков DS18B20 и в плате Ардуино будет задействован всего один пин.

Виды корпусов DS18B20

Температурный датчик DS18B20 имеет разнообразные виды корпуса. Можно выбрать один из трех – 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92. Последний является наиболее распространенным и изготавливается в специальном влагозащитном корпусе, так что его смело можно использовать под водой. У каждого датчика есть 3 контакта. Для корпуса TO-92 нужно смотреть на цвет проводов: черный – земля, красный – питание и белый/желтый/синий – сигнал. В интернет-магазинах можно купить готовый модуль DS18B20.

Где купить датчик

Естественно, что DS18B20 дешевле всего купить на Алиэкспрессе, хотя он продается и в любых специализированных российских интернет-магазинах с ардуино. Приведем несколько ссылок для примера:

Особенности цифрового датчика DS18B20

  • Погрешность измерения не больше 0,5 С (для температур от -10С до +85С), что позволяет точно определить значение температуры. Не требуется дополнительная калибровка.
  • Температурный диапазон измерений лежит в пределах от -55 С до +125 С.
  • Датчик питается напряжением от 3,3В до 5В.
  • Можно программно задать максимальную разрешающую способность до 0,0625С, наибольшее разрешение 12 бит.
  • Присутствует функция тревожного сигнала.
  • Каждое устройство обладает своим уникальным серийным кодом.
  • Не требуются дополнительные внешние элементы.
  • Можно подключить сразу до 127 датчиков к одной линии связи.
  • Информация передается по протоколу 1-Wire.
  • Для присоединения к микроконтроллеру нужны только 3 провода.
  • Существует так называемый режим паразитного питания – в нем происходит питание напрямую от линии связи. Для подключения в этом случае нужны только 2 провода. Важно, что в этом режиме не гарантируется корректная работа при температурах выше 100С. Режим паразитного питания удобно обычно применяется для приложений с удаленным температурным датчиком.

Память датчика состоит из двух видов: оперативной и энергонезависимой – SRAM и EEPROM. В последнюю записываются регистры конфигурации и регистры TH, TL, которые могут использоваться как регистры общего назначения, если не используются для указания диапазона допустимых значений температуры.

Основной задачей DS18B20 является определение температуры и преобразование полученного результата в цифровой вид. Мы можем самостоятельно задать необходимое разрешение, установив количество бит точности – 9, 10, 11 и 12. В этих случаях разрешающие способности будут соответственно равны 0,5С, 0,25С, 0,125С и 0,0625С.

Во время включения питания датчик находится в состоянии покоя. Для начала измерения контроллер Ардуино выполняет команду «преобразование температуры». Полученный результат сохранится в 2 байтах регистра температуры, после чего датчик вернется в первоначальное состояние покоя. Если схема подключена в режиме внешнего питания, микроконтроллер регулирует состояние конвертации. Во время выполнения команды линия находится в низком состоянии, после окончания программы линия переходит в высокое состояние. Такой метод не допустим при питании от паразитной емкости, так как на шине постоянно должен сохраняться высокий уровень сигнала.

Полученные температурные измерения сохраняются в SRAM датчика. 1 и 2 байты сохраняют полученное значение температуры, 3 и 4 сохраняют пределы измерения, 5 и 6 зарезервированы, 7 и 8 используются для высокоточного определения температуры, последний 9 байт хранит устойчивый к помехам CRC код.

Подключение DS18B20 к Arduino

DS18B20 является цифровым датчиком. Цифровые датчики передают значение измеряемой температуры в виде определенного двоичного кода, который поступает на цифровые или аналоговые пины ардуино и затем декодируется. Коды могут быть самыми разными, ds18b20 работает по протоколу данных 1-Wire. Мы не будем вдаваться в подробности этого цифрового протокола, укажем лишь необходимый минимум для понимания принципов взаимодействия.

Обмен информацией в 1-Wire происходит благодаря следующим операциям:

  • Инициализация – определение последовательности сигналов, с которых начинается измерение и другие операции. Ведущее устройство подает импульс сброса, после этого датчик должен подать импульс присутствия, сообщающий о готовности к выполнению операции.
  • Запись данных – происходит передача байта данных в датчик.
  • Чтение данных – происходит прием байта из датчика.

Для работы с датчиком нам понадобится программное обеспечение:

  • Arduino IDE;
  • Библиотека OneWire, если используется несколько датчиков на шине, можно использовать библиотеку DallasTemperature. Она будет работать поверх OneWire.

Из оборудования понадобятся:

  • Один или несколько датчиков DS18B20;
  • Микроконтроллер Ардуино;
  • Коннекторы;
  • Резистор на 4,7 кОм (в случае подключения одного датчика пойдет резистор номиналом от 4 до 10K);
  • Монтажная плата;
  • USB-кабель для подключения к компьютеру.

К плате Ардуино UNO датчик подключается просто: GND с термодатчика присоединяется к GND Ардуино, Vdd подключается к 5V, Data – к любому цифровому пину.

Простейшая схема подключения цифрового датчика DS18B20 представлена на рисунке.

В режиме паразитного питания контакт Vdd с датчика подключается к GND на Ардуино – в этом случае пригодятся только два провода. Работу в паразитном режиме лучше не использовать без необходимости, так как могут ухудшиться быстродействие и стабильность.

Скетч для DS18B20

Алгоритм получения информации о температуре в скетче состоит из следующих этапов:

  • Определение адреса датчика, проверка его подключения.
  • На датчик подается команда с требованием прочитать температуру и выложить измеренное значение в регистр. Процедура происходит дольше остальных, на нее необходимо примерно 750 мс.
  • Подается команда на чтение информации из регистра и отправка полученного значения в «монитор порта»,
  • Если требуется, то производится конвертация в градусы Цельсия/Фаренгейта.

Пример простого скетча для DS18B20

Самый простой скетч для работы с цифровым датчиком выглядит следующим образом. (в скетче мы используем библиотеку OneWire, о которой поговорим подробнее чуть позже).

Читайте также:  Цветок сальвия посадка и уход

Скетч для работы с датчиком ds18b20 без delay

Можно немного усложнить программу для ds18b20, чтобы избавиться от функции delay(), тормозящей выполнение скетча.

Библиотека DallasTemperature и DS18b20

В своих скетчах мы можем использовать библиотеку DallasTemperature, упрощающую некоторые аспекты работы с датчиком ds18b20 по 1-Wire. Пример скетча:

Библиотека OneWire для работы с DS18B20

DS18B20 использует для обмена информацией с ардуино протокол 1-Wire, для которого уже написана отличная библиотека. Можно и нужно использовать ее, чтобы не реализовывать все функции вручную. Скачать OneWire можно здесь. Для установки библиотеки скачайте архив, распакуйте в папку library вашего каталога Arduino. Подключается библиотека с помощью команды #include

Основные команды библиотеки OneWire:

  • search(addressArray) – ищет температурный датчик, при нахождении в массив addressArray записывается его код, в ином случае – false.
  • reset_search() – производится поиск на первом приборе.
  • reset() – выполнение сброса шины перед тем, как связаться с устройством.
  • select(addressArray) – выбирается устройство после операции сброса, записывается его ROM код.
  • write(byte) – производится запись байта информации на устройство.
  • write(byte, 1) – аналогично write(byte), но в режиме паразитного питания.
  • read() – чтение байта информации с устройства.
  • crc8(dataArray, length) – вычисление CRC кода. dataArray – выбранный массив, length – длина кода.

Важно правильно настроить режим питания в скетче. Для паразитного питания в строке 65 нужно записать ds.write(0x44, 1);. Для внешнего питания в строке 65 должно быть записано ds.write(0x44).

Write позволяет передать команду на термодатчик. Основные команды, подаваемые в виде битов:

  • 0x44 – измерить температуру, записать полученное значение в SRAM.
  • 0x4E – запись 3 байта в третий, четвертый и пятый байты SRAM.
  • 0xBE – последовательное считывание 9 байт SRAM.
  • 0х48 – копирование третьего и четвертого байтов SRAM в EEPROM.
  • 0xB8 – копирование информации из EEPROM в третий и четвертый байты SRAM.
  • 0xB4 – возвращает тип питания (0 – паразитное, 1 – внешнее).

Подключение нескольких датчиков температуры DS18B20 к Ардуино

Все датчики DS18B20 подключаются параллельно, для них всех достаточно одного резистора. При помощи библиотеки OneWire можно одновременно считать все данные со всех датчиков. Если количество подключаемых датчиков более 10, нужно подобрать резистор с сопротивлением не более 1,6 кОм. Также для более точного измерения температуры нужно поставить дополнительный резистор на 100…120 Ом между выходом data на плате Ардуино и data на каждом датчике. Узнать, с какого датчика получено то или иное значение, можно с помощью уникального серийного 64-битного кода, который будет выдан в результате выполнения программы.

Для подключения температурных датчиков в нормальном режиме нужно использовать схему, представленную на рисунке.

В режиме паразитного питания схема выглядит иначе. Контакт Vdd практически не задействован, питание идет через выход data.

Выводы

Микросхема Dallas DS18B20 является очень интересным устройством. Датчики температуры и термометры, созданные на ее основе, обладают приемлемыми для большинства задач характеристиками, развитым функционалом, относительно не дороги. Особенную популярность датчик DS18B20 снискал как влагозащищенное устройство для измерения температуры жидкостей.

За дополнительные возможности приходится платить относительной сложностью работы с датчиком. Для подключения DS18B20 нам обязательно понадобится резистор с номиналом около 5К. Для работы с датчиком в скетчах ардуино нужно установить дополнительную библиотеку и получить определенные навыки для работы с ней – там все не совсем тривиально. Впрочем, можно купить уже готовый модуль, а для скетча в большинстве случаев хватит простых примеров, приведенных в этой статье.

Товары

Обзор цифровой датчик температуры DS18B20

DS18B20 – это полноценный цифровой термометр, способный измерять температуру в диапазоне от -55 о С до +125 о С с программируемой точностью 9-12 бит. При изготовлении на производстве, каждому датчику присваивается свой уникальной 64-битный адрес, а обмен информацией с ведущим устройством (микроконтроллером или платой Arduino) осуществляется по шине 1-wire. Такой подход позволяет подключать к одной линии целую группу датчиков, вплоть до 2 64 .

Технически, датчики DS18B20 выпускаются в 3-х корпусах: ТО-92, SO, uSOP. Внешний вид и распиновка корпусов показаны на рисунке №1.

Рисунок №1 – виды корпусов и распиновка DS18B20

Для того, чтобы понять принципы общения с датчиком, необходимо ознакомиться с его внутренней составляющей. Эта на вид маленькая микросхема содержит в себе целый ряд электронных блоков и модулей. На рисунке №2 показана структурная схема датчика DS18B20.

Рисунок №2 – структурная схема DS18B20

Первое на что хотелось бы обратить внимание – это способ питания микросхемы. Их всего два: режим прямого питания (напряжение подаётся на выводы Vdd и GND) и режим паразитного питания (датчик запитывается от линии данных). Более подробно эти режимы будут рассмотрены ниже в статье.

Из структурной схемы видно, что за прямое питание отвечает блок (POWER SUPPLY SENSE), а режим паразитного питания обеспечивает блок (PARASIT POWER CIRCUIT) в составе которого основную роль играет конденсатор Срр, как питающий буфер.

Далее следует модуль “64-BIT ROM AND 1-WIRE PORT”. В нём содержится информация об уникальном адресе каждого устройства. Как было сказано выше данный код записывается заводом-изготовителем во внутреннюю энергонезависимую память датчика (EEPROM) и никогда не повторяется. Здесь же размещена и подсистема взаимодействия с 1-Wire интерфейсом.

Блок “MEMORY CONTROL LOGIC” осуществляет взаимосвязь между командами интерфейса 1-Wire и внутренней памятью датчика SCRATCHPAD. Данная память, в свою очередь, взаимодействует с несколькими специализированными регистрами DS18B20, а именно:

TEMPERATURE SENSOR. Позволяет считывать преобразованное значение температуры.

ALARM HIGH TRIGGER и ALARM LOW TRIGGER. Эти регистры позволяют выставить верхний и нижний порог срабатывания сигналов тревоги при выходе температуры за указанные пределы.

CONFIGURATON REGISTER. Данный регистр предназначен для настройки разрешающей способности температурного датчика. Регистр может быть сконфигурирован на выполнение преобразования температуры с точностью 9 бит, 10 бит, 11 бит или 12 бит, что соответствует точности измерения 0.5 о С, 0.25 о С, 0.125 о С и 0.0625 о С.

8-BIT CRC GENERATOR. Данный регистр предназначен для генерации контрольной суммы с целью повышения защиты данных.

Технические характеристики DS18B20

После поверхностного знакомства с температурным датчиком DS18B20 можно приступать к его поэтапному освоению. Для начала будет нелишним свести в единый список все технические характеристики данного прибора.

Напряжение питания: 3V-5.5V;

Протокол обмена данными: 1-Wire;

Способ подключения: прямой / по одной линии с паразитным питанием;

Разрешение преобразования температуры: 9 бит – 12 бит;

Диапазон измерения температуры: от -55 до +125 о С;

Читайте также:  Защитная сетка для огорода

Период измерения температуры при максимальной точности 12 бит: 750 мС;

Тип индексации на линии 1-Wire: уникальный 64-битный адрес;

Есть возможность программирования диапазона тревожного сигнала.

Подключение к плате Arduino

Как упоминалось выше, температурный датчик DS18B20 может быть подключен к плате Arduino двумя способами (прямым и с паразитным питанием). Кроме того, на один вход Arduino можно повесить как один, так и целую группу датчиков. Для начала рассмотрим самый простой вариант. На рисунке ниже показана схема прямого подключения одиночного датчика к Arduino Nano.

Рисунок №3 – схема прямого подключения одиночного датчика

Здесь всё довольно просто. Запитываем DS18B20 от самой платы Arduino, подавая 5V на вывод Vdd датчика. Аналогичным образом соединяем между собой выводы GND. Средний вывод термодатчика подключим, например, к выводу D2 нашей Arduino Nano. Подключать вывод данных (DQ) можно практически на любой вход Arduino, предварительно прописав его номер в скетче. Единственный и самый важный момент, на который следует обратить внимание – это наличие резистора номиналом 4,7k между плюсом питания и линией данных термодатчика. Этот резистор служит для подтяжки линии данных к логической единице и его отсутствие вызовет сбой в работе алгоритма обмена информацией. Значение 4,7k не сильно критично и в некоторых пределах его можно изменять, главное не увлекаться.

С прямым подключением одного датчика всё понятно, теперь рассмотрим прямое подключение группы датчиков к одному выводу Arduino. На рисунке №4 показан пример подключения 5-ти датчиков DS18B20. Это количество может быть любым и ограничивается только рамками временем на опрос каждого из них (750мС).

Рисунок №4 – подключение группы датчиков DS18B20

Как видно из вышеприведенного рисунка, абсолютно все датчики на шине подключены параллельно и на всю группу идёт один подтягивающий резистор. Хоть изменения в схеме логичны и минимальны, но работа с несколькими термодатчиками немного сложнее в плане составления программы. В этом случае необходимо обращаться к каждому в отдельности, используя уникальные адреса. Вопрос программирования каждого из режимов будет рассмотрен позже.

Режим паразитного питания отличается от прямого тем, что датчики получают энергию непосредственно с линии данных, без использования прямых 5V. При этом выводы Vdd и GNG каждого термодатчика соединяются между собой. Более наглядно этот процесс отражён на рисунке №5.

Рисунок №5 – подключение одиночного датчика и группы датчиков в режиме паразитного питания от линии данных.

Как и в предыдущих схемах, здесь присутствует резистор 4,7k, который в данном случае играет двойную роль, а именно: подтяжка линии данных к логической «1» и питание самого датчика. Возможность такого включения обеспечивает встроенная в DS18B20 специальная схема и буферный конденсатор Срр (рисунок №2). Иногда это позволяет сэкономить 1 провод в общем шлейфе подключения группы термодатчиков, что в некоторых проектах играет существенную роль.

После рассмотрения схем включения, самое время перейти к программированию и здесь можно пойти тремя путями:

Использовать готовые, проверенные библиотеки для работы с DS18B20;

Общаться с датчиком напрямую через перечень установленных команд;

Написать свою низкоуровневую библиотеку, включая функции передачи битов данных по тайм-слотам, приведённым в технической документации.

Третий вариант наиболее сложен и требует изучения большого объёма информации. В рамках этой статьи будут рассмотрены первых два варианта.

Работа с готовыми библиотеками

Итак, для работы с датчиками температуры DS18B20 в сети можно найти огромное множество библиотек, но как правило, применяют две самые популярные. Это библиотека OneWire.h и библиотека DallasTemperature.h . Причём вторая библиотека является более удобной надстройкой над первой и без неё использоваться не может. Другими словами, перед подключением библиотеки DallasTemperature.h, необходимо также подключить OneWire.h. Как устанавливать те или иные библиотеки в среде Arduino IDE можно узнать на официальном сайте сообщества .

Библиотека OneWire.h

Рассмотрим для начала работу с библиотекой OneWire.h. Ниже приведён перечень её функций с кратким описанием.

  • OneWire temperatureSensor ( uint8_t pinNumber)

Данная функция является конструктором класса OneWire и создаёт объект temperatureSensor, т.е. открывает канал связи с датчиком или групой датчиков на выводе pinNumber. В наших примерах (рисунки 3-5) это вывод “D2” Arduino Nano. Именно к нему мы подключали шину данных DQ DS18B20.

Функция ищет очередное устройство на шине 1-Wire и при его обнаружении заносит значение адреса в массив addrArray, возвращая при этом true. Так как уникальный адрес каждого датчика составляет 64-бит, то массив addrArray должен иметь размерность 8 байт. В случае неудачного поиска, функция возвращает false. Следует отметить, что при подключении нескольких термодатчиков к одной шине, каждый вызов функции search будет адресован к следующему датчику, затем следующему и т.д., пока не будут перебраны все устройства на шине. Особенность данной функции – запоминать уже обработанные адреса. Для сброса очереди необходимо вызвать функцию reset_search(), речь о которой пойдёт ниже.

Как говорилось выше, данная функция сбрасывает очередь опроса устройств на шине 1-Wire в самое начало. Её всегда необходимо использовать в паре с функцией search, когда последняя возвращает значение false. Например для нашего случая с 5-ю датчиками на шине, вызвав функцию search 5 раз, мы можем получить 5 адресов. На шестой раз функция search вернёт нам false и будет делать это при каждом следующем опросе до момента сброса очереди. На это следует обращать внимание, чтобы избежать непонятных ситуаций.

Функция сброса шины 1-Wire инициализирует процесс обмена данными. Она вызывается каждый раз, когда мы хотим общаться с датчиком температуры. В качестве возвращаемых значений могут быть true или false. Значение true мы получим, если хотя-бы один датчик на шине ответит на сброс импульсом присутствия. В противном случае получим false;

Функция позволяет выбрать конкретное устройство, с которым в данный момент мы хотим работать. Выбор происходит путём явного указания 64-битного адреса, занесённого в массив addrArray. Адрес можно задать явно, прописав в массиве или использовать ранее считанный функцией search. Следует отметить, что перед вызовом функции select следует вызвать функцию reset. При очередном сбросе, связь с выбранным датчиком разрывается до следующего вызова select.

Функция актуальна только при работе с одним датчиком на шине и просто пропускает выбор устройства. Другими словами можно не использовать поиск функцией search, и следовательно быстро получить доступ с своему единственному датчику.

Функция посылает байт данных byte выбранному устройству на шине. Аргумент powerType указывает тип питания датчиков (0 – датчики питаются напрямую от внешнего источника; 1 – используется подключение с паразитным питанием). Второй параметр можно не указывать, если используется внешнее питание, так как он по умолчанию равен 0.

Читайте также:  Направляющая для ручной циркулярной пилы своими руками

Данная функция считывает один байт данных, посланный ведомым устройством (датчиком) на шину 1-Wire.


  • static uint8_tcrc8( const uint8_t * addr, uint8_t len);

Функция предназначена для вычисления контрольной суммы. Предназначена для проверки правильного обмена данными с датчиком температуры. Здесь аргумент addr является указателем на масив данных, а len определяет число байтов.

Мы рассмотрели каждую функцию библиотеки OneWire.h в отдельности и чтобы закрепить метериал, ниже я приведу скетч для считывания температуры с группы термодатчиков DS18B20, которые будут подключены к выводу D2 с использованием схемы паразитного питания. В скетче будут подробные комментарии по всем необходимым моментам.

Если всё сделано правильно, то в окне монитора порта мы должны будем увидеть примерно следующее (рисунок №6):

Рисунок №6 – результат работы с библиотекой OneWire.h

Библиотека DallasTemperature.h

Данная библиотека основана на предыдущей и немного упрощает процесс программирования за счёт более понятных для восприятия функций. После установки, вы получите доступ к 14 примерам хорошо документированного кода на все случаи жизни. В рамках этой статьи будет рассмотрен пример работы одним датчиком.

Результат работы программы показан на рисунке №7

Рисунок №7 – результат чтения температуры при помощи библиотеки DallasTemperature.h

Где можно использовать

На первый взгляд может показаться, что код для работы с датчиками DS18B20 слишком сложен для понимания, но это только поначалу. С ростом вашего опыта будет расти и сложность проектов, в которых эти датчики используются. Высокая точность измерения и надёжность позволяют применять их в таких проектах, как инкубаторы, климат-контроллеры теплиц, аквариумов, различных бытовых помещений и многое другое, на что способна ваша фантазия.

FAQ. Часто задаваемые вопросы

1. Обязательно ли применять резистор 4,7кОм в схеме подключения датчика? Насколько критично его сопротивление?

  • Необходимость применения подтягивающего резистора обусловлена особенностями протокола 1-Wire. Номинал резистора можно менять в разумных пределах +/- 2 кОм.

2. Как применять подобные датчики для измерения температур в жидкой или агрессивной среде?

  • Существуют в продаже варианты с герметичным корпусом из нержавеющей стали. Главное, чтобы температура среды не выходила за пределы измерения самого датчика.

3. Какой может быть максимальная длина шлейфа для шины данных.

  • В случае применения качественного экранированного кабеля, длина шлейфа может быть до 300м. Для освоения более дальнего расстояния существуют специальные 1-wire повторители.

4. Датчик постоянно или периодически выдаёт температуру 85 о С

Здесь может быть несколько вариантов. Температура 85 о С установлена у DS18B20 по умолчанию. Следовательно любой сбой по питанию, некачественный кабель, значительное удаление от контроллера или выход из строя самого датчика возвратят указанное значение температуры.

5. Возможно ли подключение нескольких датчиков на разные выводы Arduino?

  • Да, возможно. В этом случае для каждой шины данных создаётся свой экземпляр класса библиотеки OneWire или DallasTemperature.

6. Где найти коды команд для работы с DS18B20 и из значение?

  • Для DS18B20 предусмотрено 6 функциональных команд, а именно:

0x44 – команда инициализирует измерение температуры.

0хВЕ – команда на считывание всей оперативной памяти, включая код CRC.

0х4Е – команда записи в оперативную память (байты №2, 3, 4, TH, TL и регистр конфигурации)

0х48 – команда копирования памяти TH, TL, и регистра конфигурации в EEPROM датчика

0хВ8 – команда перегружает TH, TL, и регистр конфигурации из EEPROM в оперативную память.

0хВ4 – команда для определения режима питания термодатчика

Один раз мы уже реализовали проект термометра на основе датчика температуры DS18B20. Сегодня мы сделаем термометр на основе этого датчика другим способом, разберемся с DS18B20 и используем несколько дополнительных библиотек.

Мы сделаем LCD-термометр или, как вариант, Serial-термометр (напечатает данные о температуре на последовательном мониторе Arduino IDE) на основе микроконтроллера Ардуино и цифрового датчика DS18B20, макетов, перемычек. Таким образом, вы сможете измерять температуру воздуха, жидкости, например, воды и температуру земли.

Информация о сенсоре DS18B20

DS18B20 – это цифровой температурный датчик с интерфейсом 1-Wire от Maxim IC. На выходе мы получаем информацию в Цельсиях с точностью от 9 до 12 бит, от -55 до 125 (+/- 0,5). Каждый датчик имеет уникальный 64-разрядный серийный номер, что позволяет использовать огромное количество датчиков на одной шине данных.

Особенности:

  • Для уникального интерфейса 1-Wire® требуется только один порт для связи.
  • Каждое устройство имеет уникальный 64-битный последовательный код, хранящийся в ПЗУ.
  • Многоточечная возможность упрощает использование распределенных температурных зондов.
  • Не требует внешних компонентов.
  • Может питаться от линии передачи данных.
  • Диапазон мощности от 3,0 до 5,5 В.
  • Измеряет температуру от -55°C до + 125°C (от -67 °F до + 257 °F) ± 0,5°C от -10°C до + 85°C.
  • Разрешение термометра выбирается пользователем от 9 до 12 бит.
  • Преобразует температуру в 12-битное цифровую переменную в 750 мс (макс.).
  • Определяемые пользователем энергонезависимые (NV) настройки сигнализации.
  • Команда поиска по тревоге идентифицирует и адресует устройства, температура которых находится за пределами запрограммированных пределов (состояние аварийной сигнализации).
  • Применяется в термостатических устройствах, промышленных системах, потребительских товарах, термометрах или в любых термических чувствительных системах.

Комплектующие

Чтобы сделать термометр, вам понадобятся следующие детали:

  • Плата Arduino (UNO, DUE, Micro и т.п.);
  • Датчик DS18B20 (водонепроницаемый или нет);
  • Резистор 4.7К (в некоторых магазинах продается датчик с резистором 4,7 тыс.);
  • ЖК-дисплей 16×2 с шиной I2C;
  • Макет;
  • Перемычки.

Из программного обеспечения нужно иметь установленную Arduino IDE.

Библиотеки

Прежде чем вы начнете делать термометр, загрузите и распакуйте следующие библиотеки для Arduino в:

/Progam Files (x86)/Arduino/Libraries (по умолчанию):

  • 1- Wire шина;
  • Dallas Temperature (делает все вычисления и другие вещи);
  • Liquid Crystal I2C.

Все библиотеки вы можете скачать по ссылкам выше или на нашем сайте в разделе Библиотеки.

Термометр через последовательный монитор

Чтобы отобразить данные на последовательном мониторе, подключите датчик DS18B20 к Arduino, используя перемычки и макет, и не забудьте подключить или припаять резистор 4.7k между контактом 2 и 3 датчика.

Затем скачайте, откройте и загрузите файл .ino, который называется – DS18B20_Serial, ниже.

Если все в порядке, вы должны увидеть измеренную температуру на серийном мониторе Arduino IDE.

Термометр с ЖК-дисплеем

Если вы не хотите измерять температуру через последовательный монитор, то этот шаг для вас.

Подключите ЖК-дисплей I2C к контактам UNO:

Затем скачайте и загрузите файл .ino, который называется – DS18B20_I2C_LCD. Если все в порядке, вы увидите показания температуры на дисплее.

Ссылка на основную публикацию
Adblock detector