Двухканальный термометр на микроконтроллере ATmega8 и датчиках DS18B20. Простой цифровой термометр на PIC16F628A и датчике DS18B20 Беспроводный термометр на pic контроллере

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

Управление устройством осуществляется с помощью одной кнопки. Программа для микроконтроллера написана на Си, снабжена комментариями, и пользователи могут модифицировать ее под свои конкретные задачи, или же расширить функционал. Для управления ЖК индикатором используется готовая библиотека 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 -

Как то попался мне на глаза телефон Nokia 3310 - внук бегал с ним игрался, естественно давно не рабочий. И тут вспомнил, что где-то видел схемы на дисплей от него. Погуглил, выдало несколько ссылочек, на устройства, мне понравился градусник, порывшись в коробочках нашел нашел термодатчик DS18B20, ну и решил собрать по этой схеме, тем более деталей в ней минимум. ЖК дисплей поддерживает два варианта работы: нормальный (на светлом фоне) и противоположный (на темном фоне). Менять режимы можно перемычкой JP1. Ниже смотрим саму схему термометра на микроконтроллере PIC12F629:

Технические параметры устройства:

* Voltage ....................... 3 - 3.3 В
* Мин. шаг темп............. 0,1 " C
* Погрешность................... +/- 0,5 " C Темп.
* Обновляется каждые.... 1,2 sec.
* Amperage ................. 0,2 mA - 0,8 mA
* Диапазон измеряемых температур … от -55 до 125°C

Приступаем к сборке, сначала аккуратно извлек дисплей, стекло не стал выкидывать, решил его тоже приспособить.


Протравил плату, в архиве есть рисунок для технологии ЛУТ. Прошил и просто спаял. можно скачать тут. Сначала датчик подключил через разъем, но он иногда отключался, поэтому его просто припаял.


Самое трудное было припаять проводки к дисплею, на это ушло часа 2 сначала использовал компьютерный шлейф 40 пиновый - очень тяжело и не удобно, так что отказался от него и взял 80 пиновый шлейф, распустил, и все удачно получилось за 5 минут. Подал питание и... термометр заработал.



После небольших манипуляций с дрелью и напильником получилось такое окошко.


Осталось закрепить там родное стекло, даже не стекло, а пластик, но со свойством увеличения. Далее силиконовым пистолетом делаем точечную сварку - тут главное не перегреть дисплей. Так как аккумулятора на 3.6 вольта не было, поставил пока три слабенькие батарейки, они тоже дают 3.3 вольта. Со временем поставлю аккумулятор.


А вот весь термометр на микроконтроллере в сборе:


Работает без глюков и меряет температуру с точностью, не хуже чем у промышленных аналогов. Поэтому данную схему можно смело рекомендовать для повторения. Автор статьи: Ear.

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

Основа схемы термометра микроконтроллер PIC16F628A, он выбран не случайно во первых его легко достать, а во вторых он достаточно дешевый, кроме того он обладает блоком энергонезависимой памяти и внутренней RC цепочкой, которую мы применим в роле тактового генератора с фиксированной частотой на четыре МГц. Это позволило нам существенно облегчить вес схемы, уменьшив общее количество радиокомпонентов.

В качестве измерительного датчика температуры мы взяли недорогой и доступный цифровой датчик DS18B20 передающий информацию о температуре сразу в цифровом виде, что позволило исключить из схемы достаточно дорогой АЦП. В соответствии со своими техническими характеристиками датчик DS18B20 может измерять температуру в диапазоне от -55… +125 °С. И

Информация подается на трех разрядный семисегментный индикатор зеленого цвета с общим катодом, и только поэтому дробная часть информации о температуре не выводится, поэтому если требуется более высокая точность измерения используйте другой сегментный индикатор. Сопротивления R5-R11 применяются с целью токоограничения, катоды индикатора подсоединяются через биполярные транзисторы типа КТ315, это позволяет разгрузить отдельные пины микроконтроллера.

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

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

Термометр способен работать как с преобразователем DS18B20, так и с датчиком DS1820(DS18S20). Под каждый температурный преобразователь применяется своя прошивка микроконтроллера. На фотографии выше показан вариант этого измерительного устройства с уже установленным на печатную плату диодным мостом и стабилизатором типа 7805. Кроме того, к конструкции добавлен светодиод, который кратковременно загорается во время опроса МК температурным датчиком. Светодиод подсоединен между ножкой RB3 (9 вывод) и "массой", естественно с сопротивлением.

Схема универсального программатора EXTRA-PIC и сама программа, а также опсание ируководство по использованию. Сделайте это один раз и вы всегда сможете запрограмировать PIC микроконтроллер.

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


Микросхемы 74164 регистрового сдвига при появлении тактового импульса, переносят значение входного сигнала на выход Q0. Значение прошлого то же передвигается на один шаг. Семи сегментные индикаторы подсоединены к регистровым выходам. К свободным выводам подключены светодиоды для индикации знака отрицательной температуры и номера считываемого температурного датчика. В роли температурных датчиков используется таже микросхема. В архиве к схеме вы найдете прошивку для микроконтроллера и чертеж печатной платы устройства.

Схема цифрового термометра, выполнена на микроконтроллере Attiny2313 и имеет выносной цифровой датчик DS18B20. Пределы измерения от -55 до +125 градусов, шаг измерения 0,1 градус. При необходимости можно использовать до восьми цифровых датчиков. Микроконтроллер обменивается данными с датчиком по протоколу 1Wire.

Или его аналоги. Приборы имеют хорошую точность, помехоустойчивость, и, по сравнению с аналоговыми решениями, значительно упрощают схему. Пределы измеряемых подобными датчиками температур, как правило, ограничены диапазоном от -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 -

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

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

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

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

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

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

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

Другое