Pages: [1] 2   Go Down
Author Topic: timer senza rtc e rampa tensione  (Read 1392 times)
0 Members and 1 Guest are viewing this topic.
ITALIA
Offline Offline
Newbie
*
Karma: 1
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 è smiley

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 smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3245
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 
« Last Edit: January 17, 2013, 05:16:23 pm by pablos » Logged

no comment

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21195
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.  smiley-wink
Logged


Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3245
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

infatti ho scritto
Quote
non fargli mai mancare tensione

Ma come sempre senti sempre l'esigienza di intervenire e ripetere quello che dicono gli altri
Logged

no comment

ITALIA
Offline Offline
Newbie
*
Karma: 1
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie mille, provo a studiarmi un po la libreria e vediamo cosa combino smiley
Logged

Offline Offline
Jr. Member
**
Karma: 1
Posts: 53
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

anche io sto programmando Arduino per pilotare la luce di un Acquario ho usato però un RTC e per fare l'incremento decremento come mi hanno consigliato qui ho usato la funzione millis() e tutto quello che ne segue
la cosa buona del RTC è che ha la batteria e il programma che lo controlla è semplice.

tu che circuteria hai messo sul pin PWM? cioè hai messo un mosfet e basta oppure altro?
Logged

ITALIA
Offline Offline
Newbie
*
Karma: 1
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho utilizzato un mosfet che lavora e da il massimo passaggio di corente con 5V (irl530 oppure 540)
Logged

ITALIA
Offline Offline
Newbie
*
Karma: 1
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho un dubbio, come faccio a "sincronizzare" le luci con il tempo?  ...ammettiamo che a metà pomeriggio do tensione al crcuito, imposto l'ora, ma come faccio a dire che in quel momento esatto devo avere il 100% della luce oppure il 45% o meno o più a seconda?
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 110
Posts: 6974
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Conviene ragionare col tempo in secondi. Conoscendo il tempo in secondi del momento in cui le luci devono essere allo 0% e quando al 100%, con una proporzione (o funzione matematica) ti calcoli la percentuale per l'ora corrente.
Naturalmente per avere un riferimento certo devi avere un RTC sincronizzato o quantomeno regolato sull'ora corrente, poi minuto più minuto meno non è che faccia differenze.
Il problema di un RTC software, come dicevano, è che spegnendo l'Arduino perde la sincronizzazione, quindi l'errore potrebbe essere molto maggiore di un minuto.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ho un dubbio, come faccio a "sincronizzare" le luci con il tempo?  ...ammettiamo che a metà pomeriggio do tensione al crcuito, imposto l'ora, ma come faccio a dire che in quel momento esatto devo avere il 100% della luce oppure il 45% o meno o più a seconda?

Qui devi intervenire tu nel senso che sarai tu a strutturare l'algoritmo in base alle tue esigenze. Se cioè vorrai un aumento/diminuzione a rampa dovrai stabilire delle percentuali e con una funzione, come ha detto Paolo, ti calcoli l'istante in cui sei a che valore di luminosità corrisponde.
Esempio.
Mettiamo che la tua rampa duri, per facilità di calcoli, 64 minuti.
Sapendo che su un pin PWM puoi "scrivere" un valore che va da 0 a 255, avrai 256 passi di illuminazione. Facendo 256/64 è facile trovare che la luminosità da scrivere sarà 4 volte il numero dei minuti dall'inizio della rampa.
Quindi se tu decidi alle 17:00 che debba iniziare il tramonto, esso finirà alle 17:00+0:64->18:04.
Se accendi la scheda alle 17:32, sarai a 32 minuti dall'inizio della rampa per cui la luminosità da "scrivere" sarà 32*4=128.

Ovviamente questo è un esempio, oltretutto stupido, ma ti spiega una possibile (delle molteplici) soluzioni.
Logged


BZ (I)
Offline Offline
Brattain Member
*****
Karma: 249
Posts: 21195
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho un dubbio, come faccio a "sincronizzare" le luci con il tempo?  ...ammettiamo che a metà pomeriggio do tensione al crcuito, imposto l'ora, ma come faccio a dire che in quel momento esatto devo avere il 100% della luce oppure il 45% o meno o più a seconda?


Devi farti Tu una tabella con gli orari di accensione- spegnimento e durata del PWM.
Quella lo memorizzi nel Arduino e lo esegui.
Ciao Uwe
Logged

ITALIA
Offline Offline
Newbie
*
Karma: 1
Posts: 14
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao, quindi con questa tabella che dovrei fare, come la dovrei impostare? scusa la domanda banale smiley
se voglio che l'alba duri 2 ore, ho quindi 256 "passi" da suddividere in 7200 secondi, e fanno 1 "passo" ogni 28 secondi (arrotondando il 28... vengono meno di 7200 secondi, per comodità).

ma io devo fare 256 linee ognuna con il valore da impostare in quel momento? o esiste un modo per fare la stessa cosa senza riscrivere 256 volte la stessa cosa?

o sbaglio il ragionamento in partenza?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Io continuo a suggerirti l'uso di un semplice algoritmo che ti calcoli la curva in base all'istante.
Logged


Pages: [1] 2   Go Up
Jump to: