Снижение потребления LoRa ноды (TPL5010/TPL5110)

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


От переводчика. В этой статье автор исследует тему снижения тока потребления беспроводной LoRa ноды при помощи использования специализированных микросхем семейства нано-потребляющих таймеров TPL5010/TPL5110. Плюс затрагивает вопрос влияния Arduino загрузчика на время жизни батарейных сенсоров. Статья будет интересна тем, кто интересуется методами снижения энергопотребления батарейных устройств.

Ноды с очень низким энергопотреблением


Снижению потребления тока в режиме сна LoRa узлов уделяется большое внимание, очевидно, чем оно меньше, тем лучше, но является ли сам по себе уровень потребления тока в режиме сна определяющим фактором?

При работе типовой ноды на базе микроконтроллера ATmgea328P или 1284P и LoRa модулем в режиме глубокого сна, ток потребления ноды составляет около 0,2 мкА (пробуждение происходит по прерыванию). Если для питания ноды использовать LDO регулятор, например MCP1700 и специализированную микросхему TPL5010 в качестве Watchdog и таймера пробуждения по прерываниям, то общий ток потребления ноды в режиме сна составит около 1,5 мкА.

Примечание переводчика. Для справки ниже представлена типовая схема включения нано-потребляющего таймера с функцией Watchdog TPL5010.


Популярной альтернативой использованию режима глубокого сна является применение специализированной микросхемы TPL5110, которая позволяет полностью отключать питание ноды на время от нескольких секунд до двух часов, ток потребления в этом случае составляет менее 0,1 мкА. На первый взгляд, это значительно лучше по сравнению с 1,5 мкА в случае ATmega328 в режиме глубокого сна, но так ли это? Является ли концепция использования глубокого сна наилучшим способом снижения общего энергопотребления ноды?

Взгляните на график ниже, он показывает (верхний график) подачу питания на GPS-трекер, сделанный на базе Arduino Pro Mini. Нижняя кривая показывает установку GPIO в высокий уровень в тот момент, когда программное обеспечение трекера инициировало отправку LoRa пакета, поэтому разница обусловлена в основном временем пробуждения MCU. Задержка по времени от момента включения питания трекера до готовности к отправке пакета составила 1512 мс, в основном из-за задержки загрузчика Arduino. Потребляемая мощность системы в течение 1512 мс составила 5,42 мА.

Задержка из-за загрузчика Arduino

Примечание переводчика. Тут ещё нужно не забывать, что кроме собственно потребления нодой в режиме сна есть ещё энергетические затраты на передачу LoRa пакетов, что, в зависимости от настроек LoRa и интенсивности беспроводной работы может составлять значительную долю энергозатрат.

Теперь сравните аналогичную ситуацию, когда нода трекера переводится в глубокий сон и просыпается по прерыванию от таймера, например TPL5010. «Голый» Arduino контроллер (aka доработанный Arduino Pro Mini) с приличным LDO регулятором питания и LoRa модулем имеет ток глубокого сна около 1,5 мкА. Обратите внимание на время, необходимое для пробуждения от глубокого сна и готовности отправки LoRa пакета в этом случае.

Пробуждение из состояния глубокого сна

Здесь верхний график показывает как прерывание выводит трекер из глубокого сна, а нижний — готовность ноды к отправке LoRa пакета. В этом случае задержка составляет мизерные 4,5 мс.

Таким образом, пробуждение из состояния глубокого сна происходит намного быстрее (4,5 мс против 1512 мс), но экономит ли энергию более быстрое время загрузки?

Здесь проще считать цифры в мкА/с, а не в мАч, и смотреть на цифры за день. Предположим, что наш трекер отправляет данные каждые 10 минут или 144 раза в день.

Нода с отключением питания на TPL5110


Узел, оснащенный микросхемой TPL5110, имеет ток потребления во время сна примерно 0,1 мкА, поэтому за день в этом режиме он использует 0,1 x 60 x 60 x 24 = 8640 мкА/с.

При каждом пробуждении он использует 1,512 x 5420 = 8185 мкА/с за пробуждение.

Таких передач 144, то есть это 1180086 мкА/с в день.

Всего наш узел на TPL5110 использует 8640 + 1180086 = 1188726 мкА/с в день во время сна и пробуждения, или 0,33 мАч в день.

Нода с пробуждением от глубокого сна на TPL5010


Узел, оборудованный TPL5010, имеет ток сна 1,5 мкА, поэтому за день в этом режиме он потребляет 1,5 x 60 x 60 x 24 = 129600 мкА/с.

При каждом пробуждении он использует 0,0045 x 5420 = 24,4 мкА/с за пробуждение.

Таких передач 144, то есть 3513 мкА/с в день.

Таким образом, узел использует 129600 + 3513 = 133113 мкА/с в день во время сна и пробуждения, или 0,037 мАч в день.

Загрузчик Arduino


Разумеется, нам не обязательно использовать Arduino bootloader для загрузки скетчей, мы можем напрямую использовать ISP программатор, хотя это и менее удобно.

Включение ноды без загрузчика Arduino

Здесь задержка между подачей питания на контроллер и готовностью к отправке пакета намного меньше: 120 мс (а не 1512 мс).

Другие преимущества TPL5010


TPL5010 можно задействовать и как сторожевое устройство (Watchdog): если ваш микроконтроллер перестанет посылать контрольные импульсы, то произойдет его автоматическая перезагрузка, что является полезной защитой от сбоев программного обеспечения или ошибок, вызванных проблемами с питанием.

Еще одно преимущество использования TPL5010 заключается в быстром выходе микроконтроллера из глубокого сна. При 4,5 мс становится возможным, например, настроить TPL5010 на одноминутный интервал пробуждения микроконтроллера, а затем просто подсчитать прерывания, чтобы получить программируемое время пробуждения. Например, цикл в 10 прерываний даст вам 10-минутное пробуждение без необходимости замены времязадающего резистора TPL5010.

Примечание переводчика. Здесь нужно учитывать, что номинал времязадающего резистора имеет свою погрешность и при помощи него невозможно выставить точный временной интервал срабатывания TPL5010 (до миллисекунд и микросекунд). Поэтому подобный псевдотаймер будет постоянно накапливать ошибку отсчёта времени.

Заключение


При использовании TPL5110 для выключения питания (в случае контроллера с Arduino загрузчиком) нода совокупно потребляет 0,33 мАч в день, а при использовании TPL5010 и режима прерываний, нода потребляет только 0,037 мАч в день. Таким образом, можно добиться значительной экономии энергии, используя (доработанную Pro Mini) Arduino и TPL5010 в качестве таймера пробуждения. Если вы не будете использовать Arduino загрузчик, то выбор между этими двумя методами будет невелик, хотя TPL5010 обеспечивает ещё и дополнительные возможности (функцию сторожевого таймера для ваших устройств).

Источник: https://habr.com/ru/companies/timeweb/articles/766914/


Интересные статьи

Интересные статьи

Если вы занимаетесь сбором данных на обширной территории, да еще не охваченной интернетом, возникает задача передачи данных на расстояния, исчисляемые километрами без использования WiFi и сети Ethe...
Ранее мы писали о внедрении LoRaWaN в аграрном секторе. Часть первая Часть вторая По оценкам многих компаний в ближайшие 2 года сельхозпредприятия станут одними из основных потребите...
Есть ощущение, что про эпидемию COVID-19 сейчас вещают из каждого утюга. В этом плане Хабр радует хорошими постами с нормальными источниками и конструктивным обсуждением. Я тоже решила подели...
Безопасность LoRaWAN LoRaWAN это дальнобойный и при этом низко энергозатратный (Low Power, Wide Area – LPWA) сетевой протокол, разработанный для беспроводного соединения устройств, питающихся от...
Концепция переноса обработки сигналов в облако не нова. Во-первых, VRAN (virtual radio access network) это основной способ построения сети операторов сотовой связи. Во-вторых, IoT-сеть компании S...