Чтение онлайн

на главную - закладки

Жанры

Программируем Arduino. Основы работы со скетчами
Шрифт:

Время работы батареи = Емкость батареи/Потребляемый ток.

Например, если для питания 3-вольтовой платы Mini Pro использовать батарею CR2025, можно ожидать, что ее хватит на 20 часов (160 мА·ч/8 мА). Если ту же плату запитать от литий-полимерного аккумулятора емкостью 2400 мА·ч, можно надеяться, что его хватит на 300 часов (2400 мА·ч /8 мА).

Снижение рабочей частоты

Большинство плат семейства Arduino работает с тактовой частотой 16 МГц. Основное потребление электроэнергии микроконтроллером происходит

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

Снизить рабочую частоту микроконтроллера ATmega328 можно прямо из скетча. Для этой цели удобно использовать библиотеку Arduino Prescaler .

Библиотека Prescaler не только позволяет уменьшить рабочую частоту микроконтроллера, но и предоставляет свои версии функций millis и delay с именами trueMillis и trueDelay. Такая замена совершенно необходима, потому что уменьшение тактовой частоты увеличивает задержки в той же пропорции.

Скетч в следующем примере включает светодиод L на 1 с и затем выключает на 5 с, в течение которых потребляемый ток измерялся для всех возможных значений деления частоты, поддерживаемых библиотекой Prescaler.

// sketch_05_01_prescale

#include <Prescaler.h>

void setup

{

pinMode(13, OUTPUT);

setClockPrescaler(CLOCK_PRESCALER_256);

}

void loop

{

digitalWrite(13, HIGH);

trueDelay(1000);

digitalWrite(13, LOW);

trueDelay(5000);

}

Библиотека предоставляет множество констант деления тактовой частоты. Так, константа CLOCK_PRESCALER_1 оставляет исходную тактовую частоту 16 МГц, а противоположная ей константа CLOCK_PRESCALER_256 делит исходную тактовую частоту на 256, устанавливая ее на уровне всего 62,5 кГц.

В табл. 5.2 показаны результаты измерения потребляемого тока на всех возможных частотах, а на рис. 5.3 те же данные представлены в виде графика. Как видно на графике, кривая потребления тока быстро выравнивается, поэтому частота 1 МГц выглядит наиболее оптимальным компромиссом между частотой и потребляемым током.

Таблица 5.2. Потребляемый ток в зависимости от тактовой частоты

Константа

Эквивалентная тактовая частота

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

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

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

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9