Прокидаючись від режимів глибокого сну


13

Більшість мікроконтролерів (наприклад, AVR, MSP430, PIC тощо) підтримують ряд різних режимів сну. "Найглибший" режим сну - це той, який передбачає найнижчу потужність (наприклад, "Вимкнення живлення", "Вимкнення"), але всі годинникові системи зазвичай зупинені в цих режимах, і мені здається, що це єдиний спосіб " прокидатися від них відбувається за допомогою зовнішнього стимулу (наприклад, переривання зміни штифта, скидання чіпа). Я щось пропускаю? Чи існують дивовижні методи низької потужності для генерування періодичного сигналу пробудження для MCU?

Припустимо, що моя мета - мінімізувати споживання електроенергії (тобто глибоко спати довше, залишатися неспаним якомога коротше), періодично прокидаючись для виконання функції, який загальний спосіб досягти такого типу поведінки? Щоб додатково спростити питання, давайте припустимо, що моя функція без громадянства (мені не потрібно пам'ятати нічого з минулого, щоб виконувати її).

Я мав певний успіх, використовуючи WDT на MSP430, щоб досягти цього ефекту. Щойно я зробив основну функцію моєї функції: останній рядок дав змогу таймеру сторожового часу закінчитися через певний період і перейти в LPM4.5 або як би там не називався режим "глибокого сну". Чистий результат - функція виконується, MCU спить, WDT закінчується, а чіп скидає, ad nauseum. Здається, працює, просто цікаво, чи існує "кращий" чи "більш елегантний" чи "більш енергоефективний" спосіб такого типу поведінки?

Я ще не пробував такого підходу з AVR, але думаю, що WDT в AVR більше "голодний", ніж на MSP430, тому він може бути менш привабливим для роботи з низькою потужністю. Можливо, не існує «універсального» підходу до малої потужності, і вам доведеться використовувати інструменти, надані певною лінією продуктів? Я знаю, що в новій лінійці picoPower є безліч функцій, що ведуть виклик, таких як система подій і сонний прогулянки, які в деяких випадках навряд чи вимагають від центрального процесора взагалі, якщо ви можете зробити так, щоб ваше додаток вписувалося в цю структуру ...

ОК, досить мого блукання, давайте тут, що вам доведеться сказати :)

Редагувати конкретні приклади, що ілюструють методи, також було б круто!


2
Ви бачили focus.ti.com/lit/wp/slay015/slay015.pdf ? Деякі цікаві моменти поруч із абсолютними показниками потужності уві сні.
XTL

Відповіді:


15

Більшість мікросхем підтримують низькопотужний генератор годинникового кристала 32,768 кГц з певним дозволом і тимчасовим перериванням. Встановіть дошкільний пристрій, щоб таймер повільно рахував, а переривання відбувається в бажаний період.

Деякі мікросистеми також мають вбудований таймер RC з низькою потужністю, якщо точний час не є критичним.

Лист даних для будь-якого мікроенергії з низькою потужністю буде перераховувати потужність при запуску генератора 32.768 (і нічого іншого). Це досить близько до нуля. Ви можете зробити математику, щоб побачити, чи це прийнятно, і порівняти її з поточним, проведеним сторожовим собакою.

Добре, наприклад, на msp430f2013, давайте подивимось на потужність у таблиці.

0,5 мкА майже дорівнює нулю, хоча це в п'ять разів більше, ніж справжній режим вимкнення.

Для більш детальної інформації ми можемо заглянути всередину даних.
Перехід від LPM4 (все відключено) до LPM3 (працює генератор) - це різниця між 0,5 мкА і 1 мкА.

Припустимо, батарея CR2032 ємністю 225 мАг. Тоді режим очікування в LPM4 становить близько 50 років, а в LPM3 - близько 25 років. 25 років є досить довгим для багатьох застосувань, тому що струм ВКЛ (під час самого вимірювання) домінує над споживанням.

alt текст



зроблено, для клітинки msp430f2013 та cr2032.
відбитки

Ми використовуємо Cr2032 в моїй роботі з ACLK на 32768, прокидаючись кожні 2 секунди. Ми використовуємо приймач кожні 90 секунд. Ми проводимо вимірювання температури кожні 10 секунд. Новий CR2032 може тривати понад 4 роки.
Кортук

3

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


3

PIC з RTC можуть встановлювати RTC в режим тривоги, тому він буде пробуджувати MCU в даний момент, із зовнішнім кристалом 32,768 кГц. У режимі сну RTC + вони намалюють ~ 450nA IIRC, але лише 20nA з вимкненою RTC.


3

Таймери сторожових годин AVR не такі вже й погані, як вам здається. Згідно з таблицею даних ATTiny13A, поточний розрив у режимі відключення живлення @ 3V становить 2 мкА без включеного WDT і 4μA з. Звичайно, це в 2 рази більше, але сам струм достатньо малий, приблизно за 6,2 років роботи, це приблизно за стільки ж часу, що потрібно акумулятору все-таки знецінитися (джерело: найкращий дат).

Крім того, практично все, що ви підключили навколо μC, намалювало б набагато більше. Насправді, найсміливіша частина проектування такої схеми малої потужності відключає весь струм у решті схематично під час періоду сну.

Затримка пробудження також добре налаштовується, від ~ 12мс до 8с, якщо пам'ять служить. Фактична частота не робить помітної різниці, якщо використовуються короткі процедури переривання: я пішов із ввімкнення АЦП, відбору проб 1К-горщика, обчислення деяких матеріалів за результатами та повернення до сну без помітної зміни загального споживання ( згладжений великим конденсатором, щоб компенсувати млявість мого мультиметра).

Зауважте, що WDT не є точним інструментом хронометражу, тому ви можете підключити зовнішню RTC. Вони можуть споживати прості наноампери, тому це повинно бути хорошим сполученням. Насправді, якщо відповідна RTC може генерувати регулярні імпульси, ви можете використовувати це як джерело пробудження замість WDT ціною використання штифта.

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