Accendi Arduino con il timer ogni 24 ore


9

Attualmente sto lavorando a un progetto Arduino che mi invia la carica della batteria dell'auto una volta al giorno tramite un ESP8266. Durante l'inverno non guido la mia auto e vorrei essere informato quando la batteria scende oltre un valore critico, quindi posso caricarla e prevenire danni.

Quindi l'efficienza energetica è importante per il progetto, quindi non scarica la batteria stessa. Ho letto molto sulla modalità di sospensione, regolatori a discesa efficienti ecc. Tutti hanno in comune che il regolatore di tensione è sempre in funzione, il che non è quello che voglio.

Sto cercando una sorta di "circuito swich-on-timer". Dovrebbe contare alla rovescia di 24 ore e quindi attivare un relè o MOSFET, che collega il regolatore di tensione all'alimentazione e quindi accende Arduino e ESP8266. Quando Arduino ha terminato la trasmissione, reimposta il timer, che scollega il regolatore di tensione dall'alimentazione e così via. Naturalmente, il circuito del timer dovrebbe usare solo pochissima energia.

Qualcuno conosce un circuito del genere? Ho cercato su AliExpress con tutte le varianti di parole che mi sono venute in mente, senza successo. O forse un circuito integrato che può essere utilizzato (facilmente) per creare un tale circuito?


1
Non tutti i regolatori di tensione sono uguali. Alcuni useranno solo pochi micro-amplificatori.
Gerben,

Pensare fuori dagli schemi ... Non è sufficiente un normale timer-switch ?
user31208

Risposte:


5

Un approccio sarebbe l'uso di un modulo DS3231 (Precision Real Time Clock). Tali moduli vendono su Ebay per meno di $ 1. Cerca ds3231 arduino.

In genere, questi moduli hanno un connettore a sei pin, con pin etichettati 32K, SQW, SCL, SDA, VCC e GND. Come indicato nelle specifiche DS3231, il pin INT / SQW viene utilizzato per l'uscita ad onda quadra o per l'uscita di interruzione. A pagina 13 delle specifiche, nella sezione Registro di controllo, si dice:

Bit 2: Interrupt Control (INTCN). Questo bit controlla il segnale INT / SQW. Quando il bit INTCN è impostato su 0 logico, un'onda quadra viene emessa sul pin INT / SQW. Quando il bit INTCN è impostato sulla logica 1, una corrispondenza tra i registri di tempo e uno dei registri di allarme attiva l'uscita INT / SQW (se anche l'allarme è abilitato).

Inizialmente, eseguiresti uno schizzo per configurare il DS3231: attiva un allarme giornaliero, abilita un interruzione anziché un'onda quadra, imposta l'ora corrente, ecc. Quindi, carica un programma operativo che legge la tensione della batteria dell'auto ogni volta che viene eseguito e agisce in modo appropriato.

Il pin DS3231 INT / SQW verrebbe collegato al gate di un mosfet a canale P che commuta l'alimentazione a 12V su Arduino. Il P-fet si accenderà quando si accende il pin di uscita INT / SQW dell'uscita di drain aperto dell'allarme. Il programma operativo fa i suoi affari e quindi cancella il flag di interruzione DS3231, per spegnere l'alimentazione fino al successivo allarme. (Per il debug, impostare intervalli più brevi di un giorno; ad esempio, una volta al minuto, come descritto nella Tabella 2, Bit maschera di allarme, a pagina 12 delle specifiche.)

In genere, il DS3231 assorbe 0,84 μA quando funziona con una batteria da 3,3 V o 1 μA da 5 V. Vedere Caratteristiche elettriche, pagina 3 delle specifiche.


1
Probabilmente il gate P-fet dovrebbe essere tirato fino a +12 attraverso qualcosa come una resistenza da 1 megaohm; altrimenti sarebbe effettivamente aperto quando il pin INT / SQW è spento e potrebbe fluttuare a livelli arbitrari
James Waldby - jwpat7

3

Il timer o il circuito stesso dovrebbero assorbire corrente. Tutti i chip AVR pico-power assorbono pochissima corrente in modalità sleep - nei 10s di micro-amplificatori per il 328, se ricordo bene. La sospensione di un AVR per il minor assorbimento di corrente richiede quasi tutto l'arresto, tranne il timer del watchdog, e il periodo WDT massimo è di 8 sec. Una biblioteca come Narcoleptic gestirà periodi più lunghi per te. Quello che dovresti fare, però, è fornire un alimentatore regolato molto più efficiente di quello integrato sulla scheda Arduino (se è quello che utilizzerai). Fatto ciò, il carico dell'Arduino sulla batteria dell'auto dovrebbe essere microscopico.

Un possibile progetto per un'alimentazione efficiente è un array di batterie alcaline, diciamo 3 in serie per 4,5 uscite (mentre fresche) volte 2 o più di tali stringhe in parallelo, collegate direttamente al bus 5v.

Non ho fatto il power budgeting per conoscere la capacità di cui avresti bisogno e se avresti bisogno di celle D o potresti fare un array pratico da quelli più piccoli, diciamo AA, ma questo è un modo per raggiungere il carico zero sulla batteria dell'auto (attualizzazione dei requisiti del sensore di tensione batteria auto). È possibile che si desideri includere lo stato dell'array di batterie Arduino nel report giornaliero oppure, al prezzo di alcuni alcalini, è possibile progettare in modo eccessivo la batteria Arduino che il monitoraggio non sarebbe necessario.

Un paio di punti dati suggeriscono che una batteria separata è un approccio fattibile:

  • Un singolo alcalino 9v gestisce un rilevatore di fumo per oltre un anno, incluso lo svernamento in una soffitta non riscaldata (secondo la mia esperienza), e gli alcalini 9v non sono noti per la loro capacità.
  • Il mio termostato digitale per il set-back ha funzionato per un paio d'anni su 2 celle AA, prima che a) morissero eb) che io sapessi e ho iniziato a cambiarle ogni anno. :)

Ho un ATmega48 (molto simile al 328P) che scappa da un paio di celle AA dal giugno 2012. È sveglio per poco più di 4 minuti al giorno, dormendo il resto del tempo. Finora non ho cambiato le batterie.
Edgar Bonet,

È un tempo di esecuzione impressionante - grazie per il punto dati aggiuntivo, @EdgarBonet! Mi aspettavo che un Arduino addormentato e un pacco batterie alcalino potessero essere un sistema "imposta e dimentica" ma senza calcolare il consumo di energia, non immaginavo che avrebbe funzionato così bene. Quindi, @DirkPitt, ci sono alcuni dati di supporto nel mondo reale.
JRobert,

Non è un Arduino completo: non sono riuscito a scendere sotto ~ 40 mA con il mio Uno, mentre l'ATmega nudo SLEEP_MODE_PWR_SAVE, con solo il timer asincrono attivo, ha preso qualcosa come 2 µA.
Edgar Bonet,


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.