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


40

Для проектів, що працюють на сонячних батареях та батареях, зменшення споживання електроенергії є необхідним.

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

Я також читав, що ви можете відключити деякі периферійні пристрої для подальшого економії енергії.

Ось сторінка, що пояснює такі: Технології економії енергії

Моє запитання:

  • Які ще існують методи для економії енергії?
  • Чи є бібліотеки, які полегшують використання цих функцій AVR?

Відповіді:


33

Примітка. Я хотів би зазначити, що, незважаючи на те, що моя відповідь була прийнята, читач (ви) дійсно повинен спочатку прочитати відповідь Андіндо, якщо ви дійсно хочете заощадити енергію за допомогою будь-якої дошки Arduino. Після того, як ви звернетесь до цих елементів у своєму дизайні, тоді ви повинні прочитати мою відповідь і переживати, як перевести MCU в режим низької потужності.

Сказавши це, існує кілька прийомів, як Ардуїно заощадити сили. Я перерахую декілька, а потім вкажу на сторінку, яка пояснює їх все детальніше.

  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. Вимкніть АЦП (аналог перетворення цифр)

  4. Використовуйте внутрішній годинник

Потім, перекладаючи контролер у режим сну, вам потрібно скористатися одним або декількома механізмами внизу, щоб розбудити контролер і зробити щось з ним:

  • Прокидайся сигналом

  • Прокидайтеся таймером

Це резюме, яке я зробив із -

Ця стаття стосується переважно ATmega328P, але ця методика застосовується і до інших контролерів, сумісних з Arduino. Як добре сказав TheDoctor, вам потрібно буде перевірити таблицю даних, щоб переконатися, що ваш контролер підтримує будь-яку з цих методик і як це зробити більш точно.


2
Дякую, що посилаєтесь на мою сторінку www.gammon.com.au/power . Використання всіх згаданих на ньому методів повинно дозволяти вам споживати близько 100 нА (0,1 мкА). Інші методи, які можуть мати великий вплив, - це біг з меншою частотою та меншою напругою. Плюс те, що сказала Аніндо Гош про використання регуляторів напруги. Я зробив датчик температури і вологості - акумулятор, який використовує багато цих методів, які все ще залишаються сильними, через пару років роботи на батареях.
Нік Гаммон

@NickGammon - Чесно кажучи, я вважаю, що ваша відмінна стаття заслуговує кращого посилання, тому я відредагував свою відповідь у цій мірі. Дякую за чудову статтю - дуже чітку та повну! І ласкаво просимо на Arduino.SE. Добре, щоб ви були тут.
Рікардо

24

Реально найбільшим витратником потужності на платі Arduino є лінійний регулятор напруги на ній.

  1. Поки мікроконтролер на платі, світлодіоди або будь-яка інша периферія притягує струм, лінійний регулятор витрачає потужність, рівну difference between supply and board voltagex current drawn.

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

  2. На оригінальних конструкціях використовувані регулятори напруги не мають низького струму спокою. Це означає, що навіть не маючи енергії, що споживає усередині плати, сам регулятор витрачає неабияку потужність протягом усього часу, коли він працює.

    Легке виправлення полягає в заміні бортового регулятора на LDO (лінійний регулятор низького виходу), оцінений на надзвичайно низький струм спокою. Параметричні пошуки на різних сайтах постачальників дозволять отримати заміну.

  3. Навіть з вищезазначеними кроками плата Arduino не забезпечує механізм переведення LDO в режим низької потужності, якщо обраний LDO підтримує це. Енергоефективні конструкції зазвичай використовують штифт «режиму сну» на регуляторах напруги, щоб заощадити небагато енергії - тут не можливий варіант.

Навіть з усіма можливими режимами енергозбереження та хитрощами, що застосовуються на рівні мікроконтролерів, Arduino просто не розроблений для того, щоб бути пристроєм надмірної потужності поза коробкою. Експериментувавши з декількома нетривіальними програмами, я виявив, що найкраще, що реально досягається, - це від 10% до 30% економії енергії залежно від застосування, оскільки регулятор напруги та світлодіоди все-таки споживають решту.


2
постачайте плату якомога меншою напругою, достатньою лише для живлення бортового регулятора, або подайте 5 В через зламаний USB-кабель.
Анонімний пінгвін

13

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

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


3
Ви повинні прочитати опис, незалежно від того, що ви робите.
Вонор Коннор

9

Після того, як ваш проект запрацює і вам потрібно буде розгорнутись у "виробничому" середовищі, ви можете вирішити замінити Arduino голою метами ATMega328 або будь-якою з сімейств фішок ATTiny. Це дозволить позбутися від усіх жителів енергії на платі Arduino, яка вам не потрібна. Я знайшов:

  • Дошка Arduino з 9В блочного акумулятора - 56 мА
  • ATTiny85 на 8 МГц без режиму сну тощо - 10 мА
  • ATTiny85 на 8 МГц у режимі сну - 0,03 мА

Ще трохи інформації

Програмуйте ATtiny з Arduino

Файли ATTiny для Arduino IDE

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.