Contatore senza reset

Buongiorno, dovrei realizzare un contatore volumetrico per acqua a livello hardware è tutto semplice, invece chiedevo se esiste la possibilità che mettendo una stringa tipo count ++ questa non si azzeri in caso di mancanza luce o riavvio improvviso di Arduino.
È possibile una cosa del gemere?

Saluti Vito.

Purtroppo qualsiasi variabile creata nella SRAM si cancella alla mancanza di alimentazione.

Se ti va bene di salvare il valore ogni X minuti, allora potresti usare la EEPROM, ma ... come detto, NON puoi usarla come fosse la SRAM, in quanto, a differenza di essa, la EEPROM ha un numero di scritture limitato.

Tale numero, anche se molto grande (100'000) è in realtà facilmente raggiungibile scrivendo tropo spesso. Se fai due conti t'accorgi che, scrivendo ad esempio ogni secondo, raggiungeresti le 100'000 scritture in appena 27 ore :frowning:

Vero che il limite è per singola cella e che si possono usare tecniche per cui si ruota l'utilizzo della cella, ma comunque NON è realisticamente possibile usarla con scritture così ravvicinate.

Guglielmo

... perché NON pensare invece ad un piccolo gruppo di continuità che ti continui a tenere alimentato il tutto anche in caso di mancanza di rete ?

Quanto lunghe sono queste assenze di rete ? Sono molto frequenti ?

Guglielmo

Se deve fare molte scritture è meglio che usa una fram esterna, oppure le nuove EERAM di Microchip, sono delle ram seriali a tutti gli effetti, con nessun limite di scritture, che in caso di power off fanno automaticamente il backup dei dati su una EEPROM, integrata nello stesso chip, serve solo un condensatore condensatore ceramico da 10 uF, connesso sugli appositi pin, per garantire l'energia necessaria per il backup.
Le EERAM sono disponibili in due tagli, da 4kbit e 16kbit, ovvero 512 Byte e 2 kByte, costo meno di 1 E sul singolo pezzo, disponibili anche in case dil.

Il gruppo potrebbe andare bene ma anche un sistema a batteria più che altro il problema è se per qualche motivo Arduino si deserta.
Il conteggio non mi interessa preciso preciso mi interesserebbe contare i giorni da ultimo reset considerando che sul sistema dovrebbe essere fatta una manutenzione ogni sei mesi, quindi con la, possibilità che mi indichi quando è necessario farla...

Grazie per le risposte.

Saluti

Ma allora dotalo di un RTC e salva l'ultima data/ora di manutentione in EEPROM ...

In questo modo la EEPROM la usi una volta ogni sei mesi per aggiornare la data in cui hai fatto la manutenzione e da data/ora esatta te la mantiene e te la porta avanti (... anche in assenza di alimentazione) il modulo RTC :wink:

Guglielmo

Ciao, no il contatore è un un depuratore lasciato a lavorare quindi dovrebbe essere lui a dare un segnale quando sono trascorsi i sei mesi ed eventualmente andare in blocco erogazione.
La con rtc sembra interessante però ho visto dei sistemi commerciali che non hanno batterie, forse scrivono in qualche memoria non volatile che poi viene resettato tramite apposito pulsante nascosto diciamo.

Grazie comunque a tutti per le risposte.

athlon73:
… però ho visto dei sistemi commerciali che non hanno batterie, forse scrivono in qualche memoria non volatile che poi viene resettato tramite apposito pulsante nascosto diciamo.

Te ne ha parlato Astro nel post #3 … FRAM o EERAM …
… ma devi comprare i chip, farti lo stampato, sciverti il codice per gestirle, ecc. ecc.

Con il modulo RTC risolvi senta tante complicazioni (… prendine uno basato su DS3231) e hai tutte le librerie fatte.

Guglielmo

Puoi usare anche un RTC con RAM tipo il DS1307 o DS3232
Ciao Uwe

uwefed:
Puoi usare anche un RTC con RAM tipo il DS1307 o DS3232

SI, esatto, esistono un'infinità di modulini a basso costo (pochi US$) che integrano il DS3231 (RTC) con una memoria RAM il tutto sempre alimentato da una batteria a bottone incorporata. Hai così sia l'RTC che la memoria dove salvare le informazioni.

Se poi non tio serve la precisione del DS3231, ma ti accontenti del classico DS1307, considera che anche esso ha al suo interno alcuni bytes di memoria (56 bytes) a disposizione dell'utente dove salvare delle informazioni.

Guglielmo

gpb01:
Te ne ha parlato Astro nel post #3 ... FRAM o EERAM ...
... ma devi comprare i chip, farti lo stampato, sciverti il codice per gestirle, ecc. ecc.

Ripesco un attimo questo topic per segnalare che ho scritto una libreria per interfacciarsi facilmente con le nuove EERAM di Microchip, tipo 47C04, 47C16, 47L04, 47L16.

Chi è interessato la trova qua: GitHub - SukkoPera/Arduino-MC47xxx: Arduino library that allows interfacing with Microchip 47xxx serial EERAMs.

PS: Grazie a Microchip che mi ha inviato gratuitamente un paio di campioni per lo sviluppo :).