Программируем Arduino. Основы работы со скетчами
Шрифт:
{
}
Теперь скетч выполняется всего 17 с, то есть, грубо, в 6,5 раза быстрее, а скорость измерений увеличилась до 58 000 в секунду. Этого вполне достаточно для оцифровки аудиосигнала, хотя при наличии всего 2 Кбайт ОЗУ вы не сможете записать большой фрагмент!
Если первоначальный вариант скетча sketch_04_11_analog запустить в Arduino Due, он справится с работой за 39 с. Однако в модели Due не получится использовать трюк с регистрами портов, так как она имеет совсем другую архитектуру.
В
В этой главе мы попытались выжать все до последней капли из наших скудных 16 МГц. В следующей главе переключим внимание на снижение потребления электроэнергии платой Arduino, что очень важно для проектов, где плату предполагается питать от аккумуляторов или солнечных батарей.
5. Снижение потребления электроэнергии
Справедливости ради следует отметить, что и без применения специальных мер платы Arduino потребляют не особенно много электроэнергии. Обычно Arduino Uno потребляет ток около 40 мА, что при питании через разъем USB с напряжением 5 В составляет всего 200 мВт. Это означает, что она может благополучно работать около четырех часов, питаясь от аккумулятора 9 В (емкостью 150 мА·ч).
Потребление электроэнергии становится важным аспектом, когда плата Arduino должна работать длительное время, питаясь от аккумулятора, как в системах удаленного мониторинга или управления, когда аккумуляторы или солнечные батареи остаются единственно возможным источником питания. Например, недавно на основе платы Arduino я реализовал автоматическое управление дверью в птичник, использовав небольшую солнечную панель для зарядки аккумулятора, емкости которого достаточно только для того, чтобы открыть и закрыть дверь два раза в день.
Потребление электроэнергии платами Arduino
Прежде всего определим параметры потребления электроэнергии наиболее популярными платами Arduino. В табл. 5.1 представлены результаты непосредственных измерений амперметром силы тока, потребляемого платами. Имейте в виду, что измерение силы потребляемого тока не самая простая задача, так как он меняется, когда при выполнении периодических задач в работу включаются таймеры и другие компоненты микроконтроллера и платы Arduino.
Таблица 5.1. Потребление электроэнергии платами Arduino
Плата
Ток, мА
Uno (5 В, USB)
47
Uno (9 В, внешний источник питания)
48
Uno (5 В, с извлеченным процессором)
32
Uno (9 В, с извлеченным процессором)
40
Leonardo (5 В, USB)
42
Due (5 В, USB)
160
Due (9 В, внешний источник питания)
70
Mini Pro (9 В, внешний источник питания)
42
Mini Pro (5 В, USB)
22
Mini Pro (3,3 В, непосредственно)
8
Обратите внимание на то, как различается ток, потребляемый платами Arduino, питающимися напряжением 5 В, с процессором и без него. Разница составляет всего 15
Приемы, описываемые далее, помогают снизить потребление электроэнергии процессором, но не самой платой. В примерах, приведенных в дальнейшем, я использовал плату Arduino Mini Pro, питающуюся непосредственно напряжением 3,3 В через контакты VCC и GND (рис. 5.1) в обход стабилизатора напряжения, чтобы кроме светодиода On питание подводилось только к микроконтроллеру.
Рис. 5.1. Плата Arduino Mini Pro, запитанная непосредственно напряжением 3 В
Такая схема часто используется в системах с автономным питанием от аккумуляторов, например от единственного литий-полимерного (Lithium Polymer, LiPo) аккумулятора, дающего напряжение 2,7 В, когда почти разряжен, и 4,2 В, когда полностью заряжен, который прекрасно подходит для непосредственного питания микроконтроллера ATmega328.
Ток и аккумуляторы
Эта книга посвящена программному обеспечению, поэтому я не буду останавливаться на обсуждении аккумуляторов дольше, чем необходимо. На рис. 5.2 изображены аккумуляторы, которые можно использовать для питания плат Arduino.
Слева вверху изображен цилиндрический литий-полимерный аккумулятор емкостью 2400 мА·ч. Ниже — небольшой плоский литий-полимерный аккумулятор емкостью 850 мА·ч. Литий-полимерные аккумуляторы имеют небольшой вес, могут перезаряжаться много раз и имеют большую емкость для своих веса и размеров. Справа вверху изображен 9-вольтовый никель-металлгидридный аккумулятор емкостью 200 мА·ч. Этот
Рис. 5.2. Аккумуляторы для питания плат Arduino
аккумулятор тоже поддерживает многократную перезарядку, но создан по устаревшей технологии. Так как он имеет выходное напряжение 9 В, его можно использовать для питания плат Arduino только через встроенный стабилизатор напряжения. Вы можете приобрести специальные зажимы для подключения аккумулятора к контактам питания Arduino. Наконец, справа внизу изображена 3-вольтовая незаряжаемая литиевая батарея (CR2025) емкостью около 160 мА·ч.
Как правило, чтобы получить время в часах, в течение которого аккумулятор продержится, прежде чем полностью разрядится, достаточно разделить емкость аккумулятора в миллиампер-часах [мА·ч] на силу потребляемого тока в миллиамперах [мА]: