mercoledì 12 dicembre 2018

Un Server NTP

L'ora esatta fatta in casa

In un mio precedente post ho decritto come ricevere segnali di tempo e frequenza campione con un semplice ricevitore radio.


Seguendo alla vecchia i tic dei secondi, è possibile regolare manualmente un qualsiasi orologio, anche quello del proprio PC, in assenza di internet.
Per le normali operazioni quotidiane, è più che sufficiente avere l'ora del pc regolata con uno scarto anche di alcuni minuti. Programmi, come i browser internet o i compilatori software, non si accorgono neanche di uno scarto, in ritardo, di qualche secondo.

Regolare l'ora del pc via Internet

Nei vari settaggi dell'orologio del pc, uno riguarda la sincronizzazione dell'ora e della data via Internet. L'ora viene prelevata da uno dei vari server di tempo sparsi nel mondo (ad esempio INRiM in Italia) e salvata nell'orologio del pc.


I server utilizzano il Network Time Protocol (NTP) per comunicare i dati. Ma per un Radioamatore ci può essere sempre un problema: "E se non fosse disponibile Internet?"

L'ora precisa per poter comunicare

Moderni sistemi di comunicazione, come FT-8, WSPR, MSK144, JT65, JT9 ed altri, necessitano di un preciso sincronismo per effettuare il collegamento. E con preciso, intendo con un errore inferiore al secondo.


Un metodo tutto sommato economico è quello di collegare un GPS al computer. Ma volendo poi anche condividere nella rete domestica l'ora esatta...

Il server NTP fatto in casa

Trovando nel cassetto dei GPS della Siemens e le relative schede di gestione, ho pensato di unire questa tecnologia alle schede microcontroller Arduino.
La scheda è un clone Arduino Mega 2560 della Elegoo. Uno shield ethernet completa il tutto.
Per far lavorare correttamente il GPS, ho dovuto mdificare un paio di alimentazioni nella scheda di gestione, poichè dopo una decina di minuti il GPS si spegneva.



Altra modifica, ho dovuto correggere un errore nel montaggio dello shield ethernet: le resistenze di carico lato connettore, anzichè da 49 Ω, erano da 510 Ω. Ovviamente non poteva funzionare. Ho dovuto saldare un paio di resistori da 47 Ω in parallelo tra la linea RX e TX e massa.


Il software è un adattamento di ciò che ho trovato in rete, dovendo gestire una scheda Arduino Mega (e non Arduino Uno), un circuitino Real Time Clock (RTC) Epson RX-8025 (lo stesso usato nei comuni orologi digitali) ed il display, 8 caratteri su una linea.
Da dire che il sincronismo non deriva dalla stringa NMEA fornita dal GPS, ma dal clock ad 1 Hz presente sul connettore del GPS stesso. Questo segnale è estremamente preciso, e viene fornito dalla scheda solo con la completa acquisizione dei satelliti.


La sincronia interna al sistema avviene ogni minuto, risincronizzando il circuito RTC con il GPS.


Al momento, la precisione del sistema è inferiore a 500 millisecondi. Può andar bene per FT-8. E' comunque allo studio un metodo per migliorare questa performance.
Altra modifica futura, fornire il clock ad 1 Hz, magari via buffer, per sincronizzare oscillatori esterni e strumenti di misura.

73 de Andy IV3ONZ

Link utili e bibliografia:

Nessun commento:

Posta un commento