Данный цифровой термометр предназначен для беспроводного цифрового измерения температуры в диапазоне -40…+70 °С с разрешением 0,1 °С. Устройство может записывать максимальное и минимальное измеренное значение температуры. Здесь представлены две версии: одноканальная (с одним передатчиком) и двухканальная (с двумя передатчиками).
Способ передачи данных
Сигнал передается от датчика к блоку индикации через радиочастотные модули 433 МГц, на частоте 433,92 МГц. Этот диапазон предназначен для передачи данных с небольшим объемом данных и выходной мощностью передатчика до 10 мВт.
Однако подобный модуль может использовать и другой диапазон без дополнительных настроек, например, 868 МГц или 315 МГц (в зависимости от того, какой диапазон разрешен в вашей стране).
Можно использовать готовые модули связи, имеющие 3 вывода: питание, земля и вход (передатчик) или выход (приемник). Их использовать достаточно легко. Логические импульсы (данные) на входе передатчика просто появляются на выходе приемника, если оба модуля находится в пределах досягаемости и нет помех от других устройств.
Данные передаются путем модуляции длины импульса. В одном кадре передаются 24 бита данных — измеренное значение температуры (11 бит), идентификатор датчика (1 бит), бит четности и контрольные биты — побитовая инверсия температуры.
Логическая 1 представлена длиной импульса 512 мкс, 0 — импульсом 128 мкс, промежуток между битами всегда составляет 256 мкс, промежуток между кадрами составляет 1024 мкс. Разница между короткими и длинными импульсами и между короткими и длинными промежутками всегда четырехкратна.
Поэтому для того, чтобы система передачи была устойчива к большим колебаниям тактовых частот передатчика и приемника, нет необходимости использовать кварцевые резонаторы. Средняя скорость передачи данных составляет около 1800 бит/с.
Работа передатчика
Передатчик (беспроводной датчик температуры) управляется микроконтроллером DD1 — Atmel AVR ATtiny13A (ATtiny13, ATtiny13V), работающий на частоте 1,2 МГц от внутреннего RC-генератора. Данные передаются с помощью радиосигнала.
Температура измеряется интегральной микросхемой DA1 — MCP9700A. Применение MCP9700A обеспечивает линейную зависимость выходного напряжения от температуры с коэффициентом 10мВ/°С + 500мВ. Благодаря добавлению постоянной в 500 мВ позволило измерять отрицательные температуры без отрицательного выходного напряжения. Потребляемый ток MCP9700A составляет всего 5 мкА, что хорошо подходит для устройства с батарейным питанием.
Разрешение АЦП схемы микроконтроллера увеличено с 1024 до 1216 шагов за счет передискретизации, тем самым мы получили разрешение измерения 0,1 °C.
При каждом обновлении данных выполняется 38 преобразований АЦП, они складываются и делятся на 32. Это генерирует 11-битный результат. Для повторной выборки будет достаточно меньшего количества выборок, но большее количество выборок приводит к лучшей стабильности и устранению случайных ошибок.
В программе добавлен 1-битный идентификатор передатчика, позволяющий различать два передатчика. Из полученных 12 бит создается 13-й бит четности. Кроме того, для более надежной передачи передается 11-битная проверочная инверсия температуры (нули и единицы меняются местами).
Таким образом, весь кадр имеет 24 бита. Это передается, начиная с MSB обратной температуры, затем бита четности, затем идентификатора канала и, наконец, неинвертированной температуры. Кадр всегда отправляется 3 раза во время передачи. Передача повторяется каждые 20 секунд.
Датчик калибруется с помощью потенциометра P1. Для упрощения калибровки вы можете увеличить частоту обновления с 1/20 Гц до 1,5 Гц, подключив контакт PB0 к земле. Затем установите ручку P1 так, чтобы приемник показывал правильное значение. Подключив контакт PB1 к земле, вы можете активировать передачу тестового сигнала — передатчик передает все значения постепенно от -40 до +70 °C. При нормальной работе контакты PB0 и PB1 не подключены.
Контакт PB3 задает идентификатор канала. Вы можете выбрать канал 0 (PB3 подключен к GND) или канал 1 (PB3 подключен к плюсу питания).
На приемнике должен быть выбран тот же канал (одноканальный). Для использования с двухканальным приемником установите идентификатор одного передатчика на 1, а другого на 0.
Конденсатор C2 следует разместить как можно ближе к DD1. Конденсатор С3 следует разместить как можно ближе к передающему радиомодулю.
Передатчик питается от батареи 3В или 4,5В — две или три батарейки АА или ААА, в зависимости от напряжения питания, требуемого модулем преобразователя, или в соответствии с требуемым диапазоном. Среднее потребление составляет всего около 25 — 30 мкА (модуль FS1000 XD — FST с питанием три элемента по 1,5 В), а время непрерывной работы от батареи 1000 мА/ч (без учета саморазряда) составит около 4 лет.
Работа одноканального приемника
Приемник (блок индикации) управляется микроконтроллером DD1, ATmega8A (ATmega8, ATmega8L), работающий на частоте 8 МГц от внутреннего RC-генератора. Для отображения температуры используется четырехразрядный светодиодный дисплей.
Катоды подключены к порту B, аноды к выводам PD0, PD1, PD3, PD4 порта D. Частота мультиплексирования около 100 Гц. Резисторы восемь резисторов сопротивлением 560 Ом определяют ток на дисплее и, следовательно, яркость.
Можно также использовать трехразрядный светодиодный дисплей и прямоугольный светодиод в качестве сегмента g цифры слева (символ минус), потому что на самом деле 4 разряд больше ничего не отображает. Правая цифра может быть опущена, при разрешении в 1 °С (при этом резистор от контакта РВ7 до сегмента h тоже можно не ставить, т.к. точка не нужна).
Для приема сигнала от датчика используется радиочастотный приемный модуль. Выход обрабатывается микроконтроллером DD1. Он оценивает и обрабатывает полученный сигнал, и если он принимает код в правильной форме — длина 24 бита, нужный канал (идентификатор передатчика), бит четности в порядке и обратное значение тоже, оценивает кадр как правильный и обновляет данные на индикаторе.
Приемник также отслеживает и записывает максимальные и минимальные измеренные значения температуры. Их можно отобразить, нажав кнопки MIN или MAX. Одновременное нажатие обеих кнопок сбрасывает максимум и минимум.
Вывод PC3 служит индикатором приема сигнала. Если в течение последних 60 с сигнал был получен, то PC3 перейдет в состоянии логической 1, и включиться светодиод HL2 (зеленый). В противном случае на выводе PC3 будет логический 0 который включит светодиод HL1 (красный).
Термометр питается от источника питания 5В. Потребляемый ток около 20-40 мА (большую часть потребляет светодиодный дисплей). Поместите конденсатор C2 как можно ближе к микроконтроллеру DD1, а конденсатор C1 ближе к радиоприемному модулю.
Работа двухканального приемника
Позже был создан двухканальный вариант приемника. это устройство позволяет одновременно принимать сигналы от двух разных передатчиков (один передатчик настроен на канал 0, а другой — на канал 1).
Приемник имеет два четырехразрядных дисплея, собранных из четырех двухразрядных LD-D036UPG-C. Каждый канал имеет свой индикатор сигнала. Кнопки минимума и максимума являются общими для обоих каналов. В остальном все аналогично одноканальному приемнику.
Скачать прошивку (3,0 KiB, скачано: 63)