Одним из универсальных аппаратов управления по праву считается микроконтроллер. В отличие от своих аналоговых собратьев он способен не только действовать по строгим рамкам нескольких, железно заложенных конструкцией операций, но и изменять последовательности контролирующих импульсов в соответствии с внешними факторами. Конечно, в пределах установленной человеком программы.
Информация о событиях, происходящих вне блока управления, поступает к нему от подключенных датчиков. Последние, в зависимости от своей направленности, «чувствуют» изменения света во всех его проявлениях, возникновение и силу звука, состав атмосферы, вибрацию, давление или температуру.
Все перечисленное в комплексе, позволяет создавать на основе микроконтроллера сложные конечные автоматы, обслуживающие рутинные операции, связанные со всеми нишами жизни. Хорошим примером станут известные всем кондиционеры. Они не только включаются по времени или командам с пульта, но и контролируют при помощи термометра нагрев окружающего воздуха. При чрезмерном охлаждении включается повышение его температуры, при избытке тепла — вентиляция. Нормы, к которым приводится окружающая среда в автоматическом режиме, задаются человеком и могут в любое время изменены согласно его желаниям. Всю названую функциональность обеспечивает микроконтроллер.
Настоящее устройство выполняется не только в виде впаянных «намертво» компонентов конечных агрегатов, но и отдельными платами, доступными к приобретению разработчикам. Самыми распространенными моделями среди них можно назвать STM32, Raspberry PI и Arduino. Последние из списка, по комплексу своих характеристик, наиболее подходят для легкого создания самодельных и достаточно сложных систем логического контроля. Достигается это за счет широкой базы датчиков и релейных контуров доступных на рынке, изначально ориентированных на совместное использование с Ардуино.
В разрезе темы статьи, будет рассмотрен вопрос о работе сенсора DS18B20 Arduino, его отличие от иных, а также соединение сенсора с микроконтроллером, с получением измеренной уже температуры.
Датчик температуры подключаемый к Arduino, как и в случае любого другого микроконтроллера, существует в двух видах: цифровой и аналоговый. Разница между настоящими термометрами в виде передаваемой на управляющую плату информации. Для первых характерна выдача уже готовых цифровых последовательностей, с которыми контроллер может работать непосредственно. Вторые только изменяют физическую характеристику идущего через них тока в зависимости от внешнего воздействия. То есть, Arduino, еще должен и преобразовать получаемый результат к цифровому виду, «зная» тип самого устройства и таблицу соответствия приходящего сигнала реальным значениям.
В последнем случае падает конечная точность измерений, так как сам микроконтроллер, о котором идет речь, может определять лишь изменения с градацией в 1024 уровня. Кроме того, для каждого чувствительного аналогового устройства требуется свой отдельный входящий канал. Единственное, что нивелирует минусы аналоговых сенсоров — их низкая цена и простота конструкции, которая обеспечивает достаточную длительность бесперебойной работы. Наибольшее распространение среди таких детекторов тепла получили модели на основе чипсета LM35 — TMP35, TMP37, LM335. Существует и широкий спектр аналогичных решений от иных производителей.
Другое дело — цифровые датчики. Никаких сторонних вычислений микроконтроллеру проводить для такого термометра не нужно. Достаточно получить итоговую цифровую последовательность с контакта всех сенсоров, расположенных на единой линии. Каждый из которых подключается к ней параллельно. Их максимальное количество ограничено лишь физическими возможностями дальности хода сигнала между микроконтроллером и чувствительным элементом.
Шина передачи в названом случае называется 1-Wire. В ней, для определения конечного отправителя показаний, используется уникальный идентификационный код «зашитый» в сам конечный датчик, что помогает избежать путаницы с изначальным адресантом. Хорошим примером цифровых детекторов такого типа служит DS18B20 Arduino и его варианты разных производителей — DS18S20, DS1820, DS1822, MAX31820. Все они основаны на логике DS18.
Есть у цифровых датчиков и недостаток. Они сильно подвержены влиянию импульсных электрических помех от стороннего оборудования или самой линии питания. Чувствительна аппаратура и к сильным магнитным полям. В достаточно простых и не критичных системах, фактором можно пренебречь, но в важных контролирующих комплексах он требует обращения на себя особого внимания.
Вне зависимости от разновидности датчиков Ардуино, они поставляются в открытом, более удобном к монтажу исполнении, или закрытом, защищенном корпусе, препятствующем попаданию влаги. Последний фактор позволяет использовать термометры на основе DS1820 или LM35 в весьма агрессивной для электроники среде — насыщенном водой пространстве. Речь идет не только о допустимости прямого погружения их в жидкость, но и об функционировании в воздухе, насыщенном ее парами.
Сферы, в которых требуется измерение температуры датчиком не счесть. Как и список всей аппаратуры, работа которой непосредственно зависит от значения характеристики. Сюда можно отнести упомянутые ранее кондиционеры, холодильники, печи всех видов, любые иные агрегаты от которых требуется контроль нагрева либо охлаждения. Можно вспомнить даже обычный аквариум.
Его жители достаточно критически относятся к температуре окружающей среды. Если она слишком горячая или холодная — водные обитатели погибнут. В теплой они жизнерадостны, активны и развиваются. Здесь, как раз поможет электронный термометр, объединенный с микроконтроллером Ардуино. Последний, в зависимости от показаний первого, будет включать обогрев водной массы или пытаться предотвратить превышение установленных температурных лимитов.
К нише использования датчиков, определяющих нагрев либо охлаждение среды можно отнести и чисто информационные системы. Здесь сразу вспоминается медицинский или бытовой термометр. Применение привычных их вариантов исполнения бывает в некоторых случаях неудобным, как по скорости получения значений температуры, так и по периоду ее измерения.
Цифровой датчик Ардуино DS18B20 поставляется в одном из следующих видов исполнения:
Марка | Корпус | Кол-во контактов |
---|---|---|
DS18B20+ | TO-92 | 3 |
DS18B20Z+ | SO | 8 |
DS18B20U+ | μSOP | 8 |
Вне зависимости от конечного количества исходящих контактов, рабочие из них только три: два питания GND и VCC +5В и один данных шины 1-Wire, обозначаемый на схемах через DQ. Корпус ТО-92 выполняется производителями как в открытом виде, так и защищенном от воздействия влаги. В последнем случае исходящие линии кабеля разделяют по следующей цветовой маркировке:
Цвет | Контакт |
---|---|
Черный | GND |
Красный | VDD |
Белый | DQ |
Класс устройств DS18 подразумевает бытовое, а не экстремальное использование. Соответственны и возможности сенсора:
Датчик DS1820 подключается к Arduino одним из двух способов: нормальным или паразитным. Разница в количестве используемых контактов. Первый требует три, с полным отдельным питанием, для второго достаточно пары. В последнем случае применение нескольких температурных сенсоров на одной линии не рекомендуется, так как кодовые сигналы, поступающие от одного, могут внести искажения в работу других.
Подключение DS18B20 к Arduino обоими методами требует использования сопротивления 4.7 кОм в целях подтягивания сигнала к шине данных:
Так как Ардуино с сенсором нагрева работает по цифровой шине передачи информации 1-Wire, нужно включить в текст скетча библиотеку обслуживающую настоящий протокол. Скачать ее последнюю версию можно на GitHub по адресу:
https://github.com/PaulStoffregen/OneWire
Скетч, использующий только настоящую библиотеку:
https://cloud.mail.ru/public/Fifd/twtiPmtka
Все приведенное можно упростить, вызывая функции библиотеки DallasTemperature, которая находится аналогично первой на GitHub. Ее адрес:
https://github.com/milesburton/Arduino-Temperature-Control-Library
Перед тем, как писать скетч, использующий возможности OneWire в связке с DallasTemperature, требуется определить адреса всех конечных устройств единой шины. Для этого в составе библиотечного кода есть пример Multipe, который при своем выполнении выводит уникальные идентификационные коды всех сенсоров температуры DS18 расположенных на шине. Используя полученные данные, и подключив настоящую библиотеку, не трудно получать их показания уже для своего кода:
https://cloud.mail.ru/public/ucnZ/4WJByWExo
Определяющие нагрев сенсоры, в совокупности с Ардуино, вне зависимости от их типа — цифровых класса DS18 или использующих аналоговый сигнал, на основе чипа LM35, дают широкий спектр возможностей конечному пользователю. Достаточная точность, вкупе с низким энергопотреблением позволяют применять аналогичные сенсоры во множестве сфер, от быта до производства.
Самые часто используемые ниши — создание прототипов холодильников, контроллеров температуры воды в ванных, бойлерах и чайниках, или в качестве элементов климатического оборудования. Применяется термометр вместе с микроконтроллером и в сельском хозяйстве. Централизованное определение температур в закутах, амбарах или стойлах, выяснение текущего нагрева яиц в инкубаторах — все названое по силам настоящей связке датчиков с управляющими устройствами.