Иван Иванов   25 ноября в 13:41

Как уменьшить энергопотребление Arduino

Узнаем как повысить эффективность наших проектов Arduino за счет снижения энергопотребления разными способами.

Вступление

Arduino Uno и Pro Mini не работают эффективно в ситуациях, когда с ними приходится работать с использованием батареек. В таких ситуациях каждый миллиампер тока имеет значение. Arduino Uno потребляет минимум 15 мА тока, что звучит не так плохо, но в определенных ситуациях эта цифра быстро возрастает.

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

Далее мы рассмотрим различные способы снижения энергопотребления Arduino путем изменения аппаратного обеспечения или использования программного кода.

Библиотеки Arduino для низкого энергопотребления

Официальный сайт Arduino предоставляет библиотеки для низкого энергопотребления плат Arduino, позволяющие использовать функции с низким энергопотреблением.

Давайте посмотрим на две таких библиотеки:

  1. External Wake-Up (внешнее пробуждение): с помощью этой библиотеки ваша Arduino выйдет из спящего режима при нажатии внешней кнопки. Вы можете использовать такой код, чтобы разбудить Arduino с помощью датчика.
  2. Timed Wake-up (запланированное пробуждение): пробуждает Arduino после заданного количества времени в режиме сна.

Вышеуказанные режимы ожидания снижают энергопотребление Arduino Uno в режиме ожидания. Однако они почти бесполезны, потому что все, кроме MCU на плате, все еще активно и продолжает потреблять энергию. Мы протестировали этот метод и не ушли ниже 50 мА, минимального числа, которое можно получить в этом режиме.

Режим глубокого сна

Режим глубокого сна (Deep Sleep Mode) помогает Arduino потреблять гораздо меньше энергии, чем режим сна. Он переводит MCU в глубокий спящий режим и все, кроме периферийного RTC, останавливается. ЦП можно пробудить с помощью RTC или любого прерывания в коде.

Ток, потребляемый Pro Mini в глубоком сне, может падать от 25mA до 0.57mA.

Замедление тактовой частоты Arduino

Тактовая частота платы Arduino определяет, сколько операций она может выполнять в секунду. Большинство плат Arduino работают с тактовой частотой 16 МГц. Уменьшение этого значения до 8 МГц может снизить необходимый ток с 12 мА до 8,5 мА. В долгосрочной перспективе метод может отключить большую часть энергопотребления и продлить срок службы батареи.

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

Важно! Изменение тактовой частоты может привести к проблемам с загрузчиком и повреждению Arduino.

Пример кода замедления частоты

#include <avr/power.h>

void setup() {
  if(F_CPU == 8000000) clock_prescale_set(clock_div_2);
  if(F_CPU == 4000000) clock_prescale_set(clock_div_4);
  if(F_CPU == 2000000) clock_prescale_set(clock_div_8);
  if(F_CPU == 1000000) clock_prescale_set(clock_div_16);
}

Замена или пренебрежение энергопотреблением компонентов

Встроенный регулятор напряжения ограничивает входное напряжение входного разъема постоянного тока. Регулятор не очень эффективен и около 58% входной энергии теряется в виде тепла или используется для внутреннего питания. Лучше заменить этот компонент более эффективными понижающими преобразователями постоянного тока DC-DC. Некоторые ступенчатые преобразователи постоянного тока или понижающие преобразователи могут достигать 92%.

Arduino Uno использует небольшой линейный регулятор напряжения в TO223 SMD пакете. Чипсет Traco TSRN1 - отличный вариант для пакета, доступного на Arduino Uno.

Питание 5V регулируемого напряжения через 7805 IC извне является гораздо более эффективным способом. Это лучший вариант для удаления встроенного регулятора для снижения энергопотребления. Без регулятора напряжения сбрасывается ток около 2,7 мА.

Индикатор питания (светодиод) постоянно горит, что указывает на то, что плата получает достаточное количество питания. Снятие светодиода питания может снизить ток в 2,85 мА в нормальном режиме. В спящем режиме без светодиода энергопотребление Arduino UNO составляет всего 30,8 мкА.

Снижение напряжения питания Arduino

Один из очень простых способов снизить энергопотребление платы Arduino - снизить напряжение питания. Arduino может работать при низком напряжении 3,3 В и при падении напряжения питания с 5 В до 3,3 В потребляемый ток падает с 4 мА до менее 1 мА.

При напряжении 3,3 В рекомендуемая максимальная частота составляет около 13 МГц в соответствии с таблицей ATmega 328. Таким образом, слишком сильное снижение напряжения без снижения тактовой частоты приводит к странному поведению микроконтроллера. Тактовая частота 8 МГц - оптимальный вариант.

Делаем собственную Arduino

Если внесение этих изменений в ваш Arduino или работа с компонентами SMD вас не устраивает или вы боитесь повредить плату, тогда лучшим решением может стать создание собственной платы Arduino. Отсутствие энергозатратных компонентов и только Микроконтроллер (MCU) для выполнения задачи - наша главная цель.

Схема построена вокруг микросхемы ATmega. Для этого вы можете использовать ATmega 8 или ATmega328 или любой пустой программируемый микроконтроллер, а также кристалл и кнопку сброса. Для удобства можно добавить регулятор напряжения 7805.

Как мы используем эту схему:

  1. Подготовьте схему на универсальной плате или макете, но используйте 40-контактный разъем IC.
  2. Загрузите необходимый код на плату Arduino.
  3. Выньте микросхему из Arduino и подключите ее к вашей схеме. Все готово!

Этот способ прост, и для загрузки задач не требуется никакого внешнего загрузчика.

Заключение

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

  • Использование режима сна и режима глубокого сна;
  • Уменьшение тактовой частоты;
  • Замена или удаление ненужных компонентов;
  • Понижение напряжения питания на плате;
  • Создание собственной Arduino.

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