Go Down

Topic: timer senza rtc e rampa tensione (Read 1 time) previous topic - next topic

vanniboy

buonasera, premetto che sono alle prime armi con il linguaggio arduino, e per i mostri che vedo in questo forumo questa cosa potrebbe esere una cosa banale da fare, ma che per me, non lo è :)

Ho la necessità di controllare una lampada a led utilizzando 2 pin pwm (luce per un acquario, pilotata da un mosfet che lavora a livelli logici, collaudato il tutto con una semplice rampa pwm e funziona alla perfezione) un pin mi comanda un mosfet per il giorno (una ora di rampa da 0 a 5V ...poi tutto acceso 8 ore e poi rampa contrario di 1 ora da 5V a 0) ed il 2° pin pwm utilizzato per la luce notturna che va ad accendersi esattamente l'opposto della luce diurna.
leggendo in giro si utilizza un rtc, è proprio necessario?  o rischio l'overflow come ho letto in giro? come dovrei buttare giù le righe di codice?

Grazie mille a tutti :)

leo72

Se ti chiedi dell'overflow immagino che tu stia utilizzando la funzione millis per controllare il trascorrere del tempo.
Dipende da come la usi, ho scritto a proposito un piccolo articolo sul mio sito.

Ho anche scritto 2 librerie che forse potrebbero interessarti. La swRTC e la leOS (entrambe le trovi sul mio sito).
La prima crea un orologio software. Puoi così tenere il tempo senza componenti hardware aggiuntivi. La precisione della libreria è legata alla precisione del risonatore ceramico che viene utilizzato sull'Arduino, quindi c'è una certa differenza che si accumula giornalmente ma ho integrato una funzione per correggere questo scostamento.

La seconda "offerta" è il leOS (nella versione 2 uso il watchdog, evitando quindi di andare a toccare i timer del microcontrollore), che in pratica è un semplice schedulatore: imposti una funzione, imposti l'intervallo per la sua esecuzione e poi lasci fare tutto a lei. La libreria lancerà il task dopo il tempo prestabilito, senza interferire con il loop principale.

pablos

#2
Jan 17, 2013, 11:03 pm Last Edit: Jan 17, 2013, 11:16 pm by pablos Reason: 1
L' rtc servirebbe per fare un orologio, quindi confrontare ore-min-sec, poi si potrebbe fare anche senza dipende se il tuo arduino ha un risonatore o un quarzo e non hai detto che arduino hai.

Fallo col timer interno e non fargli mai mancare tensione, ogni tanto aggiorni l'orologio. Per l'overflow non è grave, non scoppia e non si inchioda, puoi resettarlo se ti fa piacere alle ore 00:00:00 così sei tranquillo (ogni 86400000 del millis)
Questo vale per programmazioni giornaliere da lunedì a domenica, se devi fare programmazioni differenziate durante la settimana la cosa si fa un po' più complicata.

EDIT: ho visto dopo la risposta di Leo, comunque dovresti utilizzare la sua swRTC, ti risparmi un sacco di calcoli 
no comment

uwefed

Lo svantaggio del swRTC é che si resetta quando va via le tensione. Un RTC ha una batteria che lo alimenta anche in mancanza di alimentazione.
Se vuoi aver sincronizzato laluce del aquario con la luce del giorno allora ti serve un RTC.
Ciao Uwe

leo72


Lo svantaggio del swRTC é che si resetta quando va via le tensione. Un RTC ha una batteria che lo alimenta anche in mancanza di alimentazione.

Ma lui chiedeva se era necessario usare un RTC, non è necessario. Ho solo presentato alcune soluzioni alternative all'RTC.  ;)

Go Up