KiT#34(8).qxd 11/15/04 1:18 PM Page 88 Êîìïîíåíòû Êîìïîíåíòû è òåõíîëîãèè, ¹ 8’2003 Советы по уменьшению энергопотребления микроконтроллеров nanoWatt Компания Microchip выпускает целую линейку микроконтроллеров с технологией понижения энергопотребления nanoWatt. Однако чтобы использовать все возможности по уменьшению энергопотребления, необходимо выполнить ряд рекомендаций. Рассмотрим ряд примеров и советов по построению микропотребляющего устройства на микроконтроллерах Microchip. Àíòîí Êóçíåöîâ Пример 1. Отключение внешней цепи на определенный период [email protected] Все режимы низкого потребления энергии не помогут вам решить задачу наименьшего расхода электроэнергии, если у микроконтроллера не будет возможности управлять питанием внешних устройств. В процессе разработки устройства необходимо разделить периоды, когда и какая внешняя Рис. 1. Схема без реализации режима Shutdown Рис. 2. Схема c реализацией режима Shutdown 88 цепь должна работать, а когда нет. То есть необходимо обеспечить отключение той части схемы, которая не нужна в данный момент времени. Например, необходимо разработать автономный прибор снятия информации с датчика с определенным интервалом, например 2 секунды, и записи в энергонезависимую память EEPROM обработанной информации. Основная проблема — это обеспечить максимальное время работы прибора от батареи. Для решения этой проблемы необходимо получить как можно меньшее потребление питания всей схемы. На рис. 1 показано наиболее простое решение данной задачи. Микроконтроллер большую часть времени находится в режиме Sleep. При помощи таймера TMR1, включенного в режиме асинхронного счетчика с кварцем 32,768 кГц, каждые 2 с контроллер выходит из режима Sleep, измеряет при помощи АЦП значение, полученное от датчика сигнала, преобразует его, сохраняет в энергонезависимую память EEPROM и снова «засыпает». Предполагается использование внешней энергонезависимой памяти EEPROM, так как необходим большой объем хранимой информации. К сожалению, система, показанная на рис. 1, имеет один большой недостаток — датчик и память EEPROM постоянно включены и потребляют энергию. Для существенного снижения потребления энергии необходимо добавить режим Shutdown для цепи датчика и для микросхемы памяти EEPROM, чтобы микроконтроллер мог отключать датчик и внешнюю память, перед тем как войти в режим Sleep. Данное решение показано на рис. 2. Для подачи питания на датчик и микросхему памяти EEPROM используются выводы самого контроллера. Так как линии вывода контроллера имеют нагрузочную способность 20 мА, то нет необходимости в дополнительных элементах для управления включением-отключением питания. www.finestreet.ru KiT#34(8).qxd 11/15/04 1:18 PM Page 89 Êîìïîíåíòû Êîìïîíåíòû è òåõíîëîãèè, ¹ 8’2003 Пример 2. Расчет потребления энергии Таблица 1 Режим работы Приведем пример подсчета срока жизни прибора для примера 1 с реализацией режима Shutdown для датчика и внешней памяти EEPROM. Расчетные значения показаны в таблице 1. Для данного решения получим, что одно измерение с записью в EEPROM будет требовать 18800 мкА⋅мс; переведем полученные данные в мА⋅час и получим 5,2 мкА⋅час. Теперь мы можем определить необходимую емкость батареи для нашей задачи. В таблице 2 показано расчетное время жизни устройства из примера 1 при различных емкостях батареи. Sleep Датчик 0 Просыпание 166 1 Датчик 165 EEPROM Измерение 213 48 Датчик 165 EEPROM 48 48 Датчик 0 Время жизни (в годах) CR1212 18 3446808,511 393,47 Сохранение результатов в EEPROM CR1620 75 14361702,13 1639,46 Процессор CR2032 220 42127659,57 4809,09 1989 Ожидание переполнения таймера 166 Стабилизация датчика 213 Чтение значения с датчика 48 Пересчет измеренного значения 16384 Запись в память 0 1 Процессор Время (ч) Описание 0 1 Процессор Расчет мкА⋅мс 0 1 Процессор Емкость (мА⋅⋅ч) EEPROM 0 8 2048 48 Датчик 0 EEPROM 2000 • • • • внутреннее сопротивление; габаритные размеры батареи; стоимость батареи; минимальное напряжение питания, необходимое для регулятора напряжения (если используется); • ток потребления регулятора напряжения (если используется). Существует множество типов батарей, характеризующихся различными размерами и химическим наполнением. Маленькие батареи большой емкости обычно имеют большое внутреннее сопротивление и, соответственно, не подходят для задач с высокими токами. Батареи, пригодные для высокоточных задач, имеют меньшую емкость и больший вес, чем аналогичные по размеру батареи с высоким внутренним сопротивлением. Например, из батарей типа NiCd и NiMH, NiMH более легкие, имеют бóльшую емкость и меньший размер. Однако они имеют более высокое внутреннее сопротивление, чем батареи NiCd. Высокое внутреннее сопротивление не мешает большинству низкопотребляющих решений, но если в схеме имеются пиковые нарастания потребляемой энергии, то возможны ситуации с перекосом напряжения и микроконтроллер может сброситься. Если в системе требуется постоянное значение напряжения Vdd или напряжение питания, отличное от напряжения батареи, то используют регуляторы напряжения. При использовании регулятора напряжения необходимо учитывать, что сама микросхема регулятора потребляет ток, увеличивая тем самым энергопотребление всей схемы. Пример 4. Выбор источника питания Пример 5. Управление устройством с помощью линий ввода(вывода При выборе источника питания для автономной низкопотребляющей системы необходимо учитывать некоторые особенности батарей разного типа. Выбор батареи включает много различных условий: • емкость батареи; Если в разрабатываемом устройстве уровень потребления питания является критичным условием, то при разработке стараются снизить потребление насколько это возможно. Основные два пути для уменьшения потребления энергии микроконтроллером — www.finestreet.ru 1 1 Тип батареи В большинстве приложений для уменьшения потребления энергии микроконтроллер периодически входит в режим микропотребления Sleep. Для выхода из этого режима есть два пути: 1. Использовать прерывания. 2. Ждать переполнения сторожевого таймера WDT. Использование сторожевого таймера в предыдущих семействах микроконтроллеров PIC-micro было не совсем выгодно из-за относительно высокого потребления самого таймера WDT и недостаточной временной точности срабатывания. В новых nanoWatt-микроконтроллерах PIC16F/18F сторожевой таймер работает от основного RC-генератора (с потреблением 2–3 мкА) и имеет высокую временную стабильность. Дополнительно в микроконтроллерах семейства PIC18F сторожевой таймер WDT может динамически включаться и отключаться для сокращения потребления питания. Еще одной важной особенностью переработанного сторожевого таймера WDT является возможность увеличить время срабатывания до 2 минут, что позволяет реже выводить контроллер из режима Sleep, а значит, уменьшить потребление энергии. Итак, если требуется выводить контроллер из режима Sleep не чаще чем через одну минуту, то, используя сторожевой таймер WDT в новых nanoWattмикроконтроллерах, можно реализовать «просыпание» именно через одну минуту. 1989 Процессор EEPROM Таблица 2. Расчет времени жизни батареи Пример 3. Выход из режима Sleep с помощью сторожевого таймера WDT Длительность Потребление в данном режима (мс) режиме (мкА) это использование режима Sleep и уменьшение тактовой рабочей частоты. Если же в схеме есть другие устройства, то можно использовать линии ввода-вывода микроконтроллера для включения и отключения данных устройств. Некоторые устройства для этого имеют специальный вход для включения режима Shutdown. Для тех устройств, которые не имеют специальных ресурсов для управления включением-отключением питания, можно применить управление питанием путем запитки непосредственно от выходов микроконтроллера, но при этом необходимо соблюдать ограничение по нагрузочной способности порта микроконтроллера. Если управляемое устройство имеет потребление выше нагрузочной способности вывода микроконтроллера, то необходимо применить ключевую схему. Пример 6. Разводка платы для модуля таймера TMR1 При построении устройства с батарейным питанием модуль таймера TMR1 часто используется в асинхронном режиме с собственным кварцем. Новый модуль таймера TMR1 имеет очень низкое собственное потребление и очень низкий протекающий ток. Это делает цепь генератора чувствительной к помехам, создаваемым соседними схемами. Кварц, подключаемый к ножкам T1OSO Рис. 3. Разводка платы для генератора таймера 1 89 KiT#34(8).qxd 11/15/04 1:18 PM Page 90 Êîìïîíåíòû Êîìïîíåíòû è òåõíîëîãèè, ¹ 8’2003 и T1OSI, вместе с конденсаторами должен быть расположен как можно ближе к выводам микроконтроллера. В границах генератора не должно быть никаких контактов, кроме Vdd и Vss. Если нет возможности избежать высокочастотной схемы рядом с генератором, то необходимо разместить защитное кольцо вокруг схемы генератора и соответствующих выводов микроконтроллера, как показано на рис. 3. Пример 8. Конфигурация и инициализация портов Все микроконтроллеры семейства PICmicro имеют двунаправленные порты вводавывода. Некоторые из этих линий могут также работать как аналоговые входы для АЦП или компаратора. Очень важно обратить внимание на тип сигнала, который поступает на линии для минимизации потерь энергии. Цифровые входы Цифровые входы имеют наименьшее потребление питания, когда значение входного напряжения находится около значений Vdd или Vss. Если же значение входного напряжения находится где-то посередине между Vdd и Vss, то внутренний транзистор микроконтроллера нагружен в линейной области, отчего существенно увеличивается потребление энергии. Эта утечка будет наиболее высокой, если использовать приемы с зарядкой-разрядкой конденсатора для считывания многоканальных переключателей или для управления большим количеством светодиодов через несколько портов ввода-вывода. Иногда для уменьшения потребления даже лучше переконфигурировать линию на выход для получения четкой заданной нагрузки для выхода и минимизации потерь энергии. Цифровые выходы Когда линии настроены на выход, то нет никаких дополнительных потерь энергии кроме тех, которые обусловлены нагрузкой внешней цепи, подключенной к данному выводу. Аналоговые входы Аналоговые входы имеют очень большой входной импеданс и потребляют незначительную энергию. Они потребляют гораздо меньший ток по сравнению с цифровыми входами, если значение входного напряжения находится посередине между Vdd и Vss. Иногда можно переконфигурировать цифровой вход как аналоговый для получения низкопотребляющего режима для линии ввода, когда она не используется. При работе с портами необходимо учитывать, что различные источники сигнала сброса микроконтроллера могут сбить настройки порта, поэтому необходимо вводить инициализацию портов, даже если устраивает значение, устанавливаемое по умолчанию. Пример 10. АЦП и регистр ANSEL Таблица 3 Время выполнения команды Команда Пояснения Сброс микроконтроллера 125 мкс @ 32 кГц bsf STATUS,RP0 ; переключение банка 1 125 мкс @ 32 кГц bsf OSCCON,IRCF2 ; переключение на 1 МГц 4 мкс @ 1 МГц bsf OSCCON,IRCF1 ; переключение на 4 МГц 1 мкс @ 4 МГц bsf OSCCON,IRCF0 ; переключение на 8 МГц 0,5 мкс выполняемый код 0,5 мкс выполняемый код Ожидание окончания OST таймера и переключение на 20 МГц 0,2 мкс выполняемый код во время ожидания срабатывания OST-таймера, предназначенного для стабилизации работы основного кварца (в режимах LP, XT и HS). Данный модуль управляется через бит IESO в слове конфигурации. По умолчанию в режиме ожидания OST таймера в регистре OSCCON настройка включает внутренний RC-генератор частоты 32 кГц. Переключив скорость внутреннего RC-генератора, можно оптимизировать работу микроконтроллера. Небольшой пример кода для режима HS кварц 20 МГц приведен в таблице 3. Для микроконтроллеров семейства PIC16F62x есть возможность уменьшить потребление энергии путем переключения на дополнительный внутренний RC-генератор 37 кГц. Это возможно при режимах основного генератора: внутренний RC-генератор 4 МГц (INTRC), внешний RC (EXTRC) или внешний резистор (ER). Режим ER доступен только для PIC16F628, режим EXTRC — для PIC16F628A. Необходимо учитывать, что частота дополнительного RC-генератора на 37 кГц не откалибрована и имеет разброс 20–40%. Для переключения используется один бит OSCF в регистре PCON. Пример 9. Как использовать встроенный модуль опорного напряжения компаратора для получения простого ЦАП Модуль опорного напряжения, предназначенный для получения опорного напряжения компаратора, может быть использован просто как выход с цифро-аналоговым преобразованием с нагрузочной способностью, лимитированной для вывода RA2. Для повышения нагрузочной способности выхода можно использовать внешний буфер, как показано на рис. 4. Пример 8. Двухскоростной старт. Две скорости работы Возможность двойного старта была добавлена в некоторые новые nanoWatt-микроконтроллеры семейства PIC-micro. Данная возможность позволяет выполнять код 90 Рис. 4. Внешний буффер для ЦАП Большинство микроконтроллеров PIC16 со встроенным модулем АЦП имеют регистр ADCON1, предназначенный для конфигурирования каналов АЦП, то есть настройки аналоговых и цифровых линий. В новых nanoWatt-контроллерах для более гибкого управления добавлен регистр ANSEL, который позволяет настраивать вид режима работы непосредственно для каждой линии в отдельности. Каждый бит в регистре ANSEL отвечает за тип соответствующей линии (аналоговая или цифровая). Бит, установленный в «1» задает аналоговый вход, «0» задает цифровую линию. Ниже приведен пример задания регистра ANSEL: banksel movlw movwf ANSEL; настройка банка памяти ОЗУ 0x0f ANSEL Результат: AN0 — аналоговый вход AN4 — цифровой ввод/вывод AN1 — аналоговый вход AN5 — цифровой ввод/вывод AN2 — аналоговый вход AN6 — цифровой ввод/вывод AN3 — аналоговый вход AN7 — цифровой ввод/вывод Пример 11. Калибровка внутреннего RC(генератора В новых nanoWatt-микроконтроллерах встроенный RC-генератор калибруется непосредственно на заводе. Но в некоторых применениях, требующих точности в расширенном температурном диапазоне, необходимо подстраивать скорость работы генератора. Для этого используется модуль таймера TMR1 с кварцем на частоту 36,768 кГц (рис. 5). Более подробно данный прием описан в примере AN244, который можно скачать с сайта фирмы Microchip (www.microchip.com). Рис. 5. Подключение часового кварца к таймеру 1 Калибровка основана на измерении частоты внутреннего генератора. Например, если выбрана частота 4 МГц, то время выполнения команды соответственно 1 мкс (4/4 МГц), а таймер TMR1 имеет период 30,3 мкс (1/32768). Это означает, что за один период таймера TMR1 ядро выполнит 30,5 команды. Если в регистры TMR1H:TMR1L загрузить начальное заданное значение и, ожидая переполнения таймера, подсчитать, сколько команд выполнилось, то получим реальную рабочую частоту. Если частота не совпадает с заданной, то с помощью регистра OCSTUNE мы можем подстроить частоту внутреннего RC-генератора. www.finestreet.ru