Ciao a tutti, sto continuando il mio progetto di domotica da portare all'esame di maturità e vorrei leggere i consumi della casa mediante un sensore di luce posizionato vicino al led del contatore. Per fare questo però devo sapere con che frequenza la luce lampeggia e in base a quello fare una stima del consumo. Supponendo di voler leggere quante volte il led lampeggia in 1 minuto, come potrei gestire lo scorrere del tempo con Arduino?
con la millis() che ti dice da quanti millisecondi Arduino è in run.
memorizzi il valore di millis() e poi dopo un pò ne fai la differenza con il valore attuale. Con la differenza sai quanti millisecondi son passati, se fai diviso 1000 sai quanti secondi.
un pò quello che fa lo sketch di esempio "blink without delay"
Se invece devi gestire gli orari ti serve un RTC hardware o software che dovrai sincronizzare con una fonte affidabile: NTP server, orario da GPS.
Ecco, appunto: fonte affidabile.
Sansu, se vuoi fare delle statistiche, anche l'impreciso risuonatore ceramico integrato nell'Arduino può bastare (perde diversi minuti/ora). Se invece vuoi "gestire lo scorrere del tempo", come hai scritto, allora ti serve un RTC, un chip che fa da orologio hardware.
Grazie a tutti per i consigli, per adesso penso di utilizzare la funzione mills(). L'idea finale però sarebbe quella di tenere traccia dei consumi mensili tramite grafici che mostrano il consumo giornaliero, quindi utilizzerò un RTC.
Pensate che questo possa andare bene? http://www.robot-italy.com/it/grove-rtc.html
Inoltre, mentre il programma è in esecuzione e calcola in tempo reale il consumo, come posso fare per memorizzarne i dati? (ad esempio tenere traccia del consumo nei vari giorni di una settimana)
Si l'RTC al tuo link va bene e costa davvero poco.
Per salvare i dati dovrai dotare il tuo arduino di interfaccia verso una SDcard, sicuramente in RobotItaly troverai qualcosa di adatto al tuo arduino.
Ciao.
MauroTec:
Si l'RTC al tuo link va bene e costa davvero poco.
Per salvare i dati dovrai dotare il tuo arduino di interfaccia verso una SDcard, sicuramente in RobotItaly troverai qualcosa di adatto al tuo arduino.Ciao.
Mi sono dimenticato di specificare che utilizzo un arduino yun, quindi ho gia una micro sd sulla quale carico il sito.
Per salvare i dati dal programma dovrei fare esattamente?
Ci sono degli esempi di data logging allegati all'IDE, intanto inizia a studiarti quelli.
Poi cerca anche sul forum (e su internet), ci sono diverse discussioni su come fare per far eseguire dei compiti ad orari prestabiliti all'Arduino. Che poi, in fin dei conti, si tratta di controllare un intervallo di tempo o un orario e di scrivere un file usando la libreria SD allegata all'IDE.
Qui tutto sulla lib e sui suoi metodi:
I moduli RTC generalmente hanno una lib fornita dal produttore, che spesso contiene anche degli esempi su come prelevare l'orario dall'orologio.
Perfetto grazie mille, comincerò a studiare quelli 8)
non serve nessuna gestione temporale per il tuo rpogetto, perche' i lampeggi del contatore enel gia' esprimono i Wh, devi solo leggerli per sapere, moltiplicando per il costo del kWh, quanto stai spendendo.
Testato:
non serve nessuna gestione temporale per il tuo rpogetto, perche' i lampeggi del contatore enel gia' esprimono i Wh, devi solo leggerli per sapere, moltiplicando per il costo del kWh, quanto stai spendendo.
Quindi ogni lampeggio del contatore indica che sto consumando tot. watt/ora ?
Yes, un lampeggio del led RA (quello superiore) ogni volta che viene consumato 1Wh
quindi li devi solo contare, non relazionare al tempo di lampeggio.
Stai attento al fatto che in mancanza di consumo il led e' acceso fisso, quindi puoi sbagliare di un colpo ogni volta che non hai consumi in casa.
Ma se vuole registrarli su SD ad esempio contando i numero di lampeggi ogni ora allora gli serve un RTC per memorizzare: data, ora e numero lampeggi (=KWh).
Facendolo per molto tempo può ricavarsi dei grafici giornalieri, settimanali o mensili sui consumi.
Esatto L'RTC lo devo usare comunque ![]()
Se il contatore è fuori casa, puoi usare questo sistemato nel quadro elettrico del salvavita (http://www.amazon.it/Contatore-Perry-1SDSD06CEM-1-Contabilizza-impulsiva-open-collector/dp/B008FNAGT4)
Occupa 1 solo DIN e ha una uscita open-collector con un impulso di 100ms ogni 10W di consumo e non ogni 1000 come il led del contatore.
- il led enel emette un lampeggio ogni singolo Wh, non ad ogni kWh
Buono a sapersi.