сценарий
Я создал хороший электронный дверной замок для своей комнаты в общежитии. В настоящее время это Arduino Diecimila с сервоприводом, запирающим дверь. Он имеет цифровую клавиатуру с кнопками 3х4 и 5 светодиодами (2 пары серий и один светодиод). В настоящее время он работает на зарядном устройстве для мобильных телефонов.
Теперь я переработал его для работы на автономном Arduino (ATmega328), но очень хотел бы, чтобы он работал на батарейках АА или даже на 9В.
Что касается программной части, я подумал, что мог бы помещать sleep
вызовы на определенное время в циклический метод, чтобы поддерживать энергопотребление ATmega как можно ниже. И пусть светодиод «мигает» как можно дольше.
Вопрос 1
Когда кнопка нажимается в течение нескольких миллисекунд, в течение которых плата спит, будет ли она «запомнена» / «удерживаться» до тех пор, пока не выйдет из спящего режима, а затем будет нажата как нажатие кнопки?
Каков наилучший способ справиться с нажатием этой кнопки во сне? Могу ли я кодировать его, чтобы он проснулся после нажатия кнопки, или я должен просто дать ему поспать, например, на 10 минут. в каждом цикле?
вопрос 2
Как бы я подошел к математике расчета количества батарей типа АА, необходимых для работы этого устройства в течение 10 месяцев?
Кроме того, я не знаю, как измерить среднее энергопотребление в минуту или около того, так как оно быстро меняется и т. Д.
Сейчас у меня на столе Arduino Pro Mini, который работает от 2 батареек АА и может работать более года, если это необходимо.
Есть три аспекта дизайна, которые достигли этого.
1. Другой регулятор
Я использую буст-регулятор LTC3525. Он имеет очень низкий ток покоя (7 мкА) и высокую эффективность (> 90% при 0,2 мА). Что-то вроде этой доски sparkfun https://www.sparkfun.com/products/8999 должно выполнять аналогичную работу. Убедитесь, что он подключен к 5-вольтовому выводу на Arduino, а не к VIN, так что регулятор Arduino не используется.
2. Sleeeeeeep
Доля времени, в течение которого устройство активно, будет небольшой. В остальное время устройство должно спать в SLEEP_MODE_POWER_DOWN. Вы можете основывать свои режимы сна из Библиотеки малой мощности Rocketscreem . Согласно этой ссылке, вы сможете снизить ее до 1,7 мкА с отключенными АЦП, БПК и WDT и в режиме отключения питания.
3. Прерывания
Другая половина сна прерывается, чтобы разбудить его. В спящем режиме Power Down только прерывания уровня на INT1 и INT2, TWI совпадают, и WDT разбудит его. Таким образом, вам нужно подключить кнопку к INT1 или INT2, чтобы нажатие кнопки активировало ее.
Другие вещи:
Выключите все светодиоды, если это абсолютно необходимо. Если замок находится в помещении, светодиоды не должны быть яркими, что экономит больше энергии. Также, если вам нужно, чтобы MCU регулярно выполнял какую-то задачу, используйте сторожевой таймер, чтобы периодически его разбудить.
Редактировать:
Один из методов, который может сработать, - это использовать вышеупомянутую библиотеку с низким энергопотреблением и спать по 60 мс каждый цикл благодаря сторожевому таймеру. При пробуждении проверьте наличие нажатия кнопки. Функция для вызова будет
источник
Все эти комментарии на месте. Я хотел бы добавить еще несколько предложений:
1) Для светодиодов используйте мощные светодиоды 20 мА. Вот логика. Допустим, вам нужен неяркий индикатор состояния, который мигает каждые 8 секунд. Вы не хотите, чтобы он был ярким, поэтому вы используете какой-то случайный светодиод. Проблема в том, что тусклый светодиод все еще использует 20 мА (или больше) для вывода только 100 мкд. Вместо этого возьмите светодиод высокой мощности, который по-прежнему рассчитан на 20 мА, но может выдавать 4000 мкд (убедитесь, что вы смотрите на выходной угол, вы все равно, вероятно, хотите, чтобы он был 30 градусов или больше). С этим светодиодом 4000 мкД вы подключаете его к чему-то вроде резистора 3,3 кОм и получаете около 100 мкд светового выхода, но используете менее 1 мА. Таким образом, вместо 20 мА для индикатора состояния, вы используете долю одного мА. Я также обычно устанавливаю мигание светодиода состояния только на 5-15 мс, что также может сэкономить много энергии, если раньше у вас была вспышка на 100 мс.
2) Мой регулятор напряжения - Microchip MCP1700. Он использует только 1,6 мкА тока покоя и является очень дешевым (около 0,30 долл. США в небольших количествах). Единственным ограничением является то, что максимальное входное напряжение составляет всего 6 вольт, поэтому вы не можете использовать 9-вольтовую батарею. Но он идеально подходит для 4 батарей типа АА, одноэлементных LiPo или двух литиевых монетных элементов.
3) Для питания цепи ATmega от 4 батареек типа АА я обычно использую диод 1N4001 на VCC, чтобы снизить максимальные 6 вольт от 4 батарей до 5,5 вольт. Кроме того, диод защищает ATmega от обратного напряжения, поэтому он служит двум полезным целям. Делая это, я могу создать схему с питанием от батареи, которая может потреблять всего 0,1 мкА во время сна, поскольку регулятор напряжения не потребляет ток все время.
источник
Я провел тест на чистом atmega328P-PU на макете с использованием библиотеки RocketScream LowPower
Использовал этот эскиз:
С uCurrent Gold я измерил 7.25 мкА в режиме отключения питания.
источник
Здесь есть два вопроса, но только второй действительно является частью названия вопроса, так что, вероятно, лучше, если вы откроете еще один для вопроса программирования Arduino. Я отвечу на второй вопрос здесь.
Единая щелочная 1,5-вольтовая батарея типа AA емкостью около 2600 мАч. Если вы выберете литиевые батареи, вы можете получить около 3400 мАч, если вам повезет. Давайте возьмем эту цифру в качестве основы для абсолютного лучшего случая.
То, как вы рассчитываете теоретическое максимальное время работы для нагрузки, - это просто мощность, деленная на нагрузку. Если ваша нагрузка составляет 1 мА, вы можете запустить ее в течение 3400/1 = 3400 часов = 141 дней = ~ 5 месяцев. Тем не менее, это только теоретический максимум , так как вы начнете получать значительное падение напряжения примерно на 65% к этому времени. Если вы регулируете выход, вы получите эффект разгона, когда чем ниже напряжение батареи, тем больше ток, необходимый для поддержания регулируемого напряжения, что разряжает батарею быстрее. Я был бы удивлен, если бы вы могли извлечь из него более 80% заявленной емкости при достаточно высоком напряжении для работы вашего устройства.
Итак, допустим, что вы получаете 80% этого времени после падения напряжения и неэффективности регулятора. Предположим, что вы работаете при напряжении 3,3 В от трех последовательных батарей. Это все равно даст вам такую же емкость, но напряжения будет достаточно для регулятора. Если ваше устройство работает на 15 мА (это довольно консервативная оценка), цифры будут выглядеть так:
Таким образом, вам понадобится около 144 литиевых батарей (48 комплектов по 3), чтобы работать в течение года. Не так хорошо, как хотелось бы!
Я бы предложил вместо этого использовать регулируемый источник постоянного тока от сети. Может быть включена резервная батарея, которую легко настроить с помощью реле SPDT - просто подключите катушку к источнику постоянного тока и подключите «выключенный» контакт к батарее. Когда происходит сбой постоянного тока, контакт падает и вместо него используется батарея.
источник
Что-то еще никто не упомянул: у вас должен быть какой-то способ отключить источник питания +5 В для питания сервопривода, когда вы им не пользуетесь. Даже когда он не движется, сервопривод все равно будет тянуть силу.
Хороший способ сделать это - FET с затвором, управляемым выводом ввода / вывода от Arduino.
источник
Вы можете рассмотреть возможность использования микроконтроллера, который специально оптимизирован для низкого энергопотребления для вашего следующего дизайна. Для низкого энергопотребления необходимо брать очень низкое энергопотребление во время сна. Часто упускают из виду то, что также важно, насколько быстро он может проснуться от этого сна.
Что важно, так это то, сколько заряда требуется от самого глубокого сна, чтобы обработать прерывание как можно быстрее (потому что импульс мощности будет очень коротким) и снова вернуться в режим сна.
Одним из примеров такого микроконтроллера является MSP430 от Texas Instruments. На их веб-сайте вы найдете заметки о том, как сохранять энергию и собирать энергию.
источник