Вход/Регистрация
Программируем Arduino. Основы работы со скетчами
вернуться

Монк Саймон

Шрифт:

Ток (светодиод выключен), мА

CLOCK_PRESCALER_1

16 МГц

7,8

CLOCK_PRESCALER_2

8 МГц

5,4

CLOCK_PRESCALER_4

4 МГц

4,0

CLOCK_PRESCALER_8

2 МГц

3,2

CLOCK_PRESCALER_16

1 МГц

2,6

CLOCK_PRESCALER_32

500 кГц

2,3

CLOCK_PRESCALER_64

250 кГц

2,2

CLOCK_PRESCALER_128

125 кГц

2,1

CLOCK_PRESCALER_256

62,5 кГц

2,1

Рис. 5.3. График зависимости потребляемого тока от тактовой частоты

Помимо необходимости использовать новые версии millis и delay снижение тактовой частоты влечет за собой еще ряд следствий. Фактически любая операция, чувствительная к изменению тактовой частоты, такая как вывод аналоговых сигналов PWM или управление сервоприводами, будет выполняться не так, как ожидается.

Большая доля тока из 2,1 мА, потребляемого на самой низкой скорости, вероятнее всего, будет поглощена светодиодом On, поэтому, если вас действительно заботит проблема снижения энергопотребления, вам стоит аккуратно выпаять его из платы.

Выключение электронных компонентов на плате

Контроллеры ATmega имеют широкие возможности управления электропитанием, настолько широкие, что способны отключать неиспользуемые электронные компоненты на плате, чтобы уменьшить потребляемый ток.

Более того, компоненты можно включать и выключать прямо из скетча. То есть можно, к примеру, включать АЦП непосредственно перед вызовом analogRead и затем выключать его.

Управление электропитанием осуществляется с помощью библиотеки avr/power.h, включающей пары функций включения/выключения. Например, вызовом функции power_adc_disable можно выключить АЦП, а вызовом power_adc_enable вновь включить.

Однако экономия электроэнергии за счет отключения компонентов будет получаться не очень большой. В ходе экспериментов с платой Mini Pro, питающейся напряжением 5 В и действующей на частоте 16 МГц, я установил, что, когда все компоненты включены, она потребляет ток 16,4 мА, а когда выключены — что-то около 14,9 мА, то есть снижение составило всего на 1,5 мА. Для измерений я использовал следующий скетч:

// sketch_05_02_powering_off

#include <avr/power.h>

void setup

{

pinMode(13, OUTPUT);

// power_adc_disable;

power_spi_disable;

// power_twi_disable;

// power_usart0_disable;

// power_timer0_disable;

// power_timer1_disable;

// power_timer2_disable;

// power_all_disable;

}

void loop

{

}

Доступные функции перечислены в табл. 5.3. Каждая функция имеет пару с окончанием enable вместо disable в имени.

Таблица 5.3. Функции управления электропитанием для ATmega Arduino

Функция

Описание

power_adc_disable

Выключает аналоговые входы

power_spi_disable

Отключает интерфейс SPI

power_twi_disable

Отключает интерфейс TWI (I2C)

power_usart0_disable

Отключает УСАПП (UART, интерфейс последовательной связи через USB)

power_timer0_disable

Отключает таймер 0 (используется функциями millis и delay)

power_timer1_disable

Отключает таймер 1

power_timer2_disable

Отключает таймер 2

power_all_disable

Отключает все компоненты, перечисленные выше

Энергосберегающий режим

Самый действенный способ экономии электроэнергии — перевести плату Arduino в спящий режим на время, пока она не совершает полезной работы.

Narcoleptic

Питер Кнайт создал простую в использовании библиотеку с названием Narcoleptic, которую можно получить по адресу https://code.google.com/p/narcoleptic/.

Очевидно, что нет смысла переводить Arduino в энергосберегающий режим, не имея возможности вернуть ее в нормальный режим работы! Существует два способа возврата Arduino к нормальной работе. Один из них — использовать внешнее прерывание, а другой — установить таймер, который обеспечит выход в нормальный режим через определенный интервал времени. Библиотека опирается на использование таймера.

Библиотека Narcoleptic предоставляет альтернативную функцию delay, которая переводит Arduino в энергосберегающий режим на время, указанное в вызове delay. Поскольку в ходе задержки все равно ничего не происходит, этот метод действует блестяще.

  • Читать дальше
  • 1
  • ...
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: