Обновить

Метеостанция на Аtmega328 и NRF24L01 с выносным датчиком

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели14K
Всего голосов 24: ↑24 и ↓0+32
Комментарии25

Комментарии 25

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

Для отсеивания случайных выбросов обычно берется медиана, а не среднее. Тогда даже сбойное значение в миллион градусов не повлияет на результат.

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

23мкА - от очень большое потребление для батареечных датчиков.

Возьмите NRF52 - хороший МК сразу с радиомодулем. Если нормально работать с датчиком температуры, то вполне можно уложиться 1-2мкА в режиме сна

Да даже на ESP32C3 можно уложиться в 5-6мкА

Спасибо за рекомендации! NRF52 действительно интересный вариант, ранее не слышал о нём. Присмотрюсь к нему в следующих проектах

23мкА - это даже мало для такой схемы.
Покажете, как на одной нрф52 можно реализовать подобный датчик с 1-2мка потрбеления? практический пример, так сказать.

Статья интересная, но используемое решение странное. Можно вместо атмеги использовать NRF52 как советуют выше. Еще смущает что вы не выводите графики, и не логгируете данные, а ограничиваетесь текущими показаниями на экране. Это далеко не так интеесно, как график. Впрочем это мелочи, главное - датчики.

А теперь вопрос по датчикам: вы не проводили замеры, насколько колпак стивенсона спасает от систематической ошибки на солнце? Можно увеличить частоту замеров, выносить прибор из тени и заносить и смотреть на изменение температуры. Еще немного смущает крепление датчика на массивном основании. Это добавляет приток тепла от опоры, хотя для медленных измерений это не так критично. Просто я знаю что голый датчик висящий на тонких проводках очень быстро реагирует на изменение температуры по сравнению с датчиком в корпусе: постоянная времени реакции меняется с нескольких секунд до единиц - десятков минут.

Никакой колпак Стивенсона не спасает от солнца на 100%.
Я у себя дома поставил два датчика на северную и южную сторону и беру минимальное значение температуры в систему.
Если ночью разница температур между датчиками редко бывает больше 1 градуса, то в солнечный день 6 градусов разницы - это норма

Спасибо за развёрнутый комментарий!
Atmega и nRF24 использовал, потому что ранее не слышал о nRF52 — присмотрюсь к нему в следующих проектах.

По графикам Вы правы, это добавило бы наглядности. Я делал акцент на локальной индикации: посмотрел на экран и забыл.

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

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

Аtmega328 и NRF24L01

Недавно начал использовать esp32c6, и wifi/bluetooth/zigbee и экономное ядро 20мгц в одном корпусе

... и подключение аккумулятора ещё обычно делают на плате сразу.

Спасибо, что поделились информацией про ESP32-C6

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

Как и ожидалось, минимальное потребление в активном режиме достигнуто на частоте 1 МГц.

"Неправильно ты, дядя Фёдор, ..." считаешь. Надо считать не ток, а энергию (ток*время). Тогда получится, что выгоднее "быстро пробежать и раньше лечь спать".

23 мкА в режиме сна

В коде Meteo TX - не вижу настроек портов ATmega328. После сброса - они все настроены как входы и могут давать лишнее потребление при флуктуациях входного уровня. Можно, например, в начале настройки записать 0xFF во все регистры PORTx (включение встроенных подтягивающих резисторов).

здесь - нет. основной расход - опрос датчика и отправка данных радиоканалом.

Что "нет"? Первое, второе, оба?

Да, первое конечно. Забыл цитирование вставить.

Если экономить по-настоящему, то нужно rtc-кварц цеплять и ключи на питание радио модуля и датчика - выйдет меньше микроампера.

В моём случае активный режим длится строго фиксированное время — 2 секунды независимо от частоты. Поскольку время работы одинаково, я сравнивал именно ток потребления. При 1 МГц он оказался минимальным, что и определило выбор.

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

Обязательно добавлю эту настройку — спасибо за ценный совет!

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

модель рассчитывалась как монолитная деталь из ABS-пластика

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

Конденсатор решает две задачи одновременно: он шунтирует на землю помехи, наведенные на сигнальный провод, и принудительно удерживает вход АЦП на том же потенциале, что и земля при её скачках, превращая помеху в синфазную.

Конденсатор на выводе (а не входе) AREF АЦП не имеет никакого отношения к сигнальному проводу от фоторезистора: см. datasheet, figure "Analog to Digital Converter Block Schematic Operation".

Самое главное, как уже говорили и не только здесь, экран Стивенсона абсолютно бесполезен при креплении на окно и вообще близко к стене здания.

А по поводу АЦП - вы правы, автору не хватает базовых знаний

В статье не стал детально описывать расчёт прочности. Помимо собственного веса конструкции, на верхнюю грань была добавлена нагрузка 400 г, что соответствует массе голубя или чайки.
Речь идёт не о конденсаторе на AREF, а о конденсаторе, подключённом к аналоговому входу параллельно фоторезистору. Он шунтирует помехи именно по сигнальной цепи, как и описано в тексте.

Речь идёт не о конденсаторе на AREF, а о конденсаторе, подключённом к аналоговому входу параллельно фоторезистору.

В таком случае этот конденсатор должен быть показан на схеме.
Кстати, в передатчике конденсатор на выводе AREF лишний, т.к. АЦП не используется.

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

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

2. Согласен, в передатчике он не нужен — поставил по привычке, так как в базовой станции АЦП используется

Вентиляция датчика

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

Сбоку, снизу - да

Сверху - +1 градус - легко

Ого! А почему +27 в доме?

Зачем все эти сложности с атмелом, nrf да ещё и ардуино кодом? Почему было не взять rfm68 и stm32l051? Камень, который специально заточен под low-power, прекрасный передатчик, которого хватит по уши для связи в пределах квартиры с низким потреблением в спящем режиме. И да, хотите большей автономности - ставьте ключи для отключения питания датчиков, пока контроллер спит.

p.s. сам лично собрал в данной связке передатчик с датчиком температуры и влажности. Все это чудо спит по 10 минут, просыпается, проверяет систему питания, подключает датчик, опрашивает , отправляет на станцию и уходит в сон. Потребление сейчас точно не помню, но на L серии я добился самого минимального из того что собирал до этого. Так же первая станция была с атмегой8 и nrf24 с одним исключением, писал все на низком уровне в winavr. Второй образец пробовал на stm32f103 - тоже не понравился. И вот последняя версия уже отлично себя показала, только руки не доходят придумать вид базовой станции. Куча мыслей с реализацией- и ли просто с экраном, или с ethernet и подключением по mqtt к домашнему серверу, или просто выкинуть на народный мониторинг..

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации