Минимизация энергопотребления в микроконтроллерах


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

Как снизить энергопотребление в микроконтроллерах

Ограниченный характер заряда батареи подразумевает необходимость обеспечения разумного уровня энергопотребления этих устройств, чтобы стимулировать их внедрение и использование. Особенно это касается устройств на базе Интернета вещей, где можно ожидать, что устройство прослужит до 8–10 лет на одном заряде без замены батареи.

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

1. Использование режимов сна

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

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

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

а) Режим простоя/спящий режим (Idle/Sleep Mode)

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

б) Режим ожидания (Standby Mode)

Режим ожидания — еще один режим с низким энергопотреблением, который легко реализовать дизайнерам. Он очень похож на режим простоя/спящего режима, поскольку он также включает в себя использование синхронизации тактовой частоты ЦП, но одним из его основных отличий является то, что он позволяет изменять содержимое оперативной памяти, чего обычно не происходит в режиме простоя/спящего режима. В режиме ожидания высокоскоростные периферийные устройства, такие как DMA (прямой доступ к памяти), последовательные порты, периферийные устройства ADC и AES, продолжают работать, чтобы обеспечить их доступность сразу после пробуждения ЦП. Для некоторых микроконтроллеров ОЗУ также остается активным, и к нему можно получить доступ через DMA, что позволяет хранить и получать данные без вмешательства ЦП. Потребляемая мощность в этом режиме может составлять всего 50 мкА/МГц для маломощных микроконтроллеров.

в) Режим глубокого сна (Deep Sleep Mode)

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

г) Режим остановки/выключения (Stop/ OFF Mode)

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

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

Использование спящих режимов в микроконтроллерах мы рассматривали в следующих статьях на нашем сайте:

2. Динамическое изменение частоты процессора

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

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

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

Зависимость между тактовой частотой и энергопотреблением микроконтроллера

3. Структура прошивки обработчика прерываний

Это один из самых экстремальных методов управления питанием в микроконтроллерах . Это стало возможным благодаря нескольким микроконтроллерам, таким как ядра ARM Cortex-M, которые имеют бит перехода в режим сна при выходе в регистре SCR. Этот бит предоставляет микроконтроллеру возможность перейти в спящий режим после выполнения процедуры прерывания. Хотя существует ограничение на количество приложений, которые будут работать без сбоев таким образом, это может быть очень полезным методом для полевых датчиков и других долгосрочных приложений, основанных на сборе данных.

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

4. Прошивка, оптимизированная по энергопотреблению

Одним из лучших способов снижения энергопотребления микроконтроллера является написание эффективной и хорошо оптимизированной прошивки. Это напрямую влияет на объем работы, выполняемой ЦП за единицу времени, и, соответственно, способствует увеличению мощности, потребляемой микроконтроллером. При написании прошивки следует приложить усилия, чтобы обеспечить уменьшение размера кода и количества циклов, поскольку каждая выполненная ненужная инструкция тратит впустую часть энергии, хранящейся в батарее. Ниже приведены некоторые общие советы по оптимизации разработки прошивки на языке C;

  1. Используйте класс «Static Const» как можно чаще, чтобы предотвратить копирование массивов, структур и т. д. во время выполнения программы - эти операции потребляет энергию.
  2. Используйте указатели. Вероятно, это самая сложная часть языка C для понимания новичками, но они лучше всего подходят для эффективного доступа к структурам и объединениям.
  3. Избегайте модуля!
  4. Используйте локальные переменные, а не глобальные переменные, где это возможно. Локальные переменные содержатся в ЦП, а глобальные переменные хранятся в ОЗУ, поэтому ЦП быстрее обращается к локальным переменным.
  5. Беззнаковые типы данных — ваш лучший друг, где это возможно.
  6. Используйте «обратный отсчет» для циклов, где это возможно.
  7. Вместо битовых полей для беззнаковых целых чисел используйте битовые маски.

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

Заключение

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

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

(Проголосуй первым!)
Загрузка...
297 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *