Малаток-меню
Авторизация

Наш опрос
Оцените мой сайт

Всего ответов: 44
Мини-чат
200
Статистика


Наш линк
Malatok.at.ua
Полезные ссылки
Это может быть интересно
[
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: Stalker753, Викр, Дмытрохан 
Форум » РАДИОТЕХНИКА » Полезные устройства » Понижаем энергопотребление устройств на микроконтроллерах AV
Понижаем энергопотребление устройств на микроконтроллерах AV
incubus Дата: Суббота, 14.12.2013, 22:22 | Сообщение # 1
Почетный друг сайта
Группа: Модераторы
Сообщений: 190
Награды: 4
Репутация: 200
Замечания: 0%
Статус: Офлайн
При питании устройств отавтономных источников питания – батареек, аккумуляторов (и яблок с воткнутымиэлектродами wink ) приходиться заботиться о снижении энергопотребления, с цельюувеличения срока службы без замены элементов питания. Само по себе
энергопотребление зависит от многих факторов: от типа используемого
микроконтроллера, напряжения питания, выбранной частоты работы, от
сконфигурированной периферии и даже от температуры окружающей среды.
 Дляуправления энергопитанием все микроконтроллеры AVRимеютнесколько режимов работы, позволяющие существенно снизить собственное
энергопотребление – это режим сна (Sleepmode) и остановка (Power-down)
 Как меняется энергопотребление в зависимости от выбранногорежима работы наглядно продемонстрировано в таблице ниже (при 1 MHz, 3V, 25°C):

 Тип микроконтроллера Active mode  Sleep mode Powerdown mode Attiny2313 2.5 mA 0.5 mA 0.5 μA Attiny2313a190μA24μA 0.1μA  Atmega48250 μA15μA0.1μA Atmega83.6 mA1.0 mA0.5 μA Atmega8a 250 μA50 μA 0.1 μA Atmega32a 0.6 mA 0.2 mA< 1 μA
 Видно, что рулят ситуацией микроконтроллеры новых ревизий (те что выпускаются с
индексом "а" на конце) и новые модели (atmega48/88/168 и подобные).

Теперь посмотрим, как работать с режимами пониженного энергопотребления.

 Режим сна (Sleep mode)
 При этом режиме останавливаетсятактовый генератор,  но остальнаяпериферия продолжает работать, и микроконтроллер будет реагировать на внешние
прерывания, прерывания по UART и прерывания по счетчикам/таймерам. Довольно полезно использовать
например при ожидании каких-нибудь преобразований - пока внешняя
периферия думает (как в случае с датчиками 18b20), чтобы микроконтроллер
попусту не жрал лишнюю энергию, можно на время его усыпить и разбудить
через определенный промежуток времени с помощью таймера.
 Для погружения микроконтроллер в режим снав Bascom-AVRиспользуетсякоманда Idle.
 Пример использования режима сна. Тут сконфигурирован таймер на прерывание
через 4 секунды, как только таймер переполниться он вызовет прерывание и
разбудит микроконтроллер.

$regfile = "m8def.dat"
$crystal = 1000000
'$sim

'конфигурируем таймер для генерации прерываний
'прерывания от таймера будут происходить примерно раз в 4 секунды

Config Timer1 = Timer , Prescale = 64
On Timer1 Awake:

Enable Interrupts
Enable Timer1
Start Timer1

Do

 Print "Hello"                                         'печатаем приветствие
 Print "Sleep now"
 Idle                                                  'погружаем в сон
Loop

Awake:                                                 'случилось прерывание по таймеру

  Print "Awake!"

Return

End

Остановка (Power-down mode)
 Самый экономный режим, и, по сути,микроконтроллер обесточивается полностью. В этом режиме останавливается
тактовый генератор и отключается вся периферия за исключением обработчика
внешних прерываний, который при приходе прерывания возвращает микроконтроллер к
нормальной работе. Чтобы задействовать этот режим даем команду Powerdown.

$regfile = "m8def.dat"
$crystal = 1000000
'$sim

'конфигурируем прерывание на INT0
'происходящее по низкому уровню на ножке МК

Config Int0 = Low Level
On Int0 Button:
Enable Interrupts
Enable Int0

Do
  Print "Hello"                                 'печатаем приветствие
  Print "Powerdown now"
  Powerdown                                    'грузим мк в энергоcберегающий режим
Loop

Button:                                         'пришло прерывание
   Print "Start"                           'контроллер очнулся и напечатал сообщение
   Print ""
   Wait 1
   Gifr = 64
Return                                          'возвращаемся в главный цикл

End

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



  Суть вот в чем: транзистор включен в разрыв цепипитания устройства и открывается самим микроконтроллером во время выполнения
программы. Пока выполняется программа, на ножке PD0 держится высокий уровень напряжения и полевикнаходится в открытом состоянии, пропуская через себя ток. После выполнения
необходимой программы, микроконтроллер закрывает транзистор, тем самым
обесточивая схему полностью. За счет огромного сопротивления полевого транзистора в
закрытом состоянии, ток будет очень мал (намного меньше тока саморазряда
батарейки).

$regfile = "m8def.dat"
$crystal = 1000000

Config Portd.0 = Output
Portd.0 = 1                   'даем на ножку единицу, тем самым открываем транзистор

Config Portc.0 = Output       'а тут у нас светодиод
Led Alias Portc.0

'делаем свое дело, например помигаем светодиодом

Led = 1
Waitms 80
Led = 0
Waitms 80
Led = 1
Waitms 80
Led = 0

'ок, все сделали

Portd.0 = 0                          'закрываем транзистор

End
 Чтобы включить устройстводостаточно нажать на кнопку, на микроконтроллер снова поступит питающее
напряжение, он в свою очередь откроет транзистор и дальше начнет выполнять свою
программу, и по завершению которой, снова обрубит собственное питание.


С дураком спорить бесполезно!
 
Форум » РАДИОТЕХНИКА » Полезные устройства » Понижаем энергопотребление устройств на микроконтроллерах AV
Страница 1 из 11
Поиск:
Новый ответ
Имя:
Текст сообщения:
Опции сообщения:
Код безопасности:
Яндекс.Метрика
24 log 24 LOG statistick
счетчик посещений
Если вы видите это,
то ваш браузер устарел
и не поддерживает технологий
CSS 3.0