Go Down

Topic: Data e ora... senza RTC! (Read 3 times) previous topic - next topic

SergioStyle89

Salve a tutti!!! Esiste un modo per visualizzare data e ora sul seriale senza l'uso di un rtc? Qualche esempio? So usare la funzione millis ma resta il fatto che conta il tempo passato dall'esecuzione del programma... non la data e ora effettivi! Grazie a tutti in anticipo dell'aiuto :)

totodix

Mi spiace ma.... no martini no party!!!!

Senza RTC l'arduino non può fornire l'ora e la data.

lesto

bhè a ogni reset invii via PC la data e ora attuale, e poi a partire da quelle info con millis() ti calcoli il tempo trascorso e quindi data e ora attuali.
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

GianfrancoPa

Oppure ancora, se utilizzi l'ethernet shield, potresti ricavare l'ora dai server NTP, e poi procedere come indicato da lesto
Gianfranco

lesto

oppure con un sensore ottico del mouse leggere le lancette di un orologio analogico :)

si dia il via alla fiera delle risposte bizzarre! :D
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

GianfrancoPa

Qui trovi come prelevare l'orario da internet: http://arduino.cc/forum/index.php/topic,51802.0.html

Oppure direttamente qua: http://www.arduino.cc/playground/Code/Time

ps, magari fatti una meridiana!  :)
Gianfranco

leo72

Il problema non sta tanto nel fornire un "momento" all'Arduino da cui iniziare a calcolare il tempo, il problema è che millis() è una variabile che viene incrementata da un interrupt dell'Atmega; se alteri gli interrupt, alteri anche il calcolo del tempo. Ma anche altre operazioni potrebbero interferire con questo contatore, con il risultato che sulla lunga distanza si potrebbe creare una certa differenza fra l'orario reale e quello segnato dall'Arduino.
Poi considera che millis() fornice "millisecondi", per avere ore:minuti:secondi e giorno:mese:anno dovresti implementare un algoritmo che, ad ogni secondo, aggiorni tutti questi registri in catena (aggiorno i secondi; dopo 60 secondi, aggiorno i minuti; dopo 60 minuti, aggiorno le ore; dopo 24 ore, aggiorno i giorni; poi devo calcolare quando aggiornare i mesi ecc...
Inoltre il contatore su cui si basa millis() si resetta ogni 50 giorni circa, per cui il tuo sketch potrebbe cessare di funzionare.

Dipende insomma se devi farti un orologio oppure calcolare solo un piccolo intervallo di tempo.
Se vuoi accuratezza e misura... nel tempo allora ti serve un RTC.

uwefed

le altre fonti del ora esatta (oltre il RTC) sono:
* il segnale RDS di molte stazioni radio
* un ricevitore dcf77; Segnale orario trasmesso in Germania; ma non é facile far funzionare il modulo DCF77. Mi funziona solo a batteria lontano 2 metri dal PC o dal Arduino. Devo ancora indagare il perché.
http://it.wikipedia.org/wiki/DCF77
* il segnale GPS ha un orologio ultrapreciso (il calcolo della posizione viene effettuato calcolando il tempo che serve alle onde radio per percorrere la distanza satelite-ricevitore. Non si prende il segnale GPS all interno di edifici o case.
* i server NTP sono stati giá nominati.
* i 50 Hz della rete elettrica (sono in media precisi)
altre fonti: http://it.wikipedia.org/wiki/Orologio_radiocontrollato
Ciao Uwe

pitusso

Quote
bhè a ogni reset invii via PC la data e ora attuale, e poi a partire da quelle info con millis() ti calcoli il tempo trascorso e quindi data e ora attuali.


..oppure usare un 555 come clock/timer esterno:
http://arduino.cc/forum/index.php?topic=50836

ma si rientra nella logica che leo72 ha spiegato, riguardo al calcolo di ore/gg/etc

pelletta

Per ora mettere l'rtc è ancora il metodo più efficace fra tutte le varie alternative scritte
Ora a livello puramente teorico è bello trovare altre alternative rispetto al metodo classico di fare le cose, ma trovare soluzioni più complesse, difficili da realizzare e alcune anche più costose (tipo usare l'ethernet shield che costa molto di più e ti da il limite del cavo visto che deve essere collegato ad un pc o ad un router) mi sembra da masochisti

Come mai tutta questa diffidenza nei confronti degli rtc?

lesto

#10
Mar 06, 2011, 02:44 am Last Edit: Mar 06, 2011, 02:46 am by lesto Reason: 1
direi che uwefed è il vincitore, i 50hz della rete di casa è una bella trovata!  XD

edit: temo che le onde del DCF77 siano "rovinate" dall'emissione di alimentatori ecc.. anche se sono moooolto ignorante in materia
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72

Concordo con quanto detto da Pelletta. Può essere divertente trovare "alternative personali" a tante cose ma quando l'"alternativa" si traduce nel dover reinventare la ruota (ossia fare un lavoro esagerato per ottenere un risultato che hai già disponibile) insistere in tale direzione mi pare fuori luogo  XD
Costruire un circuitino RTC è una scemenza (l'ho fatto io, quindi ci son capaci tutti  ^_^) e l'accuratezza che ottieni non la puoi ottenere con nessun altro dei metodi citati. Anche i 50 Hz sono molto "esotici": carini, ma se va via la luce, che fai?  :D
Mettiamo che il tuo Arduino sia nella stanza accanto: vai e rimetti l'ora. Ma se fosse in cima ad un palo che trasmette in wi-fi, cosa faresti: ti arrampicheresti tutte le volte?  ;)

E comunque tutto dipende da questo:
Quote from: leo72

Dipende insomma se devi farti un orologio oppure calcolare solo un piccolo intervallo di tempo.

uwefed

Quote
l'accuratezza che ottieni non la puoi ottenere con nessun altro dei metodi citati. Anche i 50 Hz sono molto "esotici": carini, ma se va via la luce, che fai?

Devo contraddirti leo72
La precisione del ora rispetto un RTC (tarato bene se l' integrato lo prevede e col quarzo giusto ordine di errore 20ppm) viene superato da molti metodi:
dcf77, GPS, NTP server, RDS, i 50Hz rete sono tutti piú precisi perche tutti basati (eccetto i 50 Hz) su orologi atomici. 
Ti do ragione che i 50 Hz hanno lo svantaggio che l' ora deve essere impostata e non viene presa dal segnale orario.

SergioStyle89 non ha ancora risposto perché non vuole usare un RTC. iI rispondi per favore?

@ cosa ho vinto?

Ciao Uwe

lesto

beh, ovvio, la soddisfazione di aver vinto  :P
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

uwefed

@lesto
Sono cresciuto giá di 10cm  ;)
Ciao Uwe

Go Up