Питание Arduino Mini Pro с использованием батареи CR2032 в качестве пульта дистанционного управления

Я собираюсь сделать свой собственный пульт дистанционного управления с использованием Arduino Mini Pro и некоторых радиочастотных трансиверов. Приемная сторона не будет проблемой, но удаленный будет. Я хочу сделать его как можно меньше и потреблять как можно меньше энергии.

Можно ли включить Arduino Mini Pro одним нажатием кнопки, одновременно используя эту же кнопку для запуска фрагмента кода? Таким образом, я могу отключить питание, когда оно не нажимается.

Я обязательно закодирую его, поэтому мне нужно удерживать кнопку нажатой в течение 1–1,5 секунды, чтобы у него было время «загрузиться» и отправить радиочастотный сигнал, но он должен немедленно выключиться, как только я отпущу кнопку. кнопка.

Какой мощности следует ожидать от одной батареи CR2032? У меня есть пара радиочастотных трансиверов NRF24L01 и Arduino Mini Pro.

Если мы предположим это, просматривая этот лист:

NRF24L01: 10 mA per second (low-ball)
ATmega328P: 5 mA per second (low-ball)
CR2032: 0.19 mA @ 2V = 2100+ hours

Даже если мы просто скажем 600 часов и для включения чего-либо потребуется 2 секунды, я смогу запустить это 600H*60M*60S = 2.160.000 секунд = 1.080.000 раз. Если мои расчеты не совсем ошибочны, это означает, что в худшем случае я могу включить его буквально миллион раз.

Надеюсь, этот расчет ошибочен, потому что это кажется безумием.

РЕДАКТИРОВАТЬ: Я мог бы также отпаять светодиод и обычный, если это не слишком сильно его повредит. Просто чтобы потреблять энергию. Я читал, что тогда смогу запустить его бесплатно.

, 👍0


2 ответа


2

Вам следует взглянуть на ATmega328P. таблица данных

На странице 2 написано: шесть режимов сна: режим ожидания, шумоподавление АЦП, энергосбережение, пониженное энергопотребление, режим ожидания и расширенный режим ожидания.

Это режимы, которые можно использовать для перевода Arduino Pro Mini в режим ожидания. Вы можете найти их в таблице данных и выбрать тот, который лучше всего подходит вам. Чтобы узнать больше о спящем режиме и других методах экономии заряда батареи, вы можете просмотреть этот источник: Arduino Low Power — Как запустить ATmega328P в течение года на батарее типа «таблетка»

В паспорте аккумулятора следует обратить внимание на его заряд:

Типичная емкость: 240 мАч (до 2,0 В)

Это значит, что от 3 до 2 Вольт он высвобождает 240 мАч. Это плата, которую вы можете рассчитывать на использование. Используя нормы потребления, которые вы указали выше

NRF24L01: 10 mA per second (low-ball)
ATmega328P: 5 mA per second (low-ball)
CR2032: 240 mAh
Time: 240mAh/(10mA + 5mA) = 16 hours

Что не так уж и много. Чтобы увеличить эту автономность, ссылка, которую я разместил выше, весьма полезна, поскольку она покажет вам альтернативы, такие как удаление регулятора напряжения, что значительно снизит ваше потребление. Теперь, если вы действительно любите приключения, вы можете посмотреть, как разогнать вашу плату: Arduino pro mini @ 1 МГц — 1,8 В. Это очень эффективный способ экономии энергии там, где тактовая частота не является обязательной.


Обновление после комментариев:

16 часов были рассчитаны с использованием тока 5 мА для Arduino (это значение энергопотребления, которое можно ожидать в активном режиме) и 10 мА для NRF24L01. Вам необходимо оценить потребление в спящем режиме для обоих и процент времени в спящем режиме, если вы хотите оценить автономность. По ссылке, которую я вам отправил про спящий режим, есть несколько таблиц с энергопотреблением в разных конфигурациях.

ATmega328P может работать при напряжении не менее 1,8 В, а nRF24L01+ — при напряжении не менее 1,9 В — см. техническая таблица. Так что, вероятно, вам понадобится чуть больше 240 мАч для работы. На вашей батарее не будет постоянного напряжения 3 В. Он начинается с 3 В (может быть, немного больше) и постепенно снижает его напряжение по мере подачи заряда в цепь. Как только напряжение упадет ниже 1,9 В, правильная работа nRF24L01+ не будет гарантирована.

Определенно, перевод Pro Mini в спящий режим и простое его пробуждение во время использования — это правильный способ проектирования этой схемы. Согласно этой ссылке, которую я разместил выше, потребляемая мощность для Arduino должна составлять 0,90 мА. В пункте 5.1 технического описания nRF24L01+ описано, что он потребляет 0,32 мА в режиме ожидания II . Если вы отключите Pro Mini, скажем, 90% времени, не снимая светодиоды или регуляторы напряжения, вы можете это оценить.

t = 240mAh * (0.1/(5mA+10mA) + (0.9/(0.9mA+0.32mA)) = 178.65 hours

Если вы используете стратегии по снижению энергопотребления Arduino, подобные тем, которые я отправил вам выше, вы можете увеличить это время. Вы также сэкономите электроэнергию, если переключите nRF24L01+ из режима ожидания 2 в режим ожидания 1. Проверьте базу данных, чтобы узнать, какой из них соответствует вашим потребностям.

,

Спасибо за ваш ответ! Эти 16 часов означают, что он действительно излучает радиочастотные сигналы в воздух, верно? Таким образом, я мог бы питать ATmega328P Arduino Mini Pro и радиочастотный сигнал в течение 16 часов, прежде чем батарея полностью разрядится (если предположить, что она все время остается на уровне 3 В)? Будет ли достаточно эффективно просто перевести ATmega328P в режим сна, а затем проснуться нажатием кнопки? Сохранит ли это работу батареи CR2032 достаточно долго, чтобы я мог использовать ее месяцами?, @MortenMoulder

Я обновил ответ., @rvbarreto


0

Если у вас есть одна кнопка, бесполезно использовать ее для запуска фрагмента кода. Тот факт, что питание включено, означает, что кнопка нажата.

schematic

Конечно, вам понадобится Arduino PRO Mini 3,3 В...

Если у вас несколько кнопок, вы можете использовать разные схемы для обнаружения этого.

Решение 1

Используйте набор диодов для питания платы, а затем еще один для обнаружения цифровых контактов.

schematic

Второй набор диодов необходим, потому что на контактах Atmega не должно быть напряжения выше Vcc+0,5В. Поскольку необходим подтягивающий резистор, при желании можно заменить второй набор диодов резисторами 2к2.

Решение 2

Снова используйте набор диодов для питания платы, а затем декодируйте значение посредством аналогового считывания

schematic

Вам придется немного поэкспериментировать, чтобы определить пороговые значения. Например, используя записанные мной значения, вы можете ожидать, что АЦП прочтет значение около 1000 для кнопки 1, значение около 600 для кнопки 2 и 300 для кнопки 3; по этой причине вы пишите

int buttonRawValue = analogRead(A1);
if (buttonRawValue > 800) {
    // Кнопка 1 была нажата
}
else if (buttonRawValue > 450) {
    // Кнопка 2 была нажата
}
else {
    // Кнопка 3 была нажата
}

Это потребует некоторой настройки, но я думаю, что это сработает.

Решение 3

Вы можете запитать плату через транзистор (я обычно предпочитаю небольшие МОП-транзисторы)

schematic

Вам нужно будет найти МОП с очень низким Vgs-th, так как он должен полностью включиться при напряжении 1,5В. Преимущество этого решения заключается в том, что вы не тратите впустую имеющееся у вас небольшое напряжение (в то время как другие тратят около 0,3 В для диодов Шоттки и 0,6 В для PN-диодов).

Лично я бы выбрал решение 3, поскольку также легко позволить Atmega управлять питанием (просто подключите один из цифровых выходов к катодам диодов, и ATMEGA сможет принудительно включать питание до тех пор, пока он завершил операции).

В качестве примечания: я бы рекомендовал вам не использовать готовую плату, а использовать в этом проекте голую ATMEGA328P. Вы можете поэкспериментировать с другой платой Arduino, а затем использовать ее для прошивки голой ATMEGA; вы избавитесь от всего ненужного. Вы можете не использовать кристалл и стабилизатор напряжения , поэтому ваша схема будет состоять только из компонентов, которые я использовал в схемах, и конденсатора емкостью 100 нФ между выводами VCC и GND микроконтроллера.

И... Не прошивайте загрузчик. Используйте другую плату Arduino для прошивки микроконтроллера, а не последовательного периферийного устройства. Это потому, что загрузчик полезен, но при загрузке он тратит несколько секунд (и нужно действовать как можно быстрее)

,