Устройства MySensors на батарейном питании

499Эта музыка будет вечной если я заменю батарейки ©

Это опус посвящен моим изысканиям по питанию автономными беспроводными устройствами, входящими в систему умного дома MySensors/MajorDoMo.

Сперва был литий…

Вернее литий-ионные и литий-полимерные аккумуляторы.

Долгое время эти аккумуляторы от старых гаджетов копились в ящике. Думал — вот оно, универсальное питание для всех малогабаритных микроконтроллеров. Тем более, напряжение 3.3-4.2В отлично подходит как для AVR, так и для всяческих ESP и STM. Для надежности можно поставить LDO стабилизатор нужной мощности и получить стабильные 3.3 для МК и всей периферии.

500

Но как оказалось, не все так хорошо.

  1. Аккумуляторы требовалось заряжать. Для этого нужно было делать их съемными, либо добавлять в свое устройство модуль зарядки, что, в свою очередь, давало дополнительную стоимость, габариты и отверстия для зарядки в корпусе. Да и не всегда удобно заряжать устройства, например, погодный сенсор за окном.
  2. Литиевые аккумуляторы (как и вообще большинство источников питания) не годятся для  работы при отрицательных температурах. В погодном сенсоре, закрепленном за окном, зимой в мороз аккумулятор садился сразу.
  3. При длительной эксплуатации если вовремя не отследить напряжение аккумулятора, можно разрядить его «в ноль», то есть ниже допустимого значения, что гарантировано его убьет. Значит нужны средства защиты от переразряда.
  4. Разнообразие размеров и емкости аккумуляторов значительно ограничивали повторяемость устройств в одинаковых корпусах. Да и запасы старых аккумуляторов ,быстро подошли к концу — в результате нужно было покупать где то новые. И, как оказалось, стоимость таких источников питания оказалась совсем не копеечной и добавляла как миниум $2 к стоимости каждого устройства (а с учетом платы зарядки и больше). Причем экономии от перезаряжаемости не было, так как большинство автономных контроллеров потребляли очень мало энергии и могли работать долгие месяцы без перезарядки.

NiMH и прочие AA/AAA аккумуляторы были еще хуже. Их обязательно нужно было заряжать в специальном заряднике, они имели имели «эффект памяти» и изначально низкое напряжение (1.2-1.3В), а при последовательном включении из  за разности внутреннего сопротивления одна из батарей могла разрядиться сильнее других, что опять же приводило к ее порче.

И вновь литий …

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

Батарейки CR2032 применяются во огромном количестве BIOSов компьютеров, электросчетчиков и прочих устройств с RTC, наручных часах, калькуляторах и различных игрушках. При маленьких габаритах и невысокой цене они имеют 3.0В напряжения, вполне достаточного для МК и приличную для своих габаритов емкость 200-250мА/ч.

501

Но опять проблемы. Дело в то. что постоянный ток такой батарейки всего 0.4А. Если нагрузить ее более высоким током, напряжение батареи будет падать, хотя потом может частично или полностью восстановиться. Типовой контроллер Mysensor в режиме сна потребляет несколько микроампер. Но вот в режиме передачи — уже порядка 15-20мА. При этом новые версии библиотеки MySensors заставляют устройства посылать много пакетов — пинг, приветствие, презентации, поиск шлюза или маршрутизатора что выливается в длительную, порой в несколько секунд, работу радиомодуля. При напряжении около 2В дешевые китайские NRF24L01 начинают глючить, при этом иногда даже не получается увести их в режим сна sleep() от MySensors.

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

В зависимости от производителя и «свежести» батареи устройство может проработать от пары дней до месяца. Если покупать дешевые батарейки на алиэкспресс — то и вовсе лотерея. Немного спасает переход на более емкие CR2450 и CR2477, но и они длительно отдавать ток более 0.5мА не умеют.

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

Пальчики — мизинчики

502

Пора бы уже успокоится и перенять «передовой» китайский опыт, питать все свои устройства от трех AAA (батарейки в комплект не входят). Но же решил поискать решение хотя бы с двумя 1.5 вольтовыми  батарейками .

Остановился на такой схеме с повышающим стабилизатором NCP1400:

Схема1

Две последовательно включенные щелочные батареи ААА дают изначально 2.7-3.1В к концу продуктивного периода снижая напряжение до 2В

При отключенном NCP1400 (низкий уровень на управляющем входе) питание от батарей сразу поступает на МК через катушку L1 и диод шоттки D1 с минимальным падением напряжения около 0.1В.  Если на управляющий вход подать высокий уровень, то запускается стабилизатор NCP1400 и выдает на МК напряжение 3.3В при суммарном напряжении батарей от 0.8В до 3.1В.

Алгоритм работы такой:

  • Основное время контроллер находится в PowerDownMode, вся периферия, включая NRF24 отключена или также находится в режиме низкого энергопотребления.
  • Выходит МК из режима сна по прерыванию от таймера либо внешнему прерыванию (например в выключателях по прерыванию от кнопки), мерит напряжение питания VCC (встроенная функция AVR контроллеров).
  • Если напряжение питания больше 3В (или другого напряжения, достаточного для стабильной работы периферии), то NCP1400 не запускается и вся обработка ведется при этом напряжении питания до следующего цикла сна.
  • Если напряжения ниже 3В, то запускается стабилизатор NCP1400, устанавливается напряжения питания 3.3В, выполняются все регулярный обработки устройства включая отправку данных через NRF24
  • Далее, если напряжения выше 1.7В (достаточное напряжения для выхода МК из режима сна), то NCP1400 отключается до следующего цикла пробуждения.
  • Если напряжение менее 1.7, то NCP1400 не отключается до перезагрузки контроллера или до снижения напряжения питания ниже 0.8В (напряжения работы NCP1400)

Скетч данного алгоритма:

Тестирование

А как у нас состоит дело на практике с потреблением тока? Подключаю свою схему к ЛБП и делаю замеры тока потребления и напряжения на выходе.

505

Ток холостого хода при выключенном NCP1400 и входном напряжении питания 1-3В составил 0.3мкА. Даже ниже заявленного по даташиту 0.5мкА (а может на таком диапазоне у меня приборы дают большую погрешность). А вот при включенном стабилизаторе без нагрузки ток оказался неожиданно большим — более 0.3мА. Оказалось, большое потребление вызывал подтягивающий резистор R1. Заменив номинал R1 с 10К до 150К получил следующие значения:

 Uвходное,В  Uвыходное,В  I,мкА
1 3,28 44
2 3,3 35
3 3,3 30

Если совсем убрать резистор R1, то стабилизатор при отсутствии подключения этого входа к МК будет постоянно включенным  потребляя  при входящих 2В порядка 11мкА.

Теперь подключаю микроконтроллер с NRF24L01 и датчиком HUD21, работающим по выше описанному алгоритму:

 Uвход,В Режим Uвых,В I, мА
3 Активный, стаб. включен 3,3 32
3 Сон, стаб. выключен 2,92 0,009
2 Активный, стаб. включен 3,3 51
2 Сон, стаб. выключен 1,93 0,006
1,7 Активный, стаб. включен 3,3 63
1,7 Сон, стаб. выключен 1,52 0,006
1 Сон, стаб. включен 3,28 0,19
0,6 Сон, стаб. включен 3,27 0,33
0,5 Сон, стаб. включен 3,27 0,4

Как видно из таблицы — потребление от батареи в активном режиме растет при снижении питания. Напряжение 1.7В подобрано опытным путем. Ниже этого значения микроконтроллер уже может стабильно не работать. При снижении напряжения батареи ниже этого порога стабилизатор NCP1400 уже не выключается и потребление в режиме сна довольно высокое. В этом режиме батареи уже долго не проживут, но времени будет вполне достаточно для их замены.

Воплощение в железе

Спроектировал универсальные платки питания для моих устройств умного дома

3d-2

и закал партию на JLCPCB

503

И хотя готовые устройства получились не столь компактными как с литиевыми батарейками, результат меня вполне устроил. особенно учитывая стоимость щелочных батареек в магазинах Галомарт, Касторама, Леруаль и пр.

416

504

 

 

Вы можете оставить отзыв или трекбек со своего сайта.

7 комментариев на «Устройства MySensors на батарейном питании»

  1. Николай:

    Хороший тест, интересный блог.
    Дружище, глянь в свою публикацию на Habr.
    При описании алгоритма работы NCP1400 не очепятка? Речь идёт ведь о NCP1400, а не о NRF1400?
    Я вообще то новичок, поэтому там прокомментировать не могу, пишу здесь

  2. Вадим:

    Спасибо, познавательно. Всегда с интересом читаю Ваши публикации.
    Есть опечатки в статье, но из существенных — эта: «Дело в то. что постоянный ток такой батарейки всего 0.4А.»

  3. Святослав:

    Интересная статья
    А что за библиотека MySensors.h ?
    А ссылки на 3D-файлы будут?

    И хотелось бы узнать что за последние две фотографии? На них показаны коробки, о которых в статье ни слова.

  4. Дмитрий:

    Очень интересно, но есть один вопрос! 1.7В для ввхода из сна это как? В даташитах на 8МГц минимальное напряжение работы — 2.7В? Ваш контроллер работает на пониженной частоте? На какой? 1МГц? А как к этому относиться библиотека mysensors? В частности вывод сообщений в дебаг? Насколько я знаю там скорость 115200 бод, а на частоте работы 1 МГц эту скорость не обеспечить.

    • Alexey:

      На напряжении ниже 2.7В повышайка уже работает в постоянном режиме и в режиме сна тоже, что безусловно срок уменьшит службы батареи, но зато позволит их «высосать» практически в 0
      Когда контроллер не спит, напряжения на периферии всегда 3.3В с работающим преобразователем, либо без него, если на входе напряжения хватает

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.