Электронный термометр с беспроводным датчиком



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

Для измерения температуры я использовал распространенные датчики DS18B20, для отображения показаний применил не менее популярный ЖК дисплей Nokia 5110. Радиомодули и алгоритм передачи данных я рассматривал ранее в статье про передатчик и приемник на 433 МГц

Ниже представлена схема беспроводного датчика на микроконтроллере PIC12F675.
Беспроводной датчик
После подачи питания микроконтроллер считывает значение температуры с датчика BK1 и отправляет эти данные на радиопередатчик A1, после чего происходит переход в спящий режим. Пробуждение микроконтроллера происходит по прерыванию, которое генерируется изменением уровня на линии GP0. К этой линии подключена RC цепочка на элементах R2 и C4, которая выполняют функцию таймера. При выходе из спящего режима на линии GP0 устанавливается низкий логический уровень, тем самым конденсатор C4 разряжается. Перед уходом в “сон” линия настраивается на вход, конденсатор начинает заряжаться через резистор R4, при достижении порогового напряжения (около 1,2В) происходит прерывание и пробуждение микроконтроллера. При указанных на схеме номиналах R2, C4 период пробуждения составляет примерно 5 минут. Установив перемычку JP1, можно сократить период до 5,5 секунд. Путем подбора конденсатора и резистора можно настраивать желаемое время периода, но при этом надо учитывать ток заряда конденсатора, в плане энергопотребления.

Значение температуры по радиоканалу передается в виде пакета из 3-х байт, последний байт представляет собой контрольную сумму первых 2-х байт. Алгоритм передачи данных, который я использую, в принципе позволяет обходиться без контрольной суммы, вероятность приема неправильных данных низкая. Скорость передачи составляет 3,3 Кбит/сек. Каждый раз после измерения температуры отсылается 3 пакета байтов, пауза между пакетами составляет 10 мс, такой вариант передачи я применил для увеличения надежности получения данных приемником. Это связано с тем, что приемная сторона прерывает прием сигнала на 4-5 мс, во время измерения температуры с внутреннего (домашнего) датчика.

В качестве питания используется батарея 6F22 на 9В (“Крона”), модуль радиопередатчика A1 питается напрямую от батареи. Для питания микроконтроллера используется микромощный стабилизатор напряжения DA1 (MCP1702) на 5В, собственный ток потребления стабилизатора составляет всего 1-2 мкА, максимальный ток нагрузки до 250 мА. Стабилизатор MCP1702 можно заменить на LP2950, ток потребления которого выше и составляет 75 мкА. Обычные стабилизаторы напряжения типа L78хх имеют большой ток потребления в несколько миллиампер, поэтому не годятся для аппаратуры с батарейным питанием. Ток потребления устройства в спящем режиме меняется с течением времени по мере заряда конденсатора С4, первые 2,5 минуты потребление составляет 10 мкА, последующие 2,5 минуты ток плавно увеличивается, до момента выхода из спящего режима. Данное явление возникает из-за наличия токов переключения входного буфера микроконтроллера.

Хочу отметить, что при низких температурах емкость батареек уменьшается быстрее, не все типы батареек можно использовать в таких условиях. Лучшими показателями при отрицательных температурах обладают литиевые батарейки, далее следуют Ni-Mh аккумуляторы, щелочные батарейки занимают третью позицию, солевые элементы не пригодны для таких условий.

Ниже представлена схема термометра на микроконтроллере PIC16F628A.
Термометр, схема
Дисплей HG1, датчик BK1 и микроконтроллер питаются напряжением 3,3В от стабилизатора DA2. Такое значение было выбрано в связи с характеристиками дисплея, максимальное напряжение питания которого составляет 3,3В, кроме этого отпадает необходимость в согласовании уровней напряжения между линиями ввода/вывода дисплея и микроконтроллера. Модуль приемника A1 питается от стабилизатора DA1, с выходным напряжением 5В. Резисторы R6, R7 установлены для согласования уровней напряжения.

Микроконтроллер DD1 считывает значение температуры с датчика BK1 каждые 2 секунды, параллельно принимает сигнал с приемника, при получении пакета байтов от передатчика вспыхивает светодиод HL1. В верхней части дисплея отображается надпись “Дом”, под которой выводится значение температуры с внутреннего (домашнего) датчика, ниже отображается надпись “Улица” и температура, полученная от беспроводного датчика. После приема данных по радиоканалу, микроконтроллер запускает таймер, который ведет отсчет времени для контроля получения данных. Если данные не были получены за период отсчета таймера, вместо показаний температуры, на дисплее высвечивается символы тире “- — — — -”. Время отсчета можно задать в пределах 1-15 минут с шагом в одну минуту. Для этого, перед программированием микроконтроллера, необходимо записать число от 1 до 15 в ячейку EEPROM с адресом 0x00. По умолчанию устанавливается период в 7 минут. При неисправности датчиков BK1, для обоих устройств, вместо значения соответствующей температуры, выводится надпись “ERROR”. Кнопка SB1 управляет подсветкой дисплея, по умолчанию подсветка включена. Кнопка SB2 предназначена для регулировки контрастности дисплея, так как у разных экземпляров она может отличаться.

Для питания устройства подойдет нестабилизированный источник питания с выходным напряжением 8-12В. Оба устройства размещены в пластиковых корпусах. Антенна для радиомодулей выполнена в виде отрезка одножильного провода длиной 17 см (четверть длины волны несущей частоты).

Плата передатчикаБеспроводной датчикПлата термометраТермометр в корпусеТермометр с беспроводным датчиком

Последние записи:

Один комментарий на “Электронный термометр с беспроводным датчиком

  1. Молодец сделал всё отлично, а у меня всё руки не дошли 🙂 Чем интересно дальше займёшься.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *