Что (или как я могу использовать) варианты энергосбережения Arduino продлить срок службы батареи?

Для солнечной и ампер; проекты с батарейным питанием, необходимость снижения потребления энергии.

Я немного знаю об использовании таймера и прерывания, чтобы поставить микроконтроллер в сон, когда он ничего не делает.

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

Вот страница, объясняющая их: Технологии энергосбережения

Мой вопрос:

  • Какие еще существуют методы экономии энергии?
  • Есть ли библиотеки, которые упрощают использование этих функций AVR?
36 голосов | спросил sachleen 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 02:48:30 +0400000000amWed, 12 Feb 2014 02:48:30 +040014 2014, 02:48:30

4 ответа


30

Примечание. Я хотел бы отметить, что, хотя мой ответ был принят, читатель (вы) должен действительно прочитать ответ Anindo, если вы действительно хотите экономить энергию на любой плате Arduino. После того, как вы рассмотрите эти элементы в своем дизайне, вы должны прочитать мой ответ и беспокоиться о том, как установить MCU в режим с низким энергопотреблением.

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

  1. В то время как контроллер не делает ничего важного (между одним считыванием датчика и следующего, например), вы можете поместить контроллер в один из режимов ожидания ниже, с помощью команды set_sleep_mode (SLEEP_MODE_PWR_DOWN). Рядом с каждым режимом находится примерная потребляемая мощность каждого режима.

    • SLEEP_MODE_IDLE: 15 мА
    • SLEEP_MODE_ADC: 6,5 мА
    • SLEEP_MODE_PWR_SAVE: 1,62 мА
    • SLEEP_MODE_EXT_STANDBY: 1,62 мА
    • SLEEP_MODE_STANDBY: 0,84 мА
    • SLEEP_MODE_PWR_DOWN: 0,36 мА
  2. Отключить обнаружение черного цвета (схема, которая отключает контроллер при обнаружении низкого напряжения).

  3. Отключите ADC (аналоговое преобразование с цифровым преобразованием)

  4. Используйте внутренние часы

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

  • Просыпайтесь с сигналом

  • Просыпайтесь с помощью таймера

Это резюме, которое я сделал из

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

ответил Ricardo 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 05:53:50 +0400000000amWed, 12 Feb 2014 05:53:50 +040014 2014, 05:53:50
23

Реалистично, самая большая потеря мощности на плате Arduino - это линейный регулятор напряжения на нем.

  1. Пока микроконтроллер на плате, светодиоды или любые другие периферийные устройства потребляют ток, линейный регулятор теряет мощность, равную разнице между напряжением питания и платы x current draw.

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

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

    Легким решением является замена встроенного регулятора на LDO (линейный регулятор с низким выпадением), рассчитанный на чрезвычайно низкий ток покоя. Параметрический поиск на разных сайтах поставщиков даст вероятные замены.

  3. Даже при вышеуказанных шагах плата Arduino не обеспечивает механизм для установки LDO в режим с низким энергопотреблением, если выбранный LDO поддерживает это. В энергоэффективных конструкциях обычно используется контакт «спящего режима» на регуляторах напряжения, чтобы сохранить справедливый бит энергии - здесь не вариант.

Даже при всех возможных режимах энергосбережения и трюках, применяемых на уровне микроконтроллера, Arduino просто не предназначен для устройства с ультранизким энергопотреблением из коробки. Экспериментировав с несколькими нетривиальными приложениями, я обнаружил, что лучшее, что реально достижимо, составляет от 10 до 30% энергосбережения в зависимости от приложения, так как стабилизатор напряжения и светодиоды будут потреблять все равно.

ответил Anindo Ghosh 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 12:21:43 +0400000000pmWed, 12 Feb 2014 12:21:43 +040014 2014, 12:21:43
12

Вы можете прочитать 200-страничное техническое описание, а затем испортить некоторые запутанные сдвиги бит и регистры, но я рекомендую эту библиотеку: http://playground.arduino.cc/Code/Enerlib

Кроме того, если вы используете Uno или любой с чипом usb-to-serial, вы можете отключить его или удалить.

ответил TheDoctor 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 03:00:13 +0400000000amWed, 12 Feb 2014 03:00:13 +040014 2014, 03:00:13
8

Как только ваш проект будет работать, и вам нужно будет установить его в «производственную» среду, вы можете заменить Arduino на простой meta ATMega328 или любой из семейства чипов ATTiny. Это избавит вас от всех поглотителей энергии на борту Arduino, в котором вам не нужно. Я нашел:

  • Плата Arduino из аккумуляторной батареи 9 В - 56 мА
  • ATTiny85 голый на 8 МГц без режима ожидания и т. д. - 10 мА
  • ATTiny85 горит на 8 МГц в спящем режиме - 0,03 мА

Дополнительная информация

Программа ATtiny с Arduino

Файлы ATTiny для среды разработки Arduino

ответил maarten 10 FebruaryEurope/MoscowbTue, 10 Feb 2015 14:24:31 +0300000000pmTue, 10 Feb 2015 14:24:31 +030015 2015, 14:24:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132