Arduino включается с таймером каждые 24 часа

9

В настоящее время я работаю над проектом Arduino, который отправляет мне зарядку автомобильного аккумулятора один раз в день через ESP8266. Зимой я не езжу на своей машине, и мне хотелось бы получать информацию, когда батарея падает до критического значения, чтобы я мог зарядить ее и предотвратить повреждение.

Поэтому энергоэффективность важна для проекта, поэтому она не разряжает саму батарею. Я много читал о спящем режиме, эффективных регуляторах сброса и т. Д. Общим является то, что регулятор напряжения всегда работает, а это не то, чего я хочу.

Я ищу какую-то "схему по таймеру". Он должен вести обратный отсчет 24 часа, а затем включить реле или полевой МОП-транзистор, который подключает регулятор напряжения к источнику питания, а затем включает Arduino и ESP8266. Когда Arduino завершает передачу, он сбрасывает таймер, который отключает регулятор напряжения от питания и так далее. Конечно, схема таймера должна потреблять очень мало энергии.

Кто-нибудь знает такую ​​схему? Я искал на AliExpress все варианты слов, которые мне приходили в голову, но безуспешно. Или, может быть, IC, которая может быть использована (легко) для создания такой схемы?

Дирк Питт
источник
1
Не все регуляторы напряжения одинаковы. Некоторые будут использовать только несколько микроампер.
Гербен
Думая из коробки ... Разве стандартного таймера не достаточно?
user31208

Ответы:

5

Одним из подходов было бы использование модуля DS3231 (точные часы реального времени). Такие модули продаются на Ebay менее чем за 1 доллар. Ищите ds3231 arduino.

Как правило, эти модули имеют шестиконтактный разъем с контактами, обозначенными 32K, SQW, SCL, SDA, VCC и GND. Как отмечено в спецификациях DS3231, вывод INT / SQW используется либо для прямоугольного выхода, либо для выхода прерывания. На странице 13 спецификации в разделе «Регистр управления» написано:

Бит 2: управление прерыванием (INTCN). Этот бит управляет сигналом INT / SQW. Когда бит INTCN установлен на логический 0, на вывод INT / SQW выводится прямоугольная волна. Когда бит INTCN установлен на логику 1, то совпадение между регистрами учета времени и любым из регистров сигнализации активирует выход INT / SQW (если сигнализация также включена).

Первоначально вы должны запустить эскиз для настройки DS3231: включить ежедневную сигнализацию, включить прерывание, а не прямоугольную волну, установить текущее время и т. Д. Затем загрузить рабочую программу, которая каждый раз считывает напряжение аккумулятора автомобиля. и действует соответственно.

Вывод DS3231 INT / SQW будет подключен к затвору мосфета с P-каналом, который переключает питание 12 В на Arduino. P-fet будет включаться, когда включается выходной контакт INT / SQW с открытым стоком. Операционная программа выполняет свою работу, а затем сбрасывает флаг прерывания DS3231, чтобы отключить питание до следующего аварийного сигнала. (Для отладки установите более короткие интервалы, чем один день; например, раз в минуту, как описано в Таблице 2, Биты маски сигнализации, на странице 12 спецификаций.)

Как правило, DS3231 потребляет 0,84 мкА при работе от батареи 3,3 В или 1 мкА от 5 В. См. Электрические характеристики, стр. 3 спецификации.

Джеймс Уолдби - jwpat7
источник
1
Ворота P-fet, вероятно, должны быть подняты до +12 через нечто вроде резистора в 1 МОм; иначе это было бы эффективно открыто, когда вывод INT / SQW выключен, и мог плавать к произвольным уровням
Джеймс Уолдби - jwpat7
3

Таймер или цепь таймера должны были бы потреблять некоторый ток. Любой из микросхем AVR пико-мощности потребляет очень мало тока в спящем режиме - если не ошибаюсь, в десятках микроампер для 328-го. Спящий AVR для наименьшего потребления тока требует, чтобы практически все было отключено, кроме сторожевого таймера, и максимальный период WDT составляет 8 секунд. Такая библиотека, как Narcoleptic, будет управлять вами дольше. Однако вам нужно обеспечить гораздо более эффективный регулируемый источник питания, чем тот, который встроен в плату Arduino (если это то, что вы будете использовать). После этого нагрузка Arduino на автомобильный аккумулятор должна быть микроскопической.

Одним из возможных вариантов эффективного питания является набор щелочных батарей, скажем, 3 последовательно для выходной 4,5 (в то время как свежая) 2 или более таких параллельных цепей, подключенных непосредственно к шине 5 В.

Я не занимался планированием энергопотребления, чтобы узнать, какая емкость вам нужна, и нужны ли вам D-ячейки или можно создать практичный массив из более мелких, например, AA, но это способ достичь нулевой нагрузки на автомобильный аккумулятор. (без учета требования к датчику напряжения автомобильного аккумулятора). Возможно, вы захотите включить информацию о состоянии батарейного массива Arduino в ежедневный отчет, или, по цене нескольких щелочных батарей, вы можете перепроектировать батарею Arduino, так что мониторинг ее станет ненужным.

Пара данных указывает на то, что возможен отдельный аккумулятор:

  • Один щелочной аккумулятор 9 В работает детектор дыма более года, включая зимовку на чердаке без подогрева (по моему опыту), а щелочные батареи 9 В не известны своей мощностью.
  • Мой цифровой термостат с задержкой срабатывал в течение двух лет на 2 батареях АА, а затем они умерли, а затем я стал мудрым и начал менять их ежегодно. :)
JRobert
источник
У меня ATmega48 (очень похожий на 328P), работающий на паре ячеек АА с июня 2012 года. Он не спит чуть больше 4 минут в день, спит в остальное время. Пока не менял батарейки.
Эдгар Бонет
Это впечатляющее время выполнения - спасибо за дополнительную информацию, @EdgarBonet! Я ожидал, что спящий Arduino и щелочная батарея могут быть системой «установи и забудь», но, не рассчитывая энергопотребление, я не предполагал, что она будет работать так же хорошо. Итак, @DirkPitt, есть некоторые реальные данные поддержки.
JRobert
Это не полноценный Arduino: мне не удалось подняться ниже ~ 40 мА с моим Uno, тогда как чистый ATmega in SLEEP_MODE_PWR_SAVE, с активным только асинхронным таймером, потребовал что-то вроде 2 мкА.
Эдгар Бонет
-1

Вы можете использовать таймер. Вы можете купить его на Ebay примерно за 5 евро. я использую этот

https://www.ebay.com/itm/CN101-DC-12V-16A-Digital-LCD-Power-Programmable-Timer-Time-Relay-Switch-New/401190616827?hash=item5d68d2fefb:g:K3sAAOSwNRdX3ggT

Я также пробовал DS3231, но Arduino находится в режиме ожидания, и он потребляет энергию. это лучшее решение, которое я нашел

Никос Папаврамопулос
источник