датчик температуры ардуино код
Датчики температуры Arduino
В этой статье мы рассмотрим популярные датчики температуры для Arduino ds18b20, dht11, dht22, lm35, tmp36. Как правило, именно эти датчики становятся основой для инженерных проектов начального уровня для Arduino. Мы рассмотрим также основные способы измерения температуры, классификацию датчиков температуры и приведем сравнение различных датчиков в одной таблице.
Описание датчиков температуры
Температурные датчики предназначены для измерения температуры объекта или вещества с помощью свойств и характеристик измеряемой среды. Все датчики работают по-разному. По принципу измерения эти устройства можно разделить на несколько групп:
По области применения можно выделить датчики температуры воздуха, жидкости и другие. Они могут быть как наружные, так и внутренние.
Любой температурный датчик можно описать набором характеристик и параметров, которые позволяют сравнивать их между собой и выбирать подходящий под конкретную задачу вариант. Основными характеристиками являются:
Датчики температуры по типу
Выбор датчика в первую очередь определяется температурным диапазоном измерения. Важно учитывать и точность измерения – для обучения вполне сойдет датчик с малой точностью, а для научных работ и опытов требуется высокая надежность измерения.
Датчики температуры для работы с Ардуино
При работе с микроконтроллером Ардуино наиболее часто используются следующие датчики температуры: DS18B20, DHT11, DHT22, LM35, TMP36.
Датчик температуры DS18B20
DS18B20 – цифровой 12-разрядный температурный датчик. Устройство доступно в 3 вариантах корпусов – 8-Pin SO (150 mils), 8-Pin µSOP, и 3-Pin TO-92, чаще всего используется именно последний. Он же изготавливается во влагозащитном корпусе с тремя выходами. Датчик прост и удобен в использовании, к плате Ардуино можно подключать сразу несколько таких приборов. А так как каждое устройство обладает своим уникальным серийным номером, они не перепутаются в результате измерения. Важной особенностью датчика является возможность сохранять данные при выключении прибора. Также DS18B20 может работать в режиме паразитного питания, то есть без внешнего питания через подтягивающий резистор. Подробная статья о ds18b20.
Датчики температуры DHT
Датчик температуры LM35
Схема подключения к микроконтроллеру Ардуино достаточно проста. Желательно датчик прижимать к контролируемой поверхности, чтобы увеличить точность измерения.
TMP36 – аналоговый термодатчик
В предыдущем уроке мы рассмотрели подключения датчика температуры и влажности DHT11 к Arduino. И выяснили что данный датчик не очень точный. Чем же его можно заменить? Одним из распространенных датчиков для измерения температуры являться DS18B20. Рассмотрим в данном уроке варианты подключения датчика, пару примеров программного решения.
Характеристики датчика DS18B20:
Датчик выпускается в открытом корпусе в виде транзистора для измерения температуры воздуха.
Можно купить датчик в виде модуля DS18B20. Распаренный на плате.
Также датчик DS18B20 продеться в закрытом корпусе для измерения температуры жидкости.
Для урока нам понадобиться:
Подключаем датчик DS18B20 к Arduino NANO вот по такой схеме.
Подключение датчика DS18B20 к Arduino UNO будет вот таким.
Для написания программы нам понадобиться библиотека OneWire.
Данную библиотеку можно установить из менеджера библиотек или скачать отсюда.
Код ниже будет выводить показание температуры в монитор порта каждую секунду.
Но данный пример достаточно сложный для понимания. Для упрощения работы с датчиком лучше использовать библиотеку DallasTemperature. Данная библиотека ставиться поверх OneWire. Т.е. для ее роботы должна быть установлена библиотека OneWire.
С библиотекой DallasTemperature устанавливаются примеры. Вы можете воспользоваться любым из них.
Мы рассмотрим более простотой пример.
В данном примере температура выводиться 1 раз в секунду. И при этом выводится температура в Цельсиях и фарингитах.
Как видите данный пример намного меньше и более понятен для новичка.
На одну шину можно подключить до 127 датчиков вот по такой схеме.
С библиотекой DallasTemperature идут примеры которые позволяют получать данные с датчиков при током подключении.
Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.
Спасибо за внимание!
Понравилась статья? Поделитесь ею с друзьями:
Измеритель температуры и влажности на контроллере Arduino c отображением значений на LCD дисплее
Недавно я начал изучать программирование микроконтроллера Arduino. После того, как я выполнил несколько базовых упражнений (мигание светодиодом, работа с дискретными и аналоговыми входами, вывод информации на ЖК дисплей и т.д.) мне захотелось сделать какое нибудь полезное устройство для дома.
Я решил сделать измеритель температуры и влажности в комнате, с индикацией параметров на ЖК дисплее. Также я сделал адаптивную подсветку дисплея, которая меняет яркость в зависимости от уровня освещенности в комнате. Это позволяет уменьшить энергопотребление устройства, и тем самым увеличить срок службы батарейки.
В проекте я использовал следующие комплектующие:
1. Плата Arduino Uno
2. Дисплей LCD1602 c модулем поддержки протокола I2C. Для того чтобы уменьшить число проводов и упростить подключение дисплея, я решил подключать его через протокол I2C, для этого я к LCD дисплею припаял специальный модуль преобразователь.
«
3. Датчик температуры и влажности DHT11. Он позволяет определять влажность от 20-80% и температуру от 0-50˚С. Датчик имеет 4 вывода, но используется только 3. Между выводом питания и выводом данных должен быть установлен резистор 10кОм. Я использовал уже готовый датчик, смонтированный на плате, с подключенным резистором, поэтому можно смело подключать его к плате Arduino.
«
4. Фоторезистор. Подключается к плате Arduino с подтяжкой к GND, через резистор 10кОм.
Схема подключения следующая:
Фоторезистор подключается к аналоговому входу А0 платы Arduino. Линия данных датчика DHT11 подключается к дискретному выводу 2, вывод питания подключается к +5В Arduino, соответственно вывод GND подключаем в земле платы Arduino. LCD дисплей подключается к питанию платы, вывод SDA подключается к А4, вывод SCL к А5. Линия управления яркостью подсветки подключается к выводу 9, на котором формируется ШИМ сигнал.
Ниже представлен исходный код:
Скомпилировав данный код, получаем вот такое работающее устройство:
В дальнейшем планирую сделать еще какие-нибудь интересные и более сложные устройства на Arduino.
Также я сделал видеоролик, где показал как работает устройство:
Ардуино термометр на основе датчика температуры DS18B20
Один раз мы уже реализовали проект термометра на основе датчика температуры DS18B20. Сегодня мы сделаем термометр на основе этого датчика другим способом, разберемся с DS18B20 и используем несколько дополнительных библиотек.
Мы сделаем LCD-термометр или, как вариант, Serial-термометр (напечатает данные о температуре на последовательном мониторе Arduino IDE) на основе микроконтроллера Ардуино и цифрового датчика DS18B20, макетов, перемычек. Таким образом, вы сможете измерять температуру воздуха, жидкости, например, воды и температуру земли.
Информация о сенсоре DS18B20
Особенности:
Комплектующие
Чтобы сделать термометр, вам понадобятся следующие детали:
Из программного обеспечения нужно иметь установленную Arduino IDE.
Библиотеки
Прежде чем вы начнете делать термометр, загрузите и распакуйте следующие библиотеки для Arduino в:
/Progam Files (x86)/Arduino/Libraries (по умолчанию):
Все библиотеки вы можете скачать по ссылкам выше или на нашем сайте в разделе Библиотеки.
Термометр через последовательный монитор
Чтобы отобразить данные на последовательном мониторе, подключите датчик DS18B20 к Arduino, используя перемычки и макет, и не забудьте подключить или припаять резистор 4.7k между контактом 2 и 3 датчика.
Если все в порядке, вы должны увидеть измеренную температуру на серийном мониторе Arduino IDE.
Термометр с ЖК-дисплеем
Если вы не хотите измерять температуру через последовательный монитор, то этот шаг для вас.
Подключите ЖК-дисплей I2C к контактам UNO:
Датчик температуры Arduino 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
Память датчика состоит из двух видов: оперативной и энергонезависимой – 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 происходит благодаря следующим операциям:
Для работы с датчиком нам понадобится программное обеспечение:
Из оборудования понадобятся:
К плате Ардуино UNO датчик подключается просто: GND с термодатчика присоединяется к GND Ардуино, Vdd подключается к 5V, Data – к любому цифровому пину.
Простейшая схема подключения цифрового датчика DS18B20 представлена на рисунке.
В режиме паразитного питания контакт Vdd с датчика подключается к GND на Ардуино – в этом случае пригодятся только два провода. Работу в паразитном режиме лучше не использовать без необходимости, так как могут ухудшиться быстродействие и стабильность.
Скетч для DS18B20
Алгоритм получения информации о температуре в скетче состоит из следующих этапов:
Пример простого скетча для DS18B20
Самый простой скетч для работы с цифровым датчиком выглядит следующим образом. (в скетче мы используем библиотеку OneWire, о которой поговорим подробнее чуть позже).
Скетч для работы с датчиком ds18b20 без delay
Можно немного усложнить программу для ds18b20, чтобы избавиться от функции delay(), тормозящей выполнение скетча.
Библиотека DallasTemperature и DS18b20
В своих скетчах мы можем использовать библиотеку DallasTemperature, упрощающую некоторые аспекты работы с датчиком ds18b20 по 1-Wire. Пример скетча:
Библиотека OneWire для работы с DS18B20
DS18B20 использует для обмена информацией с ардуино протокол 1-Wire, для которого уже написана отличная библиотека. Можно и нужно использовать ее, чтобы не реализовывать все функции вручную. Скачать OneWire можно здесь. Для установки библиотеки скачайте архив, распакуйте в папку library вашего каталога Arduino. Подключается библиотека с помощью команды #include
Основные команды библиотеки OneWire:
Важно правильно настроить режим питания в скетче. Для паразитного питания в строке 65 нужно записать ds.write(0x44, 1);. Для внешнего питания в строке 65 должно быть записано ds.write(0x44).
Write позволяет передать команду на термодатчик. Основные команды, подаваемые в виде битов:
Подключение нескольких датчиков температуры DS18B20 к Ардуино
Все датчики DS18B20 подключаются параллельно, для них всех достаточно одного резистора. При помощи библиотеки OneWire можно одновременно считать все данные со всех датчиков. Если количество подключаемых датчиков более 10, нужно подобрать резистор с сопротивлением не более 1,6 кОм. Также для более точного измерения температуры нужно поставить дополнительный резистор на 100…120 Ом между выходом data на плате Ардуино и data на каждом датчике. Узнать, с какого датчика получено то или иное значение, можно с помощью уникального серийного 64-битного кода, который будет выдан в результате выполнения программы.
Для подключения температурных датчиков в нормальном режиме нужно использовать схему, представленную на рисунке.
В режиме паразитного питания схема выглядит иначе. Контакт Vdd практически не задействован, питание идет через выход data.
Выводы
Микросхема Dallas DS18B20 является очень интересным устройством. Датчики температуры и термометры, созданные на ее основе, обладают приемлемыми для большинства задач характеристиками, развитым функционалом, относительно не дороги. Особенную популярность датчик DS18B20 снискал как влагозащищенное устройство для измерения температуры жидкостей.
За дополнительные возможности приходится платить относительной сложностью работы с датчиком. Для подключения DS18B20 нам обязательно понадобится резистор с номиналом около 5К. Для работы с датчиком в скетчах ардуино нужно установить дополнительную библиотеку и получить определенные навыки для работы с ней – там все не совсем тривиально. Впрочем, можно купить уже готовый модуль, а для скетча в большинстве случаев хватит простых примеров, приведенных в этой статье.