Condensatore in caso di Blackout

Salve ragazzi,

perenne problema di gestire la scrittura su EEPROM in caso di blackout.
Questa volta, dopo aver provato sia batterie 12V, che batterie 9V, vorrei provare il famoso condensatore.

La scheda è una Arduino UNO con GSM Shield e una schedina da 1 relè che per praticità è alimentata da Arduino.
Esso è alimentato col "classico" 9V da parete.

Il riconoscimento del blackout avviene con lo splendido sistema del led 220V che illumina un LDR.

Non so con precisione di quanto tempo ha bisogno lo sketch per percepire tramite analogread la variazione dell'LDR e scrivere su EEPROM. (Provo a buttare lì 100 ms per essere sicuri).
Che condensatore dovrei usare per consentire al MC di salvare il dato ?
Andrebbe posto in parallelo sull'alimentazione ?
Grazie

Zamundo:
(Provo a buttare lì 100 ms per essere sicuri).

Vuoi computare la divina commedia prima che si spenga? XD
In 100ms con l'oscillatore da 16MHz compi un milione e mezzo di operazioni. Calcola 0.1ms per analogRead e per scrittura EEPROM 5ms, mhh forse 100ms non è un valore cosi esagerato.
Il vero problema io lo vedo nell'analogRead, che ti richiede di avere una tensione di riferimento piuttosto stabile, quindi va eseguita prima che il condensatore perda troppa carica, rimane da stabilire la precisione che puoi raggiungere in tali circostanze.

Calcola bene il tempo che necessiti, aumentalo cautelativamente, 1.5 se riesci, calcola l'assorbimento del tuo circuito e a partire da questo dimensioni il tuo condensatore considerando che devi mantenere un intorno di Vcc per tutto il tempo.

Roberto,
temo che dovrò rinunciare in partenza all'idea del capacitor.

Ad occhio e croce... se il modulo GSM non è in trasmissione, ma il relè è acceso.... dovrei essere sui 200/250mA di assorbimento complessivo.

A questo punto volendo mantenere un voltaggio "ammissibile" e considerando anche 50ms..... dovrei mettere un bestione tipo 0,47F (non 4700uF !).... che per'altro costa circa 6€....

... ergo continuerò con le batterie da 9V.

Correggimi se sbaglio :slight_smile:

Bah i super condensatori non hanno prezzi troppo alti, o trovo della porcheria io su Google o si trovano condensatori da 1F 5.5V a meno di un euro. Ovviamente devi ridurre al minimo i consumi in fase di spegnimento. Gli SSD per completare i cicli di scrittura in caso di mancanza di alimentazione usano condensatori da qualche Farad.
Per i calcoli non ho provato, mi fido dei tuoi, ma che Vmin hai usato?

Roberto. Mi posti il link dei condensatori 1F 5.5V a meno di un euro ?

Vmin 4,5, è corretto ?

Il problema (in questo progetto) di usare la batteria 9V 300 mA è che se il blackout dura molto la batteria si scarica completamemte e muore.
Cosa potrei inventarmi per eseguire un attimo la scrittura in EEPROM e "staccare" la batteria ?

Un relè bistabile, oppure ci sono circuitini che impediscono la scarica completa della batteria se non erro. Boh sarò io ma la batteria mi pare un sistema sovradimensionato per questo unica funzione... Una pila tampone?

RobertoBochet:
Una pila tampone?

Che intendi ?

io non userei un LDR, è molto lento, ma piuttosto un optoisolatore, che è molto piu veloce e non necessita l'analogread.

oltretutto, perche staccare la batteria?

una volta fatte le tue operazioni in EEPROM potresti mandare in sleep il micro, e con il WDT potresti svegliarlo per controllare lo stato della tensione ogni tot ms, in modo tale che quando ritorna la corrente torni a funzionare normalmente

cosi facendo potresti usare o due pile a bottone (le CR2302) in serie e un regolatore di tensione LDO, oppure un supercondensatore

@Boschi,
grazie delle tante dritte.

  1. Un fotoaccoppiatore tipo 4N35 posso connetterlo tramite una resistenza da 220KOhm direttamente alla rete e poi leggerlo con qualunque PIN in digitalRead. Ottimo.

  2. Non avendo necessità di "risvegli immediati" potrei settare il Watchdog a 8 sec.

  3. Consigliami, se puoi, un super condensatore adatto allo scopo.

Le pile tampone sono le classiche pile bottone, che non fanno nulla di più che mantenere vivo il sistema al regime minimo.

Cosa vuol dire consigliami un condensatore, non c'è molto da consigliare, il condensatore è un componente base, è caratterizzato da 3-4 parametri, in approssimazione solo 2, calcoli quello di cui hai bisogno lo cerchi e tiri fuori il cash.

Consigliami vuol dire "prendo quello a 1F 5.5V" ?

Lo collego in parallelo all'alimentazione del micro ?

Grazie :slight_smile:

Se usi una pilettina NiMh da 4.8V, di quelle usate come backup di memoria su molte schede industriali, dovresti avere sufficente autonomia per salvare tutti i dati … tipo ad esempio queste http://www.ebay.com/itm/A-Ni-MH-Button-Rechargeable-Battery-w-Plug-4-8V-80MAH-PLC-Backup-power-supply-/320879681639?hash=item4ab5eb6067:m:mZwwRIpfWHmyL-PL7__iYNA … oppure se come spazio ti ci stanno 4 pile stilo, ne prendi 4 NiMh da 2300mAh, le saldi insieme, ed hai pure un bel po di autonomia di funzionamento, e con un partitore puoi sempre leggere la tensione delle batterie e salvare i dati e spegnere quando scendono troppo se la 230V tarda a tornare :wink:

Il distacco della batteria lo fai con un banale mosfet comandato proprio dalla MCU, quando tutti i dati sono stati salvati, oppure quando la tensione e’ vicina al limite inferiore, se proprio vuoi scollegarla … altrimenti un’altrettanto banale circuitino che scollega il mosfet quando la tensione scende sotto una certa soglia …

Per rilevare la presenza o meno della 220, puoi usare il circuito allegato, un po piu sicuro della semplice resistenza da 220K (che scalderebbe), ma non serve che sia veloce piu di tanto, perche’ la batteria comunque potrebbe tenerti alimentato il circuito anche per alcuni minuti, quindi metterci un microsecondo o un secondo per accorgersi che la 230 non c’e’ piu non dovrebbe fare molta differenza (a meno che ovviamente il parametro da monitorare sia proprio l’esatto istante della mancanza di rete … comunque anche la LDR la si puo usare con un pin digitale, non e’ detto che serva per forza leggerla con un’analogico, se tutto quello che devi leggere e’ acceso o spento, senza valori intermedi ;))

@Ete,
grazie moltissimo di tutti i consigli… con questo post sto imparando davvero tanto.

  1. Una cosa non mi è chiarissima… il mosfet “distacca” la batteria al comando del uC (quindi lo spegne! essendo un “interruttore” ) … poi quando torna la tensione lo riaccende da solo ???
    Mi mostri uno schema col mosfet da utilizzare ? :slight_smile:
    Ho trovato QUESTO , ma (se ho ben interpretato lo schema) il “riavvio” avviene premendo un pulsante ??!!??

  2. Bella anche l’idea della LDR letta in digitalRead… se ricordo bene raggiunto il valore (60% di Vcc) il pin va HIGH… quindi immaginando di lavorare a 5V, raggiunti i 3.0V leggerei HIGH… ottimo !

  3. Per evitare le rogne delle batterie (ricaricarle, staccarle per evitare l’over-discharge) mi divertiva molto l’idea di usare (per la prima volta nei miei progetti) un supercondensatore !!!

Zamundo:

Mi mostri uno schema col mosfet da utilizzare ? :slight_smile:

Dammi una decina di minuti per inventarmi qualcosa …

EDIT: Rieccomi … il circuito allegato, in teoria, dovrebbe funzionare (l’ho buttato giu al volo cercando di usare meno componenti possibile) … a livello teorico, dovrebbe funzionare in questo modo: con tutto spento, il mosfet P di potenza e’ aperto, quando attacchi l’alimentatore (oppure quando ritorna la tensione dopo un blackout) il condensatore da 100n sul gate del 2N7002 lo manda in conduzione per un momento, il che accende anche il mosfet P, il che tramite la resistenza da 10K alla sua uscita mantiene in conduzione il 2N7002, ed il tutto si automantiene in stato di ON … quando il micro manda LOW il pin collegato al diodo 1N4148, questo apre il 2N7002, il che spegne anche il mosfet P … ripeto, a livello teorico, il circuito me lo sono inventato al volo e non ho la possibilita’ al momento di provarlo …

Comunque dovrebbe consumare il meno possibile, con quei valori … per il mosfet P, bisogna ovviamente scegliere un mosfet adatto alle tensioni, se e’ sui 12V va bene un po di tutto, se invece e’ su 4 o 5 V, serve un logic-level, piu e’ sensibile e meglio e’ … i diodi in alto sono schottky da 4A di quelli standard, per ridurre la caduta e le perdite … la resistenza senza valore va calcolata in funzione della corrente di ricarica che si vuole applicare alla batteria …

Io ovviamente declino ogni responsabilita’ in caso di corto circuito, incendio, terremoto, eruzione vulcanica, diluvio o guerra termonucleare globale, ma se vuoi provarlo … :wink:

RIEDIT: dimenticavo, sostituendo il diodo 1N4148 con una resistenza da 1K o simile, si puo anche “forzare” il circuito acceso, in quel caso sei sicuro che rimarra’ acceso finche’ il pin rimane HIGH, il che forse e’ anche meglio … tanto il consumo sarebbe irrisorio, e si dovrebbe comunque spegnere portando il pin a LOW …

Grazie.
Appena ho un attimo lo "provo" !!!