Делаем простой термометр на микроконтроллере. Термометр на ATmega8 и датчике температуры DS18B20 Самодельные термометры на микроконтроллерах схема

Answer

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry"s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.

Девайс предназначен для измерения температуры во всем диапазоне датчика DS18B20 (от -55 до +125 градусов), с точностью до 0,1 градуса. Точность 0,1 является весьма условной, т.к. заявленная производителем точность самого датчика DS18B20 - 0,5 градуса. Тем не менее, ко мне очень часто обращались люди с предложением сделать термометр с индикацией до 0,1 градуса, что я и сделал.

Термометр измеряет температуру и индицирует ее на 4-х разрядном светодиодном индикаторе. Разные диапазоны температур индицируются по разному:
-55,0...-10,0 - в формате -ХХ.Х без символа градуса
-9,9...0,1 - в формате -Х.Х и символ градуса
0,0...9,9 - в формате Х.Х и символ градуса
10,0...99,9 - ХХ.Х и символ градуса
100,0...125,0 - ХХХ.Х без символа градуса


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

Термометр собран на 2-х печатных платах. Плата индикатора и плата контроллера. Платы спаиваются между собой под углом 90 градусов, согласно контактных площадок. При монтаже микросхемы 7805 у нее нужно срезать теплоотводящий фланец. Индикатор может быть любым, красным или зеленым. Важно, чтобы он был под динамическую индикацию с общим анодом.

Термометр будет правильно работать только с датчиком DS18B20, датчики DS1820, DS18S20 и т.п. для данного термометра не пригодны! Для питания прибора подойдет любой стабилизированный или не стабилизированный блок питания выдающий постоянное напряжение 7...12 вольт. Например, можно использовать не нужное зарядное устройство для мобильника. Если выходное напряжение блока питания не превышает 8 вольт, то вместо стабилизатор 7805 можно применить и 78L05, но если будет сильный его нагрев, придеться увеличить сопротивления в катодах индикатора до 220 ом.

Или его аналоги. Приборы имеют хорошую точность, помехоустойчивость, и, по сравнению с аналоговыми решениями, значительно упрощают схему. Пределы измеряемых подобными датчиками температур, как правило, ограничены диапазоном от -55 до 125 ºС. Что же делать, если нужно измерить температуру выше 125 °С? Очевидно, нужно использовать аналоговые датчики, температурный диапазон которых может достигать +300 °С. Надо отметить, что в этом случае точность измерений снизится. Но часто при измерении больших температур знать точное значение необязательно, и погрешность в несколько градусов будет приемлемой, а при отображении на аналоговой шкале, например, на линейке светодиодов, и вовсе незаметной.

Для нормальной работы устройства в температуре 0 … 250 °С, был выбран аналоговый датчик , рабочий диапазон которого составляет -40 + 300 °С. Его параметры идеально подходят под выбранный температурный диапазон. За обработку данных отвечает микроконтроллер (МК) . Конечно, годится и любой другой, но автору этот МК представляется одним их самых доступных и популярных. Фьюз биты оставлены заводские. При решении задачи критерии точного измерения были отложены на второй план. Погрешность в пределах нескольких градусов вполне устраивала.

Цифровая индикация результатов измерений

Для цифрового отображения данных используются LCD дисплей. При желании устройство можно модернизировать, доработав код программы. Свободных портов ввода-вывода для этого достаточно. LCD дисплей подключен по 4-битной шине (Рисунок 1). Старшие разряды индикатора D4 - D7 подключены к младшим разрядам D0 - D4 микроконтроллера. Поскольку точных временных привязок в этом устройстве нет, то нет и необходимости во внешнем задающем кварцевом резонаторе. К портам PB6 и PB7 подключены управляющие выводы дисплея. Как можно видеть, все линии управления дисплея выходят с одной стороны корпуса МК, что упрощает трассировку печатной платы.

Вычисление значения температуры

Из Рисунка 1 видно, что аналоговый датчик температуры подключен прямо к входу АЦП микроконтроллера. При использовании операционного усилителя погрешность измерения была бы меньше. Напряжение на АЦП подается через делитель, образованный терморезистором и переменным резистором. Для лучшей точности настройки переменный резистор выбран многооборотным.

Таблица 1. Зависимость сопротивления от температуры.

Температура ºС

Сопротивление Ω

Построив на основании Таблицы 1 график в Mathcad (Рисунок 2), можно увидеть зависимость сопротивления аналогового датчика от приложенной температуры. Исходные данные таблицы взяты из технического описания KTY84_130. Функция имеет практически линейный характер, лишь с небольшим отклонением на высоких температурах.

При измеряемой температуре 0 ºС сопротивление терморезистора составляет 498 Ом. Напряжение на выходе делителя равно

  • U Д - напряжение на датчике температуры относительно земли,
  • U ПИТ - напряжение питания,
  • R Д - сопротивление датчика температуры,
  • R 1 - установленное сопротивление переменного резистора.

При температуре 0 ºС напряжение на входе АЦП должно составлять 0.6 В. Для вычисления значения температуры автор использовал следующую формулу:


  • АЦП - 10 разрядный цифровой код АЦП, снятый с датчика,
  • U ОТС - отсекающее значение (60), равное 0.6 В при 0 ºС.

Диапазону измеряемых температур от 0 ºС до 250 ºС соответствуют поступающие с делителя входные напряжения АЦП от 0.6 до 1.8 В. Опорное напряжение АЦП составляет 5 В, поэтому при указанных значениях цифровой код будет находится в пределах от 123 до 368. Это число помещается в регистр и конвертируется в три разряда ASCII кода. Поскольку датчик KTY84_130 рассчитан на максимальную температуру 300 ºС, лучше оставить небольшой запас и ограничится 250 ºС.

На Рисунке 5 показано устройство, собранное на макетной плате. Код программы открытый, и каждый может с легкостью доработать его под собственные задачи.

Программное обеспечение МК и виртуальная модель Proteus для LCD 16×2 -

Программное обеспечение МК и виртуальная модель Proteus для LCD 8×2 -

Сразу хочется отметить, что печатная плата и конструкция были разработаны с расчетом на то, чтобы сделать компактное устройство, крепящееся на стене.

Управление устройством осуществляется с помощью одной кнопки. Программа для микроконтроллера написана на Си, снабжена комментариями, и пользователи могут модифицировать ее под свои конкретные задачи, или же расширить функционал. Для управления ЖК индикатором используется готовая библиотека Peter Fleury (архив для скачивания доступен в разделе загрузок). Дополнительно, данные могут отображаться в градусах Цельсия или Фаренгейта. Имеется несколько режимов управления подсветкой индикатора.

Также стоит отметить еще один важный момент: устройство может осуществлять беспроводную передачу данных по протоколу Bluetooth посредством специального модуля (опционально).

Принципиальная схема

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

Источник питания термометра выполнен на базе интегрального регулятора напряжения в стандартном включении (с соответствующими фильтрующими конденсаторами). Регулятор напряжения 3.3 В AMS1117 включен в состав схемы, но применяться может в случае использования Bluetooth модуля, т.к. зачастую питание таких модулей 3.3 В.

Индикатор используемый в устройстве - это стандартный двухстрочный индикатор на контроллере HD44780 . Транзистор предназначен для управления подсветкой индикатора логическими сигналами с микроконтроллера или же ШИМ сигналом с микроконтоллера. Резистор R3 ограничивает ток через базу транзистора, резистор R1 подтягивает базу к нулевому потенциалу.

Основа термометра - микроконтроллер , работающий на частоте 8 МГц и управляющий все окружающей периферией.

Датчик DHT-11 - это недорогой датчик температуры и относительной влажности, используемый в проекте в качестве уличного датчика. Он не отличается высоким быстродействием и точностью, однако находит свое применение в радиолюбительских проектах из-за своей невысокой стоимости. DHT-11 состоит из емкостного датчика влажности и термистора. Также, датчик содержит в себе простой АЦП для преобразования аналоговых значений влажности и температуры.

Основные характеристики:

  • низкая стоимость;
  • напряжение питания 3 В - 5 В;
  • предача данных по 1-Wire шине на расстояния до 20 м;
  • определение влажности 20-80% с 5% точностью;
  • максимальный потребляемый ток 2.5 мА;
  • определение температуры 0…50° с точностью 2%;
  • частота опроса не более 1 Гц (не более раза в 1 с);
  • размеры 15.5 × 12 × 5.5 мм;

Следует отметить, что в продаже можно найти датчик DHT-22, который имеет тот же интерфейс, но лучшие характеристики.

Датчик подключается к микроконтроллеру по шине 1-Wire (на схеме кннектор JP3) с использованием подтягивающего резистора по линии данных и блокирующего конденсатора по питанию.

В качестве внутреннего датчика используется широко распространенный аналоговый датчик температуры LM35 IC5, который подключается к каналу 1 АЦП микроконтроллера.

Коннектор J1 интерфейса внутрисхемного программирования микроконтроллера позволяет быстро сменить программный код или обновить ПО. Для подключения термометра по интерфейсу UART используется коннектор JP1. Кнопка управления SW1 подключена ко входу внешнего прерывания микроконтроллера, данный вход подтянут к питанию внутренним резистором порта.

Bluetooth модуль для беспроводной передачи данных, на схеме обозначен как IC3, GP-GC021 также подключается к интерфейсу UART микроконтроллера и позволяет передавать данные на ПК, мобильный телефон или web-сервер. На печатной плате предусмотрено место для установки модуля. В разделе загрузок имеется описание модуля, процесс взаимодействия и команды.

ЖК индикатор устанавливается на лицевую часть печатной платы в коннектор, скрываяя, таким образом, установленные на основной платее компоненты, и мы получаем компактное устройство. Место для установки Bluetooth модуля находится на тыльной стороне печатной платы (см. фото платы).

Внешний вид готовой печатной платы для термометра


Рисунок печатной платы в САПР Eagle

Плата с установленным Bluetooth модулем

Загрузки

Принципиальная схема и печатная плата (Eagle), ПО (исходный код, прошивка) -
Библиотека для работы с ЖК индикатором на контроллере HD44780 -
Техническое описание на Bluetooth модуль GP-GC021 -

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

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

Однако в том случае, если вам хочется сделать что-то стоящее своими руками, то, как первый шаг, такая конструкция себя вполне оправдывает - приобретаемый вами опыт бесценен.

Итак, для начала выберем наипростейшую схему термометра, построенного на микроконтроллере PIC16F84A, цифровом датчике температуры DS18B20, обладающем точностью измерения до 0,5 градуса, и четырёхразрядном светодиодном индикаторе с общим анодом. В моём случае применён дисплей FYQ-3641BG-21E.

Достоинством схемы является её простота - из дискретных элементов нам понадобятся десяток резисторов, несколько конденсаторов и кварцевый резонатор на 4 МГц. Основной недостаток - как и все электронные устройства, терморегулятор нуждается в источнике питания.

Применение батареек делает прибор мобильным, но срок работы от одного комплекта батареек может составить всего 1-2 недели. Запитывание термометра от сетевого блока питания "привязывает" его к какой-либо розетке, что не всегда удобно.

Добавлю, что на схеме не показано подключение питания к микроконтроллеру - плюс питания подаётся на 14 вывод, а минус - на 5 вывод микросхемы.