Цифровой термометр на микроконтроллере своими руками. Электронный термометр с беспроводным датчиком. Термометр на ATmega8 и датчике температуры DS18B20

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

Схема нового термостата представлена на рисунке 1.

В принципе она почти ничем не отличается от своих . Вообще это огромный плюс схем с применением микроконтроллеров.
Основа схемы — микроконтроллер PIC16F628A. В качестве датчика применен один из известных и популярных цифровых датчиков температуры DS18B20. Показания реальной температуры, величина устанавливаемой температуры стабилизации и необходимого гистерезиса выводится на семисегментный светодиодный трехразрядный индикатор с общим анодом. Резисторы R1…R4, это подтягивающие резисторы. R1 подтягивает шину передачи данных с датчика температуры DS18B20 к шине питания схемы плюс пять вольт. R2…R4 подтягивают соответствующие выводы микроконтроллера к шине плюс пять вольт.

Резисторы с пятого по двенадцатый, являются гасящими резисторами, или ограничивающими применительно к току, протекающему через светодиоды. Изменяя номинал этих резисторов, можно регулировать яркость свечения сегментов индикатора. Иногда встречаются индикаторы с разной яркость свечения отдельных сегментов, этот дефект так же можно устранить при помощи этих резисторов. Для установки температуры термостатирования применены две кнопки с соответствующими знаками «+» и «-», это кнопки SB2 и SB3. Этими же кнопками устанавливается необходимый вам гистерезис, от 0,1 ˚С до 0,9˚С при нажатой кнопке SB1 — «Гистерезис». Сигнал управления коммутирующим ключом снимается с вывода 17 микросхемы DD1. Схему ключа я не стал рисовать, выберите сами, например, из статьи « »

Обращаю ваше внимание, что в железе я устройство не проверял, все было промоделировано в Протеусе.

Соответственно печатную плату не рисовал, но если у вас появится желание повторить данный термостат, рисунок можете выслать мне на адрес — [email protected] Начинающим «радиогубителям» (шутка), это очень пригодится. Я не в курсе затей тех посетителей, которые просили об усовершенствовании термостата, но возможно это были химики, для которых важна точность температуры растворов. Я, думаю, и вы найдете применение этому устройству. Не плохо бы было, если бы и вы прокомментировали, где можно применить его. Успехов. К.В.Ю.

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

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


Это обычный цифровой термометр, на просторах интернета подобных девайсов очень много. Основа микроконтроллер PIC16F628A и цифровой датчик температуры DS18S20 (DS18B20). В качестве индикаторов применены светодиодные 3-х разрядные индикаторы зеленого цвета. Индикация динамическая. Термометр работает во всем диапазоне температур датчика DS18S20, т.е. от -55 до +125 градусов.

Собран термометр на печатной плате, вместе с индикатором. Датчик и питание подключаются отдельно. Если датчик не подключен, на индикаторе высвечивается буква Е (Error). Никаких особенностей данный прибор не имеет. Диод VD1 служит для защиты от переполюсовки источника питания.

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

Прибор удобно разместить в любой пластиковой коробке подходящих размеров. Я разместил его в корпусе сетевого блока питания (Адаптора) вместе с трансформатором. Т.е. из коробки выходит только разъем на датчик DS18B20, а сам корпус вставляется в сеть 220В.



Файл:
Размер:
Содержимое:

sm_termo.rar
38.3 КБ
Рисунки плат (LAY) и прошивки микроконтроллера.

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

Основа схемы термометра микроконтроллер 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.

Термометр на ATmega8 и датчике температуры DS18B20

Схема термометра на ATmega8 и DS18B20

Цифровой термометр DS18B20
Семисегментный светодиодный индикатор
Алгоритм программы термометра
Программа цифрового термометра на DS18B20

Схема и программа очень простого цифрового термометра с использованием микроконтроллера ATmega8 и датчика температуры DS18B20 . Термометр позволяет измерять температуру от 0 до 99 градусов с точностью до 0,5 градусов с разрешением 0,1 градуса

Термометр по своим характеристикам очень прост, и его можно использовать только как термометр для измерения «комнатной» температуры. Использовать в этой конструкции микроконтроллер с памятью 8 килобайт конечно расточительно, можно применить микроконтроллер и попроще. Но дело в том, что эта конструкция — основа для дальнейшего развития проекта с использованием цифрового датчика температуры DS18B20. В следующей статье будет опубликована конструкция другого термометра — на двух датчиках DS18B20, что позволит измерять температуру не только в комнате, но и «за бортом». Естественно, будет добавлена возможность измерять и отрицательные температуру. В дальнейшем в конструкцию будет добавлена функция термостата, часы, возможность работы с различными нагрузками, что позволит уже собрать несложную конструкцию — основу «умного дома». Ну а сегодня первая статья из этой серии.

Схема термометра на ATmega8 и датчике температуры DS18B20

Давайте посмотрим на схему термометра:

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

Напряжение питания конструкции — 5 вольт. Если вы примените микроконтроллер с низковольтным питанием , то можно и понизить питающее напряжение конструкции, но в этом случае, возможно придется уменьшить номинал гасящих сопротивлений в сегментах индикатора. Приблизительно номиналы сопротивлений можно брать:
— при питании 5 вольт — 200-300 Ом
— при питании 2,7 — 3 вольта — 100-150 Ом


Транзисторы — любые, маломощные, структуры NPN.
Датчик температуры — DS18B20
Семисегментный индикатор — любой трехразрядный с общим катодом. Если вы захотите применить другие, с общим анодом, тогда придется заменить транзисторы на PNP и внести изменения в программу (заменить массив двоичных кодов для вывода цифр на индикатор). Я применил индикатор красного цвета свечения, и заодно, для следующей схемы, приготовил такой-же, но голубого цвета свечения.

Детали термометра на микроконтроллере ATmega и DS18B20



Распиновка микроконтроллера ATmega8:

Трехразрядный семисегментный индикатор FYT-5631AUR-21:

Датчик температуры DS18B20:

Транзисторы BC547C:

Алгоритм работы программы термометра на ATmega и DS18B20

Все установки микроконтроллера заводские, FUSE-биты трогать не надо.

Для работы программы задействовано два таймера/счетчика микроконтроллера:
восьмиразрядный Т0
шестнадцатиразрядный Т1
С помощью восьмиразрядного таймера Т0 настроенного на вызов прерывания по переполнению, с внутренней частотой СК/8 (период 2 миллисекунды) организован:
— расчет текущей температуры
— динамический вывод результатов измерения температуры датчиком DS18B20
С помощью шестнадцатиразрядного таймера Т1 настроенного на вызов прерывания по переполнению, с внутренней частотой СК/64 (период 4 секунды) организованно:
— подача команды датчику DS18B20 на измерение температуры
— считывание измеренной температуры с датчика
В принципе, можно задействовать и один восьмиразрядный таймер/счетчик, также настроенный на вызов прерывания по переполнению, с внутренней частотой СК/8, и всю работу схемы организовать в процессе обработки прерывания. Но дело в том, что смысла в этом нет — датчику DS18B20 необходимо чуть меньше 1 секунды (при 12-ти битном разрешении) для конвертирования (определения) температуры, т.е., чаще чем 1 раз в секунду мы не сможем обновлять данные температуры. Кроме того, столь частое обновление температуры приведет к нагреву датчика и, соответственно, к искажению реальных данных. Использование второго счетчика позволяет отдельно задавать промежутки времени измерения температуры.

Вот так выглядит основная часть программы в Algorithm Builder:

Где:

SP — настройка начального адреса стека

Timer 0 — настройка таймера T0:

Timer 1 — настройка таймера Т1:

TIMSK — настройка прерываний от таймеров:

Init_Display — подпрограмма настройки разрядов портов, участвующих в динамической индикации вывода данных на трехразрядный семисегментный индикатор

1 —> I — глобальное разрешение прерываний

Если возникнут вопросы, если что-то изложено не понятно или есть вопросы по программе, пишите — отвечу.

(2,4 KiB, 7 004 hits)


Top