На склад поступили жидко-кристаллические индикаторы и дисплеи от KSE
РадиоЛоцман - Все об электронике

Создание Wi-Fi-устройств с ультранизким потреблением для IoT

В большинстве случаев устройства, предназначенные для Интернета вещей (IoT), должны обладать ультранизким потреблением из-за ограниченной емкости источника питания. При этом одни IoT-устройства работают от батареек, которые необходимо периодически заменять, а другие используют харвестеры энергии, мощность которых также ограничена и зависит от внешних условий (свет, ветер, тепло и т. д.). Таким образом, в обоих случаях важно обеспечить ультранизкий уровень собственного потребления.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

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

В данной статье рассказывается об использовании микросхем Silego GreenPAK для построения систем пробуждения IoT-устройств с Wi-Fi модулем. Микросхемы GreenPAK помогают минимизировать потребление в спящем режиме. Для этого GreenPAK берет на себя некоторые функции микроконтроллера (МК), пока тот находится в режиме ожидания. В самом простом случае от микроконтроллера к GreenPAK поступает сигнал активации режима сна, а от GreenPAK к микроконтроллеру – сигнал пробуждения (или сигнал отключения питания, в зависимости от типа МК). Для подключения к сети Wi-Fi был выбран недорогой Wi-Fi-приемопередатчик ESP8266. Схема его подключения показана на Рисунке 1.

Схема IoT-устройства с Wi-Fi-приемопередатчиком ESP8266
Рис. 1. Схема IoT-устройства с Wi-Fi-приемопередатчиком ESP8266.

Управление питанием ESP8266

Модуль ESP8266 от компании Espressif Systems – недорогой Wi-Fi приемопередатчик с встроенной поддержкой стека TCP/IP. Этот компактный модуль позволяет микроконтроллерам подключаться к сети Wi-Fi и создавать простые соединения TCP/IP с использованием AT-команд. Компания Espressif также выпустила пакет для разработки ПО (SDK), который позволяет программировать модуль приемопередатчика, устраняя необходимость в отдельном микроконтроллере. Модули ESP8266 зарекомендовали себя в качестве надежной, недорогой сетевой платформы для создания IoT-приложений. Гибкость и цена приемопередатчика ESP8266 сделали его чрезвычайно популярным.

Приемопередатчик ESP8266 был разработан специально для мобильных устройств, носимой электроники и IoT-приложений. Благодаря использованию нескольких патентованных технологий, он отличается низким потреблением. ESP8266 имеет три режима работы: активный режим (active mode), спящий режим (sleep mode) и режим глубокого сна (deep sleep mode); их использование позволяет увеличить длительность работы от батареи. В Таблице 1 показаны различия между спящими режимами и режимом ожидания (Power Down).

Таблица 1. Режимы пониженного потребления ESP8266
Блок Режим пониженного потребления
Modem Sleep Light Sleep Deep Sleep Power Down
Wi-Fi выкл выкл выкл выкл
Тактирование вкл выкл выкл выкл
RTC вкл вкл вкл выкл
Процессорное ядро вкл Pending выкл выкл
Ток 15-16 мА 0.5-2 мА 20-80 мкА 1 мкА

В режиме глубокого сна Deep Sleep модуль ESP8266 отключает Wi-Fi и проводной интерфейс и оставляет в активном состоянии только часы реального времени RTC для периодических пробуждений. В этом случае потребление снижается до 20-80 мкА, в зависимости от параметров конфигурации. В режиме ожидания Power Down выключается даже модуль RTC. Это означает, что сигнал пробуждения должен быть внешним, при этом потребление тока уменьшается до 1 мкА.

Реализация схемы пробуждения

Использование режима ожидания Power Down с выключенным RTC совместно с внешней микропотребляющей схемой пробуждения помогает значительно снизить потребление системы в спящем состоянии. Если внешняя схема пробуждения строится на базе микросхемы GreenPAK, то RTC можно отключать на время сна, уменьшая ток потребления с 50 мкА до 5 мкА (от 2 мкА до 10 мкА, в зависимости от типа микросхемы GPAK). Таким образом, общий ток в состоянии сна оказывается примерно в 10 раз меньше, чем при использовании режима глубокого сна Deep Sleep с включенным RTC.

Существует несколько отладочных наборов для работы с ESP8266. Самыми популярными являются NodeMCU, Adafruit Feather и SparkFun Thing. В данном случае использовалась плата Adafruit Feather Huzzah, хотя подойдет и любая другая с доступным выходом CHPD и тремя портами ввода-вывода (один для SLEEP и два для I2C).

Схема пробуждения напрямую подключается к микроконтроллеру, как показано на Рисунке 2. Такое подключение применимо ко всем микроконтроллерам с входом выключения Power Down. Линии SDA и SCL используются для связи по I2C. Интерфейс I2C является необязательным и нужен для задания длительности периода сна. POFF – выход выключения питания.

Подключение микросхемы GreenPAK к микроконтроллеру
Рис. 2. Подключение микросхемы GreenPAK к микроконтроллеру.

Демонстрационная схема на базе GreenPAK SLG46537V и Feather Huzzah ESP8266 показана на Рисунке 3. В ней используется кнопка принудительного пробуждения (EWU) и дополнительный вывод для передачи информации об источнике последнего пробуждения (LWC).

Стоит отметить, что вывод GPIO16 приемопередатчика ESP8266 подключен к выводу RST для активации режима глубокого сна Deep Sleep. Схема пробуждения на базе GreenPAK совместима с другими режимами пониженного потребления ESP8266. По сути, использование GreenPAK добавляет еще один спящим режим, который можно назвать «ультраглубоким сном» Ultra Deep Sleep. Все существующие варианты сна – «Modem Sleep», «Light Sleep» и «Deep Sleep» остаются без изменений. Они будут работать с теми же параметрами и производительностью.

Подключение GreenPAK к отладочной плате Huzzah Adafruit Hushah ESP8266
Рис. 3. Подключение GreenPAK к отладочной плате Huzzah Adafruit Hushah ESP8266.

Временная диаграмма работы предложенной схемы представлена на Рисунке 4. Для ясности сигналы показаны в положительной логике.

Временная диаграмма работы рассматриваемой схемы
Рис. 4. Временная диаграмма работы рассматриваемой схемы.

Программирование длительности периода сна

При использовании встроенного режима Deep Sleep разработчик программно устанавливает значение таймера RTC для пробуждения. Аналогичную функцию можно реализовать с помощью интерфейса I2C микросхемы GreenPAK. Модуль ESP8266 будет задавать продолжительность периода сна, записывая значения в регистр CNT/DLY микросхемы GPAK.

Библиотека Arduino ESP8266 содержит функцию для активации режима Deep Sleep, позволяющую программисту легко задавать длительность периода сна:

ESP.deepSleep(sleepTime);

где sleepTime задается в микросекундах.

Для нового режима Ultra Deep Sleep предусмотрена альтернативная функция:

ultradeepSleep(sleepTime);

где sleepTime также задается в микросекундах.

При выполнении этих функций модуль ESP8266 установит сигнал активации сна на выводе GPIO, определенном в строке:

#define ULTRADEEPSLEEPPIN 12

Программное обеспечение для обмена по I2C использует библиотеку Silego для I2C-команд GreenPAK5, созданную Дэвидом Риделлом (подробную информацию об этой библиотеке Arduino можно найти в руководстве AN-1107: How to Use Silego's Arduino Library with GreenPAK).

Кроме того, предусмотрены дополнительные функции для запуска режима Ultra Deep Sleep по I2C и чтения текущей настройки таймера:

void ultradeepSleep_I2C(sleepTime);

int readSleepTime();

Активация сна происходит по срезу сигнала управления. Поэтому, если вы активируете режим Ultra Deep Sleep по I2C, не забудьте после пробуждения сбросить сигнал управления (установить высокий уровень):

silego.writeI2C(VIRTUAL_INPUTS, 0x01);

Передача функций микроконтроллера микросхеме GreenPAK

Микроконтроллер может передавать часть своих функции микросхеме GreenPAK, чтобы она выполняла их, пока МК находится в режиме сна. Реализация таймера пробуждения является первой такой функцией.

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

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

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

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

Для того чтобы начать процедуру выключения, IoT-устройства с батарейным питанием должны знать, когда аккумулятор почти разряжен. Если микроконтроллер периодически просыпается для измерения напряжения батареи, это сокращает срок службы аккумулятора. В то же время, если разработчик использует длительные периоды сна для экономии энергии, момент разряда батареи может быть пропущен. Функцию мониторинга питания просто реализовать с помощью GreenPAK благодаря встроенным аналоговым компараторам (ACMP). GreenPAK просто разбудит микроконтроллер, когда будет достигнуто пороговое напряжение источника питания. Встроенный компаратор ACMP потребляет значительный ток, если он всегда включен. Однако ток может быть уменьшен до микроамперного диапазона за счет чередования режимов пробуждения и сна, как показано в руководстве AN-1025: 1.0 µA Battery Voltage Monitor.

Разработчики могут придумывать свои собственные функции для разгрузки микроконтроллера, например, отслеживание напряжения нескольких источников питания или управление датчиками во время сна, чтобы данные от датчиков были готовы к чтению сразу после пробуждения МК. Благодаря GreenPAK простые, но критичные функции IoT-устройства остаются активными, даже если запаса мощности не хватает для запуска микроконтроллера.

Определение источника последнего пробуждения

В некоторых IoT-приложениях пользователям необходимо знать, какой из источников вызвал последнее пробуждение, например, для статистики или в других целях. Поскольку микроконтроллер на момент выхода из спящего режима сам находится в состоянии сна, он собственными силами не способен определить причину пробуждения. Микросхема GreenPAK хранит эти данные с помощью триггера, и МК может вычитывать их при запуске или в другое удобное время. В предложенной схеме микроконтроллер считывает информацию об источнике пробуждения либо на выводе GPIO, либо по интерфейсу I2C:

int readLastWakeupCause();

int readLastWakeupCause_I2C();

Если для получения данных используется вывод GPIO, то его местоположение определяется в строке:

#define LASTWAKEUPCAUSEPIN 13;

Внутренняя схема GreenPAK

Базовая схема пробуждения включает в себя таймер с программируемой продолжительностью сна и кнопку для ручного пробуждения. Соответствующая внутренняя структура GreenPAK представлена на Рисунке 5.

Внутренняя схема GreenPAK
Рис. 5. Внутренняя схема GreenPAK.

Состояние устройства (сон/бодрствование) хранится в блоке DFF, поэтому сон может быть прерван внешним сигналом (например, от кнопки). Состояние на выходе DFF соответствует сигналу nPOFF (управление питанием): 1 = бодрствование/ включение питания, 0 = сон/ выключение питания.

Таймер пробуждения построен с помощью блока с однократным запуском CNT/DLY, выполняющим заданную задержку. Когда таймер заканчивает счет, он формирует низкий уровень сигнала на входе nSET блока DFF, чтобы установить логическую единицу на выходе DFF/nPOFF и пробудить микроконтроллер.

Длительность нахождения в активном режиме не определена, поэтому период сна начинается по спаду сигнала на входе SLEEP. Срез сигнала инвертируется для сброса блока DFF и перехода в спящее состояние. В данном случае полярность сигналов настроена под ESP8266 и может быть легко изменена в соответствии с другими микроконтроллерами или модулями.

Дополнительные логические вентили нужны для управления альтернативными триггерами активации сна (по сигналу на входе GPIO или по сообщению I2C) и триггерами пробуждения (от внешней кнопки или по таймеру). Один дополнительный блок DFF фиксирует причину пробуждения: 0 = внешнее пробуждение, 1 = пробуждение по таймеру.

Основные особенности предлагаемого решения:

  • Схема позволяет активировать спящий режим, используя как вывод SLEEP, так и I2C;
  • Длительность периода сна программируется по I2C;
  • Возможно ручное пробуждение с помощью внешней кнопки;
  • На входе пробуждения от внешней кнопки используется фильтр для защиты от дребезга;
  • Постоянная времени фильтра также программируется через I2C;
  • Микроконтроллер может считывать текущее значение периода сна по I2C;
  • Внутренний генератор работает только во время сна и не потребляет в активном состоянии;
  • Схема не требует внешних компонентов;
  • GreenPAK хранит причину последнего пробуждения и сообщает об этом микроконтроллеру;
  • Микроконтроллер может считывать причину последнего пробуждения на выводе GPIO или по I2C.

Схема была реализована с помощью SLG46537V, но так как она является достаточно простой, ее можно уместить во всех микросхемах GreenPAK с поддержкой I2C. Если отказаться от I2C, схему можно реализовать с помощью любой микросхемы GreenPAK. При этом функции таймера пробуждения и обработки источников пробуждения сохранятся.

Несложно заметить, что предложенная схема будет игнорировать команды активации сна, пока сигнал внешнего пробуждения будет активным. Другими словами, если удерживать кнопку пробуждения нажатой, то микроконтроллер не перейдет в состояние сна. Однако это не помешает ему использовать другие режимы пониженного потребления, такие как Deep Sleep или Light Sleep. Как только кнопка будет отпущена, система перейдет в режим сна.

Модернизация и оптимизация базовой схемы

Если необходима фиксированная длительность сна, и не требуется принудительного ручного пробуждения, то схема может быть упрощена. Простой таймер пробуждения, упакованный в крошечную микросхему SLG46108V, представлен на Рисунке 6. Стоит отметить, что хотя SLG46108V является самой маленькой микросхемой семейства GreenPAK, в ней все еще остается достаточно свободных блоков для реализации функции внешнего пробуждения с фильтром от дребезга.

Упрощенная схема таймера пробуждения
Рис. 6. Упрощенная схема таймера пробуждения.

Если количество выводов GPIO ограничено, и схема уже использует I2C-интерфейс для связи с другими периферийными устройствами, то можно избежать использования вывода SLEEP за счет линий I2C. Просто удалите вход SLEEP и подключите вход таймера к I2C. Обратите внимание, что GreenPAK с поддержкой I2C имеет параметр «One Shot» для блоков CNT/DLY, поэтому DFF не нужен, и весь таймер пробуждения может быть реализован с помощью всего двух блоков, сохраняя функцию программирования продолжительности сна по I2C.

Представленная демонстрационная схема отключает микроконтроллер сразу же после приема сигнала активации сна. Если приложение требует некоторой задержки (например, чтобы успели пройти отладочные сообщения), ее легко добавить, используя блок DELAY на входе SLEEP.

Предложенная схема пробуждения может быть использована не только с приемопередатчиками ESP8266, но и с другими беспроводными модулями/ микроконтроллерами, например, платами Particle Photon или Raspberry Pi. Для микроконтроллеров и модулей, не имеющих специального вывода отключения питания, можно отключать питание аппаратно с помощью силового ключа PFET, встроенного в некоторые микросхемы GreenPAK. Например, SLG46116V/117V или SLG46125V.

Характеристики и эффективность предложенной схемы

Эффективность схемы в первую очередь определяется продолжительностью сна и потребляемой мощностью. Характеристики разных микросхем GreenPAK представлены в Таблице 2.

Поскольку длительность минимального периода сна находится в микросекундном диапазоне для всех моделей GreenPAK, в Таблице 2 этот параметр не указан. Кроме того, в реальных приложениях такие короткие периоды сна, как правило, не применяются. При необходимости длительность сна может быть уменьшена для любой микросхемы GreenPAK за счет использования генератора 2 МГц (вместо 25 кГц или LF OSC).

В первой строке Таблицы 2 приведены характеристики рассматриваемой демонстрационной схемы на основе SLG46537V. Характеристики аналогичных схем на основе других моделей GreenPAK являются расчетными.

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

Таблица 2. Характеристики схемы
Наименование Длительность периода сна Точность I2C Ток потребления PFET
макс. (1) Разрешение (2) Условие (3) при 25°С (4) абсолютная (5) ton (6) toff (7)
лет мс лет % % мкА мкА А
SLG4653xV >100 0.04 >100 ±2.5% ±12% да 6.6-8.4 0.6-0.8 нет
SLG46108V
SLG46110V
~ 2 10 4 дня ±2.2% ±8% нет 6.1 0.5 нет
SLG46116V
SLG46117V
~ 2 10 4 дня нет 5.3 0.8 1.25
SLG46140V >100 0.5 >100 ±20% ±20% нет 0.7 0.2 нет
SLG4662xV >100 0.5 >100 ±20% ±20% нет 1.3 0.4 нет
SLG4672xV >100 0.04 >100 нет 5.1 0.8 нет
SLG4658xV >100 0.04 >100 да 6.1 1 0.6

Примечания к Таблице 2:

  1. Максимальная продолжительность сна при каскадном соединении всех блоков CNT/DLY.
  2. Минимальное разрешение при отсутствии делителей тактового сигнала, кроме микросхем SLG46116V/7V и SLG46108V/10V, в которых для получения максимальной продолжительности времени сна используются делители /8 и /64.
  3. Максимальная продолжительность сна при каскадном соединении всех блоков CNT/DLY, за исключением одного, который используется для реализации входного фильтра для борьбы с дребезгом.
  4. Точность установки времени сна при температуре 25°C и напряжении питания 3.3 В ±10%. Данные основаны на характеристиках системы тактирования GreenPAK и приведены для ознакомления. Для получения более подробной информации следует обратиться к документации.
  5. Абсолютная точность установки времени сна в диапазоне температур –40… +85 °C и напряжении питания 1.8…5.5 В ±10%. Данные основаны на характеристиках системы тактирования GreenPAK и приведены для ознакомления. Для получения более подробной информации следует обратиться к документации.
  6. Расчетное потребление микросхемы GreenPAK при включенном таймере для напряжения питания 3.3 В. Для получения информации об уровне потребления при других напряжениях питания следует обратиться к документации.
  7. Расчетное потребление микросхемы GreenPAK при выключенном таймере для напряжения питания 3.3 В. Для получения информации об уровне потребления при других напряжениях питания следует обратиться к документации.

Из Таблицы 2 видно, что максимальная длительность сна оказывается практически неограниченной и составляет больше ста лет. Таким образом, ограничение на продолжительность сна следует учитывать только в том случае, если приложение использует часть блоков CNT/DLY для других целей. Стоит отметить, что в рассматриваемой схеме для таймера используется только один блок CNT/DLY, а максимальная продолжительность сна в этом случае составляет около 20 минут. Чтобы увеличить продолжительность сна, следует добавить дополнительные блоки CNT/DLY, и обновить соответствующую функцию ultradeepSleep (sleepTime).

Как видно из таблицы, существует возможность выбора некоторых компромиссных решений. Например, при использовании низкочастотного осциллятора LF микросхема SLG46140V дает погрешность 20%, зато ток потребления составляет 0.7 мкА. Если в качестве источника тактирования выбрать генератор 25 кГц, то точность возрастет, но потребление также увеличится до 5 мкА.

Можно отметить особую универсальность микросхем SLG4658xV. Они отличаются поддержкой I2C и наличием встроенного силового ключа PFET, в то время как их остальные характеристики остаются такими же, как и у других моделей GreenPAK.

Тестирование разработанной схемы

Для тестирования внутренней схемы GreenPAK использовался эмулятор, входящий в программный пакет GreenPAK Designer Development Suite. Для имитации входа активации сна применялся генератор логических сигналов. Вход пробуждения был настроен на режим «Кнопка» для имитации нажатия кнопки. Проект конфигурации первого теста был назван «Unit test».

Конфигурация тестового блока
Рис. 7. Конфигурация тестового блока.

В процессе отладки шина I2C использовалась для проверки состояний внутренних блоков схемы, в том числе для контроля счетчиков. Выходные сигналы, генерируемые схемой GreenPAK, были доступны на выводах отладочной платы GreenPAK Universal Development Board.

Для проведения испытаний IoT-узел на базе ESP8266 был собран на макетной плате и подключен к отладочной плате GreenPAK Universal Development Board с помощью соединительных проводов. Для измерения параметров окружающей среды использовался популярный датчик температуры/ влажности DHT22, который подключался к плате Adafruit Feather Huzzah. Принципиальная схема тестовой схемы показана на Рисунке 8.

Окончательная схема испытаний
Рис. 8. Окончательная схема испытаний.

Уровень потребления микросхемы GreenPAK измерялся с помощью мультиметра Fluke 45. Питание отладочной платы GreenPAK Universal Development Board осуществляюсь от внешнего источника.

Схема испытания представлена на Рисунке 9.

Фотография тестового стенда
Рис. 9. Фотография тестового стенда.

Для проведения тестов использовалась платформа Adafruit IO, совместимая с отладочной платой Adafruit Feather Huzzah ESP8266. Руководство по подключению к Adafruit IO можно найти на веб-сайте Adafruit.

Сервисная платформа Adafruit IO IoT
Рис. 10. Сервисная платформа Adafruit IO IoT.

Испытания проводились с датчиком температуры/влажности DHT22 (см. прилагаемый код IDE Arduino). Код программы построен таким образом, что модуль ESP8266 переходит в спящий режим сразу после передачи данных о температуре/ влажности, поэтому выполняется только один из трех тестов. Для выбора конкретного теста необходимо закомментировать оставшиеся строки кода.

Тест 1: Стандартный глубокий сон с интервалом в десять секунд: ESP8266 просыпается, собирает информацию о температуре и влажности, передает в Adafruit IO, а затем переходит в штатный режим Deep Sleep на десять секунд.

Тест 2: Ultra Deep Sleep с интервалом в десять секунд: алгоритм действий такой же, как и в тесте 1, но вместо штатного режима Deep Sleep используется Ultra Deep Sleep.

Тест 3: Ультраглубокий сон с длительностью одна/ две/ три…/десять секунд для проверки повторного программирования длительности сна: ESP8266 просыпается, собирает информацию о температуре и влажности, передает в Adafruit IO, считывает причину последнего пробуждения и текущую продолжительность сна, увеличивает его на одну секунду (максимум до десяти секунд) и переходит в режим Ultra Deep Sleep. Если причиной последнего пробуждения является пробуждение от внешнего источника, то длительность сна сбрасывается на одну секунду.

Стоит отметить, что в тесте 3 модуль ESP8266 должен прочитать текущее значение таймера от GreenPAK. Это связано с тем, что питание ESP8266 очищает все регистры, включая внутреннюю RAM RTC.

Программные тесты могут быть изменены по желанию пользователя.

// Test 1

// Standard deep sleep at 10 sec interval

Serial.println(F("ENTERING DEEP SLEEP MODE!"));

ESP.deepSleep(sleepTimeS * 1000000); //Sleep mode, for power save

// Test 2

// Ultra deep sleep at 10 sec interval

Serial.println(F("ENTERING ULTRA DEEP SLEEP MODE!"));

ultradeepSleep(sleepTimeS * 1000000); //Ultra Sleep mode, for ultra save

// Test 3

// Ultra deep sleep at 1,2,3..10 sec interval, external wakeup resets to 1

if (readLastWakeupCause()==LOW){

Serial.println(F("External wake-up ! Setting to 1."));

sleepTimeS = 1;

}

else {

sleepTimeS = readSleepTime();

if (sleepTimeS < 10) sleepTimeS++;

}

Serial.print(F("ENTERING ULTRA DEEP SLEEP MODE!"));

Serial.println(sleepTimeS);

ultradeepSleep(sleepTimeS * 1000000); //Ultra Sleep mode, for ultra save

В ходе испытаний был определен уровень потребления при использовании штатного режима глубокого сна ESP8266 (без участия GreenPAK) и при использовании схемы пробуждения на базе GreenPAK. Потребление SLG46537V при напряжении 3.2 В составило около 5 мкА, что почти на 40% ниже, чем значение 8.4 мкА, приведенное в документации. Измерения показали, что при использовании схемы пробуждения на базе GreenPAK потребление в режиме сна уменьшается примерно в 10 раз.

Выбор оптимальной микросхемы GreenPAK

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

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

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

Таблица 3. Выбор оптимальной микросхемы GreenPAK
Критерий выбора Базовый
функционал
С I2C С поддержкой двух уровней
напряжения питания
Со встроенным
силовым ключом
Минимальное потребление SLG46140V
0.7мкА@3.3В
SLG46533V
6.6мкА@3.3В
SLG46621V
1.3мкА@3.3В
SLG46116V/7V
5.3мкА@3.3В
Минимальная стоимость SLG46108V
$0.135
SLG46534V
$0.224
SLG46121V
$0.187
SLG46116V/7V
$0.241
Минимальный размер SLG46108V
1.0×1.2 мм
SLG46533V/4V/7V
2.0×2.2 мм
SLG46121V
1.6×1.6 мм
SLG46116V/7V
1.6×2.5 мм

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

Основные преимущества и коммерческая эффективность

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

Если необходимо получить уровень потребления меньше, чем позволяет самый экономный режим питания, например, ESP8266 потребляет не менее 50 мкА в режиме глубокого сна, то внедрение GreenPAK является экономически целесообразным решением. Дополнительный режим Ultra-low sleep позволяет увеличить срок службы батареи, снизить емкость источников питания и т. д.

Основными преимущества режима Ultra-low sleep перед интегрированными режимами пониженного потребления являются меньшее потребление в спящем состоянии и увеличенная длительность периода сна. Даже для микроконтроллеров с микроамперным потреблением в спящем режиме существуют некоторые функции, которые требуют периодических пробуждений. В таком случае средняя потребляемая мощность все равно будет выше, по сравнению с решением, в котором эти функции реализованы с помощью GreenPAK.

Основными преимуществами GreenPAK перед специализированными ИС являются: меньшая стоимость, отсутствие внешних компонентов, возможность программирования и большая продолжительность периодов сна. Например, таймер LTC2956 от Linear Technology обеспечивает высокую эффективность, но GreenPAK предлагает аналогичную эффективность и некоторые дополнительные функции за ту же цену.

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

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

Возвращаясь к рассмотренному выше варианту с модулем ESP8266, следует сделать одно замечание. Если продолжительность периода сна составляет менее двух секунд, то режим Light Sleep является более предпочтительным, чем Deep Sleep из-за малого времени пробуждения из режима Light Sleep (<3 мс). Если продолжительность периода сна составляет более двух секунд, то рекомендуется использовать режим глубокого сна. Аналогичное замечание относится к выбору между Deep Sleep и Ultra Deep Sleep. Модулю ESP8266 требуется две-три секунды для пробуждения из режима Deep Sleep или Power Down. Если приложение находится в режиме глубокого сна Deep Sleep менее ста секунд, то мощность, потребляемая во время сна, составляет менее 1% от общей потребляемой мощности, а выигрыш, получаемый от использования Ultra Deep Sleep, оказывается незначительным. Если длительность сна достигает нескольких часов, то за счет использования Ultra Deep Sleep общее потребление можно сократить на 50% и удвоить срок службы батареи. Таким образом, чтобы определить, является ли внедрение схемы GreenPAK Ultra Deep Sleep коммерчески обоснованным для конкретного приложения, необходимо проанализировать профиль потребления системы и оценить экономию энергии.

Заключение

Штатный режим глубокого сна (Deep sleep), реализованный в модулях ESP8266, обеспечивает потребление около 50 мкА. Микросхема GreenPAK используется для перевода модуля ESP8266 в режим ожидания (Power Down) с потреблением менее 1 мкА. При этом собственное потребление GreenPAK составляет 5 мкА при работе с тактовым генератором 25 кГц. Таким образом, общий ток в режиме сна оказывается в 10 раз меньше, чем при использовании штатного режима глубокого сна ESP8266.

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

Характеристики микросхемы SLG46537V:

  • Тип: однократно программируемая микросхема смешанных сигналов;
  • Память: 8 байт ОЗУ и однократно программируемое ПЗУ конфигурации;
  • Аналоговые функции: четыре компаратора, два ИОН, датчик температуры.
  • Цифровые функции: два фильтра, до 18 портов ввода/вывода, матрица соединений и комбинаторная логика, программируемая схема задержки, программируемый функциональный генератор, пять 8-битных счетчиков, два 16-битных счетчика;
  • Автомат состояний: 8 состояний;
  • Коммуникационный интерфейс: I2C;
  • Встроенные генераторы: 25 кГц, 2 МГц, 25 МГц;
  • Диапазон напряжений питания: 1.8…5 В;
  • Диапазон рабочих температур: –40…85 °C;
  • Корпусное исполнение: 2 × 3 × 0.55 мм STQFN-20, 2 × 2.2 × 0.55 мм STQFN-22.

Посмотреть более подробно технические характеристики микросхем от Silego

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Пример с ESP8266 явно неудачный. Во-первых, потребление в режиме Deep-Sleep не более 20 мка (ESP12 не более 17 мка). Во-вторых, для организации сна проще применять таймер TPL5110 (TPL5111) ток потребления которого 0.035 мка, т е в 50 раз меньше и цена в 4 раза меньше, чем у SLG46537V. Программировать в TPL ничего не требуется.