Например TDA7294

РадиоКот >Конкурсы >Поздравь Кота по-человечески 2019! >

Теги статьи: МетеостанцияДобавить тег

Метеодатчик с возможностью передачи показаний

Автор: GoldenAndy
Опубликовано 28.08.2019
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2019"

В рамках реализации часов с TFT-дисплеем потребовался внешний метеодатчик.

Сначала хотелось обойтись DS18B20 на трех проводках... Но в результате бурных обсуждений метеодатчик получил Bosch-евский модуль измерения температуры-влажности-давления, радиоканал передачи данных и перерос в самостоятельное устройство, о котором и хочется промяукать.

Метеодатчик поддерживает один термометр DS18B20 и один модуль BME280 (температура, влажность, давление) / BMP280 (температура, давление).

Измеренные показания (2 температуры, влажность и давление), а так же напряжение питания батарейки могут выводиться на ЖК-дисплей "от Nokia5110"  и каждую минуту могут отправляться по последовательному каналу (UART 9600 8,n,1). Последовательный канал может быть как проводной, так и с использованием UART-радиомодуля JDY-40.

Данный датчик - попытка сделать нечто универсальное. Т.е. датчик может работать автономно, только отображая показания на дисплее, может работать без дисплея, только отправляя данные по радио- или проводному каналу. Ну или быть "всё-в-одном".

Внешний вид

Авторское исполнение. Данный вариант исполнения предусматривает размещение датчика под навесом, с защитой от прямых солнечных лучей и где невозможно попадание брызг дождя. (Увы, пока без декоративной наклейки)

Что датчик умеет:

  • Поддержка датчика DS18B20 (температура)
  • Поддержка датчика ВМЕ280 (температура/влажность/давление) или BMР280 (температура/давление)
  • Отображение напряжения питания и информации с датчиков на ЖК-дисплее 84*48 пикселей (NOKIA 3310/5110) - для возможности использования модуля в автономном режиме
  • регулировка контрастности дисплея (кнопки "+" и "-")
  • Отправка информации с датчиков и напряжения питания по последовательному порту (9600,8,N,1), выход Тх - открытый сток (открытый коллектор)
  • Отправка информации с датчиков и напряжения питания по радиоканалу с применением модулей JDY-40 (UART-удлиннитель).
  • Посадочное место под JDY-40
  • Диапазон питания 2..5 вольт (в случае применения DS18B20 - 3..5 вольт)
  • Встроенный LDO-стабилизатор (для возможности питания 3.6 вольтовых ВМЕ/ВМР и JDY-40) при питании выше 3.6 вольт...
  • Программная калибровка измерителя напряжения батарейки, выполняется при питании от стабилизированных 3.30 вольт.
  • Подсветка дисплея

Схема электрическая принципиальная.

 

Схема в PDF и проект Eagle 7.

Метеодатчик построен на базе "народного" контроллера ATMega8A. Контроллер тактируется от 4 МГц кварцевого резонатора. Применение кварца обусловлено необходимостью стабильной частоты для передачи данных по UART. Для остальных компонентов, по большому счету, стабильная частота не нужна. Обмен по i2c с BME/BMP280 абсолютно не зависит от стабильности тактовой частоты контроллера. Обмен с DS18B20 по 1Wire более критичен к стабильности частоты, но с гораздо большими допусками, нежели нестабильность внутреннего RC-генератора микроконтроллера. Соответственно, если датчик предусматривается автономным, без передачи данных - кварц можно не ставить, а сконфигурировать контроллер на тактирование от внутреннего генератора 4 МГц и время ожидания после старта - 4мс. 

Микроконтроллер опрашивает датчики раз в минуту. Все остальное время МК находится в режиме сна. В качестве таймера, периодически пробуждающего МК ото сна использован "собачий таймер" - WatchDog. Поскольку максимальная выдержка этого таймера - около 2 секунд, контроллер подсчитывает число пробуждений. Каждое тридцатое пробуждение запускается цикл опроса датчиков, вывод информации на дисплей и отправка данных по последовательному каналу, после чего контроллер опять уходит в глубокий сон. При промежуточных пробуждениях контроллер сразу уходит в сон. Промежуточное пробуждение длится около 7 мс, ток потребления при этом в районе 5 мА. В режиме сна потребление без дисплея - около 15 мкА, с дисплеем - 150-250 мкА (потребление дисплея зависит от настроенной контрастности и числа включеных пикселей).

Питание датчика - через клеммы Х1, Х2.
Конденсаторы С6, С7 и С8. Для работы передатчика на уже подсевшей батарейке - ее нужно зашунтировать хорошей емкостью. Тут можно поставить или трухольный С6 - тут уже какой есть... от 47 до 1000 мкФ и выше (насколько хватит места в корпусе датчика - см. практический опыт в конце статьи). Либо можно поставить один или два тантала С7 и С8. С6 ставится на обратную сторону платы и кладется на бок. Место под 2 тантала предусмотрено, если нет одного тантала достаточной емкости.

Программирование МК осуществляется через контактные площадки JP1.

К данным площадкам необходимо припаяться на время программирования (поскольку операция эта одноразовая). 

При использовании передачи данных Тх по проводам (выход типа Открытый сток) или через JDY-40 необходимо установить элементы R1,R3,R4,Q1,Q2.
Выход ТХ - клемма Х3.
Если датчик будет работать автономно, без передачи данных - R1,R3,R4,Q1,Q2 можно не устанавливать...

Встроенный LDO IC2 управляется по входу EN, в дежурном режиме он выключен.
LDO и его обвязка устанавливаются только в случае, если нужно понизить питание для трансивера и/или ВМЕ.

Подключение ВМЕ

Применимы датчики ВМЕ280 (или ВМР280 - тогда влажность не будет отображаться) в виде китайских модулей как в 4-контактном (со встроенным LDO), так и в 6-контактном исполнении (без встроенного LDO).
В случае применения 6-контактного датчика и питания модуля от напряжения выше 3.5 вольт датчик необходимо питать через LDO IC2:
необходимо установить R5,IC2,C9,C10 и перемычку SJ3 - замкнуть в положение 1-2
При питании ВМЕ напрямую от шины питания - R5,IC2,C9,C10 не устанавливаются (см. дополнительно питание трансивера), перемычка SJ3 - в положении 2-3

В случае применения ВМЕ со встроенным LDO, что бы этот LDO не жрал батарею, земля ВМЕшки заводится на транзистор Q3 - для этого перемычку SJ4 необходимо поставить в положение 1-2.
В положении 2-3 перемычки SJ4 земля постоянно будет подключена к ВМЕ.

Подключение DS18B20

Подключение датчика температуры выполнено по классической трехпроводной схеме. Единственное ограничение - согласно даташиту, DS18B20 работоспособен при питании от 3 до 5 вольт. 

Подключение трансивера JDY-40

Трансивер JDY-40 - несложный удлинитель uart, его можно конфигурировать на разные каналы, разную скорость передачи данных, разные режимы работы. Можно из пары таких модулей, соответствующим образом их сконфигурировав, получить "Пульт ДУ" на 8 команд без применения других контроллеров и т.д. Для применения в нашем датчике используется конфигурация модуля по умолчанию, режим удлинителя UART, 9600 8N1.
Ну и, соответственно, на приемной стороне должен быть такой же модуль с аналогичной конфигурацией.

При использовании трансивера, в дополнение к R1,R3,R4,Q1,Q2 необходимо так же установить элементы R8,R14,Q4,C11. Если использование трансивера не предполагается - данные элементы не устанавливаются.
В случае питания модуля от 4.5-5 вольт и использования трансивера JDY-40 (у него питание не выше 3.6 вольта) необходимо установить LDO IC2, R5,C9,C10 и установить перемычку SJ2 в положение 1-2.
Если предполагается питание трансивера напрямую от батареи (или трансивер не будет использоваться) - IC2, R5,C9,C10 можно не устанавливать, а перемычку SJ2 установить в положение 2-3.

При питании трансивера JDY-40 через LDO (при питании модуля напряжением выше 3.6 вольта) следует учесть, что JDE-40 "просыпается" после включения питания где то через 320 мс после подачи питания. Соответственно, в случае использования питания выше 3.6вольт (и, соответственно, использовании набортного LDO, который отключается и включается по сигналу от МК) для использования JDE-40 необходима прошивка с увеличенным временем питания трансивера перед началом отправки данных.

Установка JDY-40. Он ставится на обратной стороне, антенная часть выходит за пределы платы и дисплея.
Трансивер можно зафиксировать изолированной перемычкой, для этого предусмотрены соответствующие отверстия на плате.

Светодиод LED1 светится в моменты, когда производятся измерения температуры, давления , влажности и идет отправка данных.

Кнопки SW1, SW2 регулируют контрастность дисплея*, так же при помощи этих кнопок производится первоначальная калибровка внутреннего источника опорного напряжения.

*Зависит от дисплея, см.ниже

Кнопки применены вот такие.

Кнопки регулировки контрастности продублированы контактными площадками на обратной стороне платы.

Дисплей.

Применен "народный" дисплей от Nokia 3310/5110. Такие дисплеи китайцы массово продают уже установленные на переходные платы.

Удобнее применять дисплей на "красной" плате - у него контактные отверстия сверху и снизу. Подключение дисплея к плате модуля осуществляется через нижний ряд отверстий. Так же на плате модуля предусмотрены три пары отверстий для крепления дисплея за два крайних контактных отверстия верхнего ряда. Почему три пары ? У меня было три разных китайских дисплея "от Нокии" - и у каждого был свой размер печатной платы.

Подсветка дисплея.
Подсветка по умолчанию не используется. Однако при проводном питании от электростанции можно установить резистор R10, перемычку SJ6 и тогда подсветка будет гореть все время.
Можно не устанавливать резистор R10 и LED1, а замкнуть перемычку SJ5 - тогда подсветка дисплея будет подмигивать при отправке данных вместо LED1.
Дополнительно - можно установить кнопку SW3 - и включать подсветку вручную, что бы посмотреть показания.
Следует учесть, что китайцы продают разные версии дисплеев, в т.ч. и с контроллерами, у которых контрастность жестко задана и не регулируется стандартными командами. В таком случае кнопки можно не устанавливать, а калибровку внутреннего ИОН провести с использованием контактных площадок на обратной стороне платы модуля.

В авторском варианте кнопки контраста и кнопка подсветки выведены через толкатели на боковые стенки корпуса.

Пример работы подсветки

Измерение напряжения питания, калибровка измерителя.

Напряжение питания проверяется раз в минуту, после включения питания передатчика, но до начала передачи данных, т.е. батарея нагружается передатчиком в режиме ожидания.

Измерение напряжения питания реализовано с использованием внутреннего ИОН контроллера. Поскольку напряжение данного ИОН может меняться от экземпляра к экземпляру МК, то реализована программная калибровка.
Для этого нужен внешний стабилизированный БП с напряжением 3.3 вольт.
Необходимо зажать обе кнопки регулировки контрастности и после этого, не отпуская кнопок, подать стабилизированное питание на модуль.
Процесс калибровки длится около 300 мс. По окончанию калибровки загорится светодиод LED1. Дисплей не инициализируется, информация на нем не появляется. Кнопки после этого можно отпустить.
Выход из режима калибровки - только отключение питания (или сигнал сброс на МК).

 

Подбор элементов и перемычек

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

Табличка

Эскизы печатной платы

   

Печатная плата разработана в двух версиях - с оптимизацией под ЛУТ и с оптимизацией под заказ на производстве.

Герберы для ЛУТ
Герберы для заказа на производстве
Готовый PDF для печати ЛУТ, позитив

Конфигурация фьюзов

Для использования МК с кварцем 4 МГц конфигурация фьюзов следующая

Для использования внутреннего RC-генератора на 4 МГц:

 Отправка данных по UART

Данные об измеренных величинах отправляются в текстовом виде.

Каждая величина - в отдельной строке.
Строка начинается на $, далее идет код передаваемой величины, символ "равно" и значение величины. Десятичный разделитель - точка. 
Каждая строка оканчивается парой символов CR/LF.

Температуры от датчиков 1 и 2, значение - два знака до и два после десятичного разделителя, возможны отрицательные значения
$T1=-10.00     
$T2=16.25

Давление - целое число миллиметров ртутного столба, три знака
$P=768

Влажность - целое значение процентов, от одного до трех знаков
$H=66

Напряжение питания датчика, вольты, один знак до и один знак после десятичного разделителя.
$B=3.3

Если установлено 2 датчика - DS18B20 и ВМЕ280 - Т1 - температура с DS-ки, Т2 - с ВМЕ.
Если установлен только ВМЕ280 - Т1 - температура с этого датчика.
Если установлен ВМР280 - данные о влажности не отправляются.
Если нет ни одного датчика - отправляется только напряжение питания модуля.

Пример тестовой отправки данных, напряжение питания 3.3 В, температуры -19.75°С и - 66.25°С, давление 432 мм.рт.с., влажность 146%. Почти погода на Марсе.

 

 

Подключение радиомодуля JDY-40 через USB-UART переходник

Для контроля отправки данных по радиоканалу можно второй трансивер JDY-40 подключить через преобразователь USB-UART к ПК.

 

Прошивка для контроллера.

В приложенных к статье файлах архив с прошивками.

Прошивок четыре:
DebugTouch_Clock_v2_sensor.hex - тестовая прошивка, меряет и отправляет показания каждые 6 секунд, при нажании кнопок включает LED1 (для проверки работы кнопок)
ReleaseTouch_Clock_v2_sensor.hex - выполняет измерение показаний один раз в минуту, основная рабочая прошивка
Release_longWakeUpTouch_Clock_v2_sensor.hex - основная рабочая прошивка с увеличенным временем пробуждения модема - для случаев, когда есть JDY-40 и питание выше 3.6в.
Release_NoTXTouch_Clock_v2_sensor.hex - рабочая прошивка без поддержки отправки данных по последовательному каналу, измерение показаний раз в минуту, вывод на дисплей.

Замены элементов:

Транзисторы Q2,Q3,Q4 - в принципе, подойдут любые N-канальные мосфеты в корпусе SOT23. BSS123, BSS138, IRML2502 и т.д.. Тысячи их.... Побдирать замену лучше по минимальному напряжению затвор-исток.
Q1 - тоже почти любой PNP в SOT23

LDO IC2 - Применен LDO LP2985-3.3. Можно применить аналогичный по расположению выводов и с напряжением стабилизации 3.0-3.3 вольта. Например, NCP551SN33 (для него, кстати, С9 не нужен).

Вместо JDY-40 можно, теоретически, применить модули HC-11 или HC-12 - uart удлинители на 433 МГц.... Первый обещает дальность до 200 метров, второй до 1500.... Но подключать к датчику их придется уже на проводах.

 

 

Отладочная версия датчика выглядела вот так:

 

Из опыта эксплуатации датчика с радиомодулем и дисплеем - размышления о питании модуля.

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

Анализ питания показал, что в режиме сна датчика напряжение на батарейках держится на уровне 4 вольт. При включении питания передатчика (до начала передачи) напряжение проседает до 2.4 вольта, что и отображается на дисплее. Но при начале передачи напряжение проседает до 1.8-1.9 вольт, что и приводит к сбою передачи данных.

Подключение параллельно батарейкам конденсатора 3300мкФ 6.3 вольт данную проблему решило.
На момент написания статьи модуль работает на том же комплекте солевых батарееек 41 сутки, отображаемое напряжение питания 2.7 вольт, передача данных проходит стабильно.

С учетом того, что АА-батарейки имеют до 2.5 раз большую емкость относительно ААА-батареек, а щелочные элементы ёмче солевых в 1.5-2 раза, целесообразно применение в качестве питания датчика (в конфигурации с дисплеем и радиомодулем) трех щелочных (алкалиновых) батареек АА-типоразмера.

 Так же возможно питание от литиевых аккумуляторов с двумя "но":

  1. Литиевые аккумуляторы не любят температуру ниже 0°С
  2. Датчик никак не контролирует напряжение питания и может "высадить" аккумулятор ниже допустимого порога. (В принципе, можно сделать вариант прошивки, которая при достижении напряжения питания 2.7 вольта отправит датчик в "вечный сон". Но выход из вечного сна - только отключение питания или сигнал сброса на МК)

 

 


Файлы:
Файл для печати ЛУТ, позитив
Схема в PDF
Документ PDF
Проект Eagle 7
Прошивки метеодатчика
Герберы для ЛУТ
Герберы для заказа на производстве


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

38 11 6
5 0 0

Эти статьи вам тоже могут пригодиться: