Powersense... le ultime volontà

Ciao a tutti

Volevo buttare lì un'idea su come allertare il nostro Arduino sulla mancanza di alimentazione (che quindi provoca "normalmente" morte immediata), per poter prendere urgenti provvedimenti quali ad esempio salvare in EEPROM dati essenziali non ancora salvati.

In due parole: un circuitino messo tra il power esterno e l'Arduino fornisce ancora un pizzico di energia prima di spegnersi, segnalando da subito il power fail in corso.

Un partitore (R1/R2) abbatte in modo sicuro l'alimentazione a 5 v o anche meno, che Arduino interpreterà sul pin dichiarato "Sense" come un 1 logico. Un bel condensatore (C1)successivo garantisce la vita ancora per mezzo secondo, o più, sufficiente per riuscire a espletare le ultime volontà, tipo salvare qualcosa in EEPROM Un diodo in mezzo garantisce che la carica residua non influenzi il pin di controllo. Il dimensionamento del condensatore potrebbe dare qualche grattacapo: occorre infatti considerare se tutte le shield/elettronica connessa consentano il minimo di autonomia richiesta per esprimere le ultime volontà ... :roll_eyes:

Il link qui sotto conduce alla libreria e relativo esempio http://mnicolato.altervista.org/powersense/powersense.rar

Ciao e, e se ho fatto la scoperta dell'acqua calda... beh, repetitia iuvant ... !!! :)

Ciao Marco

Mi pare una bella idea ma e' un bel grattacapo il dimensionamento del condensatore. Se hai attaccato uno shield per motori, che disgraziatamente ad esempio alimenti da arduino, vedo gia' difficile implementare con successo questa soluzione. Pero' mi piace.

Federico,

Hai ragione, non avevo considerato motori e altri divoratori di corrente... Altro che condensatori, ci vuole una batteria in tampone alla batteria principale... :) :) :)

Ciao Marco

Bell’idea davvero :slight_smile:
credo che la usero di sicuro in qualcosa :slight_smile:
Bravo :slight_smile:

Questa problematica era venuta fuori tempo fa, mi ricordo forse in un thread in cui si parlava di come implementare un caricabatterie ricaricabili. A parte questo, ci fu un intervento di astrobeed che illustrò una soluzione simile: usare un condensatore di grossa capacità per alimentare l'Arduino negli istanti di "vita" prima della morte cerebrale XD

Tenete presente che la scrittura su EEPROM richiede 3,3 ms (se non ricordo male il dato del datasheet) e necessariamente la tensione non deve scendere sotto un certo valore (diciamo 3V, non ricordo il dato preciso) altrimenti i dati vanno persi comunque in fase di scrittura. Per cui serve un condensatore che possa fornire tale tensione e tale corrente per almeno 5 ms.

Il problema dei carichi potrebbe essere aggirato usando transistor vari che stacchino tutto quello che consuma corrente. Non penso sia impossibile. Basta vedere se ad esempio si scende sotto ai 4V per andare in modalità spegnimento automatico e salvare i dati.

Pero' magari in molte situazioni e' ok

leo72: Questa problematica era venuta fuori tempo fa, mi ricordo forse in un thread in cui si parlava di come implementare un caricabatterie ricaricabili. A parte questo, ci fu un intervento di astrobeed che illustrò una soluzione simile: usare un condensatore di grossa capacità per alimentare l'Arduino negli istanti di "vita" prima della morte cerebrale XD

Tenete presente che la scrittura su EEPROM richiede 3,3 ms (se non ricordo male il dato del datasheet) e necessariamente la tensione non deve scendere sotto un certo valore (diciamo 3V, non ricordo il dato preciso) altrimenti i dati vanno persi comunque in fase di scrittura. Per cui serve un condensatore che possa fornire tale tensione e tale corrente per almeno 5 ms.

Il problema dei carichi potrebbe essere aggirato usando transistor vari che stacchino tutto quello che consuma corrente. Non penso sia impossibile. Basta vedere se ad esempio si scende sotto ai 4V per andare in modalità spegnimento automatico e salvare i dati.

Mi viene in mente una cosa..... un tipo aveva fatto una lampada di emergenza usando un condensatore da 5V da 1F... nei moderni pc usano quelli al posto della batteria per il bios.... se si mettesse uno di questi bubboni dopo il regolatore il gioco sarebbe fatto :) il power sense rimanrebbe come da schema però non si avrebbe più il problema che il regolatore brucia energia e quindi si risparmierebbe un pò di tempo.... ;) http://www.elettronica-hobby.com/catalog/product_info.php?products_id=1939

Boia che bambino ]:D

Un condensatore da 1F devi caricarlo e devi farlo limitando la corrente per non mettere in corto l' alimentatore. Percui hai dei problemi all acensione. Usa un interrupt per far partire il programma di salvataggio dati e un comparatore fatto con un operazionale per triggerare la mancanza di alimentazione a valori abbastanza alti (4 o 4,5V) un entrata del Arduino vede LOW solo a 1,5V Ciao Uwe

E prima di arrivare a 1,5V hai il Brown-out che, sull'Arduino, viene attivato per l'Atmega a 2,7V. Il Brown-out è un dispositivo di protezione che resetta il micro se la tensione scende sotto al valore impostato.

uwefed: Un condensatore da 1F devi caricarlo e devi farlo limitando la corrente per non mettere in corto l' alimentatore. Percui hai dei problemi all acensione. Usa un interrupt per far partire il programma di salvataggio dati e un comparatore fatto con un operazionale per triggerare la mancanza di alimentazione a valori abbastanza alti (4 o 4,5V) un entrata del Arduino vede LOW solo a 1,5V Ciao Uwe

beh a livello si sw non dovrebbe essere difficile da fare come lavore e nemmeno a livello hw ....logicamente bisogna cricarlo con limitazione sennò lo si vede come un corto :)