Go Down

Topic: DCF77 - RTC DS1307 (Read 13005 times) previous topic - next topic

PaoloP


ciao

ho trovato questo, che usa esattamente il "mio" modulo:
http://gonium.net/md/2006/11/05/arduino-dcf77-radio-clock-receiver/

questo w-e lo provo e vi dico


Nel Playground sono indicati alcuni link oltre al tuo
- http://gonium.net/md/2007/01/06/arduino-dcf77-v02-released/
- http://lietaer.be.dotnet39.hostbasket.com/arduino/Dcf77.zip

e già un punto di partenza.

lucadentella

ottima segnalazione! leggendo un po' sembra che il problema maggiore - come giustamente qualcuno ha già notato - è a volte l'elevata quantità di disturbi che arrivano... visto che il segnale DCF si basa sostanzialmente sulla durata degli impulsi high, basta un disturbo che faccia oscillare questo segnale per far leggere erroneamente i dati ad Arduino.
lucadentella.it

astrobeed


è a volte l'elevata quantità di disturbi che arrivano... visto che il segnale DCF si basa sostanzialmente sulla durata degli impulsi high, basta un disturbo che faccia oscillare questo segnale per far leggere erroneamente i dati ad Arduino.


Da notare il fatto che per via della bassa frequenza, solo 77.5 kHz, servirebbe una antenna di grandi dimensioni per ottenere una ricezione ottimale del segnale, cosa impossibile da implementare in piccoli dispositivi quali sveglie ed orologi con tutte le conseguenze negative del caso sul segnale.
Non ultima anche la questione che il segnale viene ricevuto per riflessione sulla ionosfera e non direttamente dalla stazione trasmittente.

uwefed

Ma una bobbina con nucleo in ferrite e un condensatore puó essere una buona antenna anche se é di dimensioni ridotte e non della lunghezza di mezza lunghezza d' onda.
Ciao Uwe

leo72

Da quel poco che mi ricordo dei tempi in cui usavo il baracchino, un'antenna di ricezione deve essere di lunghezza pari alla lunghezza d'onda del segnale da ricevere o di frazioni di essa.
Quindi, la migliore antenna dovrebbe essere di lunghezza lambda=v/f dove "v" è la velocità di propagazione dell'onda nel vuoto, qui equiparata alla velocità della luce, ossia 300.000 Km/s, e "f" è la lunghezza d'onda in Hz.
Essendo il nostro segnale di 77.5 kHz la formula è:
300.000.000/77.500 = 3870,97 m
Siccome non possiamo mettere un'antenna di 3870,97m attaccata all'Arduino  XD XD proviamo con i sottomultipli:
lambda/16384=0,24m
lambda/32768=0,1181m

Ecco, un'antenna di 11 cm circa, esattamente 11,81 cm, dovrebbe essere un buon ricevitore del segnale a 77.5 kHz.

PaoloP

E' arrivato il modulo.
Più tardi lo provo.  ;)

lucadentella

ottimo, facci sapere come va perché io, provando un paio di sketch in rete, non ho ottenuto risultati validi...
non ho ancora attaccato l'oscilloscopio per capire che segnale riceve ma il dubbio è che sia veramente disturbato
lucadentella.it

PaoloP

#22
Mar 05, 2012, 11:06 pm Last Edit: Mar 06, 2012, 01:15 pm by PaoloP Reason: 1
Funziona!

Code: [Select]
Time: 0:1:59 Date: --, 0.0.0 (0)
####
#### Begin of new Minute!!!
####
Finalizing Buffer
Check Parity
parity_min  = 1 / P1 = parity_hour = 0 / P2 = parity_date = 1 / P3 = Parity check OK
-12103: DCF77 Signal detected, Time: 22:57:0 Date: Mo, 5.3.2012 (Winterzeit)


Ho utilizzato la libreria di Manfred Fuchs, opportunamente modificata per funzionare con l'IDE 1.0.
--> http://www.mafu-foto.de/elektronik/arduino/108-arduino-library-fuer-dcf77-funkuhrempfaenger

Ho litigato inizialmente per posizionare l'antenna. Ho dovuto spostare tutto vicino alla finestra.
Il modulo ha un led per verificare la presenza del segnale. Per poterlo decodificare deve lampeggiare con una cadenza di circa 1 secondo.

Adesso devo vedere come sincronizzare l'RTC.  :D

lucadentella

ottimo! mi giri la versione per ide 1.0 che provo anch'io in esterna? ;)
grazie
lucadentella.it

Testato

io a napoli niente da fare,
ho una radiosveglia e non ha mai preso il segnale.
non contento ho comprato un orologio da polso pagato un bel po' pensando al discorso di stare all'aperto e riuscire a prendere il segnale ma niente.

mi sa che il limite massimo, almeno per questi oggetti che implementano il ricevitore internamente, a cui non e' possibile aggiungere un'antenna, e' roma o anche piu' su.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

PaoloP

Eccola.
Ho aggiunto il solito IF:
Code: [Select]
#if (ARDUINO >= 100)
#include "Arduino.h"
#else
#include "WProgram.h"
#include "WConstants.h"
#endif

Mi viene il dubbio che WConstants.h sia una ripetizione.

Ho commentato l'include della seriale:
Code: [Select]
//#include "HardwareSerial.h"
perché inclusa in Arduino.h

Ho abilitato il DEBUG della libreria:
Code: [Select]
/**
* Turn debugging on or off
*/
#define DCF_DEBUG 1


Ho commentato alcune righe di codice che davano errore e sinceramente non ho capito  :smiley-roll-sweat:
Fanno parte del debug.
Code: [Select]
#ifdef DCF_DEBUG
    Serial.println("Check Parity");
    Serial.print("parity_min  = ");
    Serial.print(parity.parity_min, DEC);
    Serial.print(" / P1 = ");
    //Serial.print(rx_buffer->P1, DEC);
    Serial.print("parity_hour = ");
    Serial.print(parity.parity_hour, DEC);
    Serial.print(" / P2 = ");
    //Serial.print(rx_buffer->P2, DEC);
    Serial.print("parity_date = ");
    Serial.print(parity.parity_date, DEC);
    Serial.print(" / P3 = ");
    //Serial.println(rx_buffer->P3, DEC);
#endif

Se togli i // da errore per richiamo a funzione ambigua.

La libreria è nel file allegato.
Lo sketch di esempio l'ho compilato con la versione 1.0.

Johnny779


io a napoli niente da fare,
ho una radiosveglia e non ha mai preso il segnale.
non contento ho comprato un orologio da polso pagato un bel po' pensando al discorso di stare all'aperto e riuscire a prendere il segnale ma niente.

mi sa che il limite massimo, almeno per questi oggetti che implementano il ricevitore internamente, a cui non e' possibile aggiungere un'antenna, e' roma o anche piu' su.


Mah...
Io ne ho due di questi orologi/sveglia, con anche i sensori di temperatura interna/esterna, presi alla LIDL, e funzionano benissimo. E sono ben più a sud di Napoli o Roma... (cumpari d'u prof. Menniti sugnu!  smiley-grin )

Ciao a tutti,
anch'io ho lo stesso modulo dcf e ho riscontrato delle interferenze, non riesco ad utilizzarlo se è acceso il monitor del computer, è un vecchio monitor della Sun, per quanto riguarda la ricezione del segnale è normale che di notte si riceva meglio e più distante è un comportamento tipico delle onde radio.

Alberto

DaGu75

Aiutoooo!
Io ci sto perdendo la testa da una intera settimana.
Ho letto l'intero post ed in particolare quello che ha scritto PaoloP che è riuscito a farlo funzionare.
Il fatto è che non capisco come mettere in pratica le modifiche che lui ha descritto.
Io ho un DCF77 receiver comprato su Conrad.com, un Arduino Uno rev.3 abito tra Siena e Firenze e ricevo il segnale orario (non avendo un oscilloscopio ho fatto una prova piuttosto empirica... ho messo un led in uscita dal ricevitore DCF con resistenza da 330ohm verso GND e una resistenza di pull-up da 8K2ohm verso +5Vcc di Arduino, il led lampeggia quindi il segnale c'è).
Il fatto è che ad ogni sketc (trovato in rete) che ho provato a compilare ricevo una marea di errori che non sono capace di rimediare.
Potreste per favore indicarmi passo per passo quello che devo fare per riuscire a vedere l'ora esatta sulla porta seriale?
Grazie.

DaGu75

Ho scaricato ed estratto nella cartella "Libraries" il file DCF77.zip che ha postato PaoloP.
Al momento che vado a verificare lo sketc ricevo questo errore:

Serial_DCF77_Signal.cpp:1:19: error: DCF77.h: No such file or directory
Serial_DCF77_Signal.pde:-1: error: 'DCF77' does not name a type
Serial_DCF77_Signal.cpp: In function 'void loop()':
Serial_DCF77_Signal.pde:-1: error: 'myDCF' was not declared in this scope


Che significa?
Cosa ho sbagliato?

Go Up