AVR-микроконтроллеры picoPower компании Atmel с ультранизким потреблением
В современных приложениях микроконтроллеров все большее значение придается потребляемой ими мощности. Многие приложения используют батарейное питание или питание от линии связи. Все эти разработки объединяет общее требование — малая потребляемая мощность, но при этом достаточная производительность. Для соответствия этим требованиям компания Atmel анонсировала новые AVR-микроконтроллеры семейства picoPower с использованием энергосберегающей технологии, обеспечивающей работу устройства с батарейным питанием в течение нескольких лет без замены батареи. В статье приводятся технологические решения компании Atmel, реализованные в этих микроконтроллерах с целью снижения потребления.
Компания Atmel разработала технологию и архитектуру для достижения минимальных значений потребляемой мощности в индустрии — picoPower, она использована при создании новых 8-разрядных AVR-микроконтроллеров.
Энергосберегающие технологии picoPower в «спящем» режиме
«Реальное» питание 1,8 В
AVR-микроконтроллеры поддерживают напряжение питания в диапазоне от 1,8 до 5,5 В. «Реальное» питание 1,8 В означает, что все аналоговые модули, flash-память, EEPROM и ОЗУ работают при напряжении питания 1,8 В, позволяя получить меньшее потребление, а также работать при снижении напряжения батареи до 1,8 В.
Минимизированный ток утечки
Компания Atmel использует собственные технологические процессы, специально разработанные для маломощных приложений на основе многолетнего опыта. Ток утечки AVR-микроконтроллеров семейства picoPower имеет величину менее 100 нА.
Замена BOD (brown-out detector) на «спящий» BOD
Хотя малопотребляющие BOD (подобно применяемым в микроконтроллерах TI серии MSP430) могут дать значительное снижение потребляемого тока, главным их недостатком является низкая скорость реакции (до миллисекунды). Схема BOD, используемая в микроконтроллерах Atmel, имеет скорость реакции 2 микросекунды, но ее ток потребления составляет 20 мкА. Решением этой проблемы компанией Atmel в рамках технологии picoPower стало простое выключение схемы BOD тогда, когда в ней нет необходимости. В результате было получено минимальное потребление при максимальной производительности с точным детектированием напряжений 1,8, 2,7 и 4,5 В. Поэтому в режимах Extended Standby, Standby, Power Save и Power Down схема BOD AVR-микроконтроллеров серии picoPower может быть отключена.
Кварцевый генератор 32 кГц с ультранизким потреблением
Так как время работы микроконтроллера в активном режиме может быть незначительным по сравнению со временем в энергосберегающем режиме Power Save, ток потребления в этом режиме является важной характеристикой микроконтроллера. Последние разработки кварцевых генераторов AVR-микроконтроллеров позволили получить уменьшение потребляемого тока до величины, сравнимой с током потребления в режиме Power Down. При напряжении питания 1,8 В технология AVR picoPower позволила получить потребляемый ток на уровне 650 нА с включенным генератором 32 кГц и «спящим» BOD.
Энергосберегающие технологии picoPower в активном режиме
Главными факторами, влияющими на потребление микроконтроллера в активном режиме, являются частота переключения, нагрузочная емкость и напряжение питания. Ток потребления аналоговых модулей и ток утечки цифровой части оказывают малое влияние на ток потребления в активном режиме. Частота переключения может быть представлена с помощью количества логических элементов, переключающихся для выполнения поставленной задачи. Для минимизации тока потребления необходимо уменьшение количества логических элементов и количества их переключений. Для этого используется управление тактовыми сигналами (clock gating). AVR-микроконтроллеры имеют три уровня управления тактовыми сигналами.
1-й уровень— работа в «спящих» режимах
В режиме Idle отключается тактовый сигнал процессорного ядра и flash-памяти, в то время как периферия и система обработки продолжает функционирование.
В режиме ADC noise reduction АЦП продолжает работать, в то время как отключены тактовые сигналы большинства периферийных блоков, а также процессорного ядра и flash-памяти.
В режиме Power Down отключены все тактовые сигналы AVR, разрешен только асинхронный режим работы. Внешний генератор также остановлен.
Режим Power Save аналогичен режиму Power Down, за исключением того, что разрешена работа асинхронного таймера.
Режим Standby аналогичен режиму Power Down, за исключением того, что тактовый генератор продолжает работать.
Режим Extended Standby аналогичен режиму Power Save, за исключением того, что тактовый генератор продолжает работать.
2-й уровень— регистр управления мощностью
Вторым уровнем управления тактовыми сигналами является регистр управления мощностью (PRR — Power Reduction Register). Большинство периферийных модулей используется только на короткие периоды времени или вообще не используются. В регистре PRR содержатся контрольные биты, отключающие неиспользуемые периферийные модули с помощью отключения тактирования этих модулей. Это является более эффективным по сравнению с обычным отключением модулей, так как с помощью регистра PRR отключаются регистры ввода-вывода периферийных модулей.
3-й уровень — автоматическое управление тактовым сигналом
Автоматическое управление тактовым сигналом разрешает поступление тактового сигнала только на те регистры, которые меняют свое состояние. Если регистр не меняет свое состояние, тактовый сигнал к нему не поступает.
Однофазная система управления тактовыми сигналами
AVR-микроконтроллеры имеют однофазную систему управления тактовыми сигналами, имеющую меньшее потребление по сравнению с двухфазными системами управления тактовыми сигналами, используемыми в других микроконтроллерах.
Для компенсации рассогласования тактовых сигналов между регистрами необходимы буферы задержки, потребляющие часть мощности из-за емкостной нагрузки. В AVR-микроконтроллерах количество буферов задержки минимизировано.
Технологии и процессы
AVR-микроконтроллеры изготавливаются с использованием flash-процессов с малой утечкой и библиотек, содержащих много комплексных ячеек. Комплексные ячейки имеют более короткие соединения, более низкую емкостную нагрузку и меньшую частоту переключения из-за оптимизированной структуры с меньшим количеством транзисторов.
Отключаемые аналоговые модули
Новые AVR-микроконтроллеры имеют высококачественные аналоговые модули, имеющие сравнительно большое потребление. Однако если эти модули не используются, предусмотрена возможность их отключения, что минимизирует потребление без ухудшения точности и производительности.
При малых значениях тактовой частоты время считывания flash-памяти меньше периода тактирования, поэтому для уменьшения потребления возможно отключение flash-памяти. Поэтому при частотах порядка нескольких МГц и менее в AVR-микроконтроллерах используется техника Flash sampling, включающая flash-память только на время около 10 нс, а затем отключающая ее, уменьшая таким образом ее потребление.
Работа при напряжении питания 1,8 В
AVR-микроконтроллеры имеют напряжение питания в диапазоне от 1,8 до 5,5 В, причем в этом диапазоне работают все аналоговые модули, flash-память, EEPROM и ОЗУ. Это позволяет получить более долгий срок работы устройств с батарейным питанием.
Утечки выводов и регистр разрешения работы цифровых входов
AVR-микроконтроллеры имеют мультиплексированные линии цифровых входов и входов АЦП, что увеличивает гибкость прибора, но дает повышенное потребление входного буфера при поступлении на вход аналогового сигнала. Эта проблема решена с помощью регистра DIDR (Dedicated Input Disable Register), имеющего возможность раздельного отключения любого из цифровых входов от аналогового входа. Это способствует снижению общего потребления микроконтроллера.
Параметры потребления микроконтроллеров семейства picoPower говорят сами за себя. В таблицах 1, 2 для сравнения приведены параметры низкопотребляющих микроконтроллеров ведущих компаний — TI (серия MSP430) и Atmel (серия picoPower).
Таблица 1. Потребление в режиме Power Save с включенным генератором 32 кГц
Прибор | Типичное значение при 2,2 В и 25 °С | Максимальное значение при 2,2 В и 85 °С | Комментарий |
MSP430F435 | 1,1 мкА | 6 мкА | Малопотребляющий BOR |
MSP430F2131 | 0,8 мкА | 2,3 мкА | Малопотребляющий BOR |
ATmega165P | 0,65 мкА | Нет данных | «Спящий» BOD |
Таблица 2. Потребление в режиме Power Down
Прибор | Типичное значение при 3,0/5,0 В и 25 °С | Максимальное значение при 3,0/5,0 В и 85 °С | Комментарий |
78KO/Kx2 5.0 V | НД/1 мкА | НД/20 мкА | Нет данных для 3,0 В |
R8C/tiny 3.0/5.0 V | 0,7 мкА/0,8 мкА | 3 мкА/3 мкА | |
MSP430F4xxx | 0,1 мкА/НД | 3,5 мкА/НД | Макс. Vcc 3,6 В |
MSP430F2xxx | 0,1 мкА/НД | 1,9 мкА/НД | Макс. Vcc 3,6 В |
ATmega165P | 0,1 мкА/0,6 мкА | 2 мкА/НД | Нет данных для 5 В |
Перспективы технологии picoPower
Основные AVR-микроконтроллеры компании Atmel переведут на технологию picoPower, новые продукты также будут выпускаться с применением этой технологии. Микроконтроллеры серии picoPower будут иметь букву «P» в конце наименования (например, ATmega169P). В настоящее время анонсированы микроконтроллеры ATmega169P, ATmega165P, ATmega164P, ATmega324P (2006 г.) и ATmega644P (нач. 2007 г.). До конца 2007 г. планируется увеличение серии picoPower до 16 микроконтроллеров. Краткие характеристики микроконтроллеров этой серии приведены в таблице 3.
Таблица 3. Краткие характеристики микроконтроллеров серии picoPower
Наименование | Флэш-память, кбайт | EEPROM, байт | ОЗУ, байт | Линии ввода–вывода | Vcc, В | Частота, МГц | Краткое описание |
ATmega164P | 16 | 512 | 1024 | 32 | 1.8-5.5 | 16 | Общего назначения |
ATmega324P | 32 | 1024 | 2048 | 32 | 1.8-5.5 | 16 | Общего назначения |
ATmega644P | 64 | 2048 | 4096 | 32 | 1.8-5.5 | 16 | Общего назначения |
ATmega48P | 4 | 256 | 512 | 23 | 1.8-5.5 | 20 | Общего назначения |
ATmega88P | 8 | 512 | 512 | 23 | 1.8-5.5 | 20 | Общего назначения |
ATmega168P | 16 | 512 | 1 кбайт | 23 | 1.8-5.5 | 20 | Общего назначения |
ATmega165P* | 16 | 512 | 1024 | 54 | 1.8-5.5 | 16 | Общего назначения |
ATmega325P | 32 | 1024 | 2048 | 54 | 1.8-5.5 | 16 | Общего назначения |
ATmega3250P | 32 | 1024 | 2048 | 69 | 1.8-5.5 | 16 | Общего назначения |
ATmega645P | 64 | 2048 | 4096 | 54 | 1.8-5.5 | 16 | Общего назначения |
ATmega6450P | 64 | 2048 | 4096 | 69 | 1.8-5.5 | 16 | Общего назначения |
ATmega169P* | 16 | 512 | 1024 | 54 | 1.8-5.5 | 16 | Контроллер ЖКИ 4х25 |
ATmega329P | 32 | 1024 | 2048 | 54 | 1.8-5.5 | 16 | Контроллер ЖКИ 4х25 |
ATmega3290P | 32 | 1024 | 2048 | 69 | 1.8-5.5 | 16 | Контроллер ЖКИ 4х25 |
ATmega649P | 64 | 2048 | 4096 | 54 | 1.8-5.5 | 16 | Контроллер ЖКИ 4х25 |
ATmega6490P | 64 | 2048 | 4096 | 54 | 1.8-5.5 | 69 | Контроллер ЖКИ 4х25 |
* «Спящий» BOD у микроконтроллеров ATmega165P и ATmega169P отсутствует.
Более детальную информацию о технологии picoPower компании Atmel можно найти на сайте www.atmel.com/products/AVR/picopower
Статья была опубликована в журнале «Компоненты и технологии»
Источник
Батарейное питание для устройств MySensors
Эта музыка будет вечной если я заменю батарейки (С)
Это опус посвящен моим изысканиям по питанию автономными беспроводными устройствами, входящими в систему умного дома MySensors.
Сперва был литий.
Вернее литий-ионные и литий-полимерные аккумуляторы.
Долгое время эти аккумуляторы от старых гаджетов копились в ящике. Думал — вот оно, универсальное питание для всех малогабаритных микроконтроллеров. Тем более, напряжение 3.3-4.2В отлично подходит как для AVR, так и для всяческих ESP и STM. Для надежности можно поставить LDO стабилизатор нужной мощности и получить стабильные 3.3 для МК и всей периферии.
Но как оказалось, не все так хорошо.
- Аккумуляторы требовалось заряжать. Для этого нужно было делать их съемными, либо добавлять в свое устройство модуль зарядки, что, в свою очередь, давало дополнительную стоимость, габариты и отверстия для зарядки в корпусе. Да и не всегда удобно заряжать устройства, например, погодный сенсор за окном.
- Литиевые аккумуляторы (как и вообще большинство источников питания) не годятся для работы при отрицательных температурах. В погодном сенсоре, закрепленном за окном, зимой в мороз аккумулятор садился сразу.
- При длительной эксплуатации если вовремя не отследить напряжение аккумулятора, можно разрядить его «в ноль», то есть ниже допустимого значения, что гарантировано его убьет. Значит нужны средства защиты от переразряда.
- Разнообразие размеров и емкости аккумуляторов значительно ограничивали повторяемость устройств в одинаковых корпусах. Да и запасы старых аккумуляторов, быстро подошли к концу — в результате нужно было покупать где то новые. И, как оказалось, стоимость таких источников питания оказалась совсем не копеечной и добавляла как минимум $2 к стоимости каждого устройства (а с учетом платы зарядки и больше). Причем экономии от перезаряжаемости не было, так как большинство автономных контроллеров потребляли очень мало энергии и могли работать долгие месяцы без перезарядки.
NiMH и прочие AA/AAA аккумуляторы были еще хуже. Их обязательно нужно было заряжать в специальном заряднике, они имели имели «эффект памяти» и изначально низкое напряжение (1.2-1.3В), а при последовательном включении из за разности внутреннего сопротивления одна из батарей могла разрядиться сильнее других, что опять же приводило к ее порче.
И вновь литий .
Теперь уже круглые малогабаритные литиевые батарейки на 3.0В, в пользу которых я решил отказаться от капризных и дорогих аккумуляторов.
Батарейки CR2032 применяются во огромном количестве BIOSов компьютеров, электросчетчиков и прочих устройств с RTC, наручных часах, калькуляторах и различных игрушках. При маленьких габаритах и невысокой цене они имеют 3.0В напряжения, вполне достаточного для МК и приличную для своих габаритов емкость 200-250мА/ч.
Но опять проблемы. Дело в то. что постоянный ток такой батарейки всего 0.4мА. Если нагрузить ее более высоким током, напряжение батареи будет падать, хотя потом может частично или полностью восстановиться. Типовой контроллер Mysensor в режиме сна потребляет несколько микроампер. Но вот в режиме передачи — уже порядка 15-20мА. При этом новые версии библиотеки MySensors заставляют устройства посылать много пакетов — пинг, приветствие, презентации, поиск шлюза или маршрутизатора что выливается в длительную, порой в несколько секунд, работу радиомодуля. При напряжении около 2В дешевые китайские NRF24L01 начинают глючить, при этом иногда даже не получается увести их в режим сна sleep() от MySensors.
В результате, на свежей батарейке еще как то все работает, но по мере разрядки увеличиваются проблемы со связью, радиомодуль начинает больше «флудить» в эфир, увеличивая еще тем самым разряд батареи. В конце концов напряжение снижается до того, что все устройство перестает уходить в режим сна, а затем получается циклическая перезагрузка, пока батарея не сядет совсем.
В зависимости от производителя и «свежести» батареи устройство может проработать от пары дней до месяца. Если покупать дешевые батарейки на алиэкспресс — то и вовсе лотерея. Немного спасает переход на более емкие CR2450 и CR2477, но и они длительно отдавать ток более 0.5мА не умеют.
Какое то время я экспериментировал с повышающими преобразователями, которые позволяли до последних крох энергии батареи сохранять нормальное рабочее напряжение для МК, но те имели небольшой, но все же ненулевой ток покоя, что сокращало общий срок службы.
Пальчики — мизинчики
Пора бы уже успокоится и перенять «передовой» китайский опыт, питать все свои устройства от трех AAA (батарейки в комплект не входят). Но же решил поискать решение хотя бы с двумя 1.5 вольтовыми батарейками .
Две последовательно включенные щелочные батареи ААА дают изначально 2.7-3.1В к концу продуктивного периода снижая напряжение до 1-2В
При отключенном NCP1400 (низкий уровень на управляющем входе) питание от батарей сразу поступает на МК через катушку L1 и диод шоттки D1 с минимальным падением напряжения около 0.1В. Если на управляющий вход подать высокий уровень, то запускается стабилизатор NCP1400 и выдает на МК напряжение 3.3В при суммарном напряжении батарей от 0.8В до 3.1В.
Алгоритм работы такой:
Тестирование
А как у нас состоит дело на практике с потреблением тока? Подключаю свою схему к ЛБП и делаю замеры тока потребления и напряжения на выходе.
Ток холостого хода при выключенном NCP1400 и входном напряжении питания 1-3В составил 0.3мкА. Даже ниже заявленного по даташиту 0.5мкА (а может на таком диапазоне у меня приборы дают большую погрешность). А вот при включенном стабилизаторе без нагрузки ток оказался неожиданно большим — более 0.3мА. Оказалось, большое потребление вызывал подтягивающий резистор R1. Заменив номинал R1 с 10К до 150К получил 30мкА при входном напряжении 3.0В и 44мкА при 1.0В.
Если совсем убрать резистор R1, то стабилизатор при отсутствии подключения этого входа к МК будет постоянно включенным потребляя при входящих 2В порядка 11мкА.
Теперь подключаю микроконтроллер с NRF24L01 и датчиком HUD21, работающим по выше описанному алгоритму:
- Входное напряжение 3.0В — активный режим (NCP1400 включен) 32мА, режим сна (NCP1400 выключен) 9мкА
- Входное напряжение 2.0В — активный режим (NCP1400 включен) 51мА, режим сна (NCP1400 выключен) 6мкА
- Входное напряжение 1.7В — активный режим (NCP1400 включен) 63мА, режим сна (NCP1400 выключен) 5.6мкА
- Входное напряжение 1.0В — NCP1400 включен постоянно — режим сна 197мкА
- Входное напряжение 0.5В — NCP1400 включен постоянно — режим сна 397мкА
Потребление от батареи в активном режиме растет при снижении питания. Напряжение 1.7В подобрано опытным путем. Ниже этого значения микроконтроллер уже может стабильно не работать. При снижении напряжения батареи ниже этого порога стабилизатор NCP1400 уже не выключается и потребление в режиме сна довольно высокое. В этом режиме батареи уже долго не проживут, но времени будет вполне достаточно для их замены.
Воплощение в железе
Спроектировал универсальные платки питания для моих устройств умного дома
И хотя готовые устройства получились не столь компактными как с литиевыми батарейками, результат меня вполне устроил. особенно учитывая стоимость щелочных батареек в магазинах Галомарт, Касторама, Леруаль и пр.
В настоящее время я эксплуатирую у себя дома больше десятка разных устройств контроля температуры, влажности почвы и др. в системе MuSensors/MajorDoMo.
Источник