Forum: HF, Funk und Felder Noch ein anderer GPSDO


von nichtgast (Gast)


Lesenswert?

Moin moin
ich möchte gern meine beiden Frequenzzähler HP5342A und HP5316A 
kalibrieren. Doch leider habe ich kein Kalibriernormal, also kein 
Rb-Oszillator und natürlich auch kein Cs.
Da ich immer öfter eine genaue Referenzfrequenz benötige, möchte ich nun 
einen GPSDO bauen.
Um den ewigen Kritikern gleich den Wind aus den Segeln zu nehmen: ja, 
ich weiss, man kann das kaufen/gibt es auf eBay/lohnt sich nicht/Rb ist 
eh besser/selber kriegt man das nie so gut hin wie bereits andere 
existierende Designs.
Doch nebst dem, dass ich eine genaue Frequenz haben möchte, steht auch 
noch ein wenig Bastelspass im Vordergrund :-)

Sehe ich das richtig, dass ich im Prinzip ein GPS-Modul her nehme (z.B. 
uBlox?) und dessen 1 PPS Ausgang als Gate-Signal für einen Reziproken 
Frequenzzähler benutze?

Ich habe noch einen HP 10811 OCXO hier. Den könnte man doch dafür 
verwenden.

Ich habe mir gedacht, dass man das 1PPS Signal vom GPS Modul herunter 
teilt, z.B. durch 64, und dann als Gatesignal für die 10 MHz benutzt. 
Ein Timer in einem kleinen STM32 könnte dann mit den 10 MHz angetrieben 
werden. Die Überläufe des Timers werden per Software gezählt, und wenn 
ich z.B. das 1PPS Signal durch 64 dividiere, dann müsste, bei korrekt 
abgeglichenem OCXO, der Counter immer den Wert 640000000 haben, plus 
minus 1. Mittels DAC bedient man dann das EFC-Signal des OCXO. Wenn die 
Frequenz zu klein ist -> DAC-Wert um 1 erhöhen, wenn die Frequenz zu 
gross ist -> DAC-Wert um 1 verkleinern. So hat man eigentlich wie einen 
sehr langsamen Integrator. Der Jitter des 1PPS dürfte damit schon ganz 
gut raus gemittelt werden.

Meine Fragen sind:
a) macht man das so? (ich habe beim Suchen im Netz nur ein paar Designs 
gefunden, welche einen spezifischen PIC einsetzen; ich will aber keinen 
PIC.)
b) wenn das 1 PPS Signal durch 64 dividiert wird, würde das IMHO 
bedeuten, dass ich auf 1/64 Hz genau die Frequenz ermitteln kann, denn 
bei einem Counterwert von z.B. 640000001 hätte der OCXO eine Frequenz 
von 10000000.0156 Hz. Das wäre ja schon recht gut, oder? Mit einem 
grösseren Teierfaktor als 64 könnte man die Genauigkeit natürlich noch 
steigern, aber dafür dauert dann das 'Einrasten' des OCXO viel länger.
c) was denkt ihr über meine Ansätze?

von Theiler & Cie. (Gast)


Lesenswert?

> Ich habe mir gedacht, dass man das 1PPS Signal vom GPS Modul herunter
> teilt, z.B. durch 64,

...dann hast Du 1/64 Hz. (also eine "etwas längere" Minute). Willst Du 
das?

von nichtgast (Gast)


Lesenswert?

Theiler & Cie. schrieb:
> Willst Du
> das?

ist doch völlig egal, da das nur die Torzeit ist, um die Anzahl Perioden 
des OCXO zu zählen. Man könnte natürlich auch direkt das 1PPS Signal als 
Torzeit verwenden, aber dann wäre die Messung ungenauer, da

a) kürzere Torzeit
b) der Jitter des 1PPS voll in die Messung mit ein geht.

von uuu (Gast)


Lesenswert?

Der uebliche Weg ist den OCXO mit einem PLL auf den 1PPS des GPS zu 
locken. Ein PLL mit einer Regelzeitkonstante von 1000 Sekunden kann das. 
Alternativ kann man einen PLL mit einem 4046 auf 10kHz laufend auf den 
1PPS locken, und den OCXO auf den 10kHz.

von pegel (Gast)


Lesenswert?

Ab einem UBLOX NEO-7 kannst du den 1PPS Ausgang auch auf andere 
Frequenzen bis 10MHz programmieren.

von Ralph B. (rberres)


Lesenswert?

nichtgast schrieb:
> Um den ewigen Kritikern gleich den Wind aus den Segeln zu nehmen: ja,
> ich weiss, man kann das kaufen/gibt es auf eBay/lohnt sich nicht/Rb ist
> eh besser/selber kriegt man das nie so gut hin wie bereits andere
> existierende Designs.

Ein Rubidiumnormal hat zwar eine Stabilität von etwa 10E-10 aber man 
muss ihn auch regelmäßig kalibrieren. Es ist nämlich kein Primärnormal. 
Da müsste man schon auf einen Cäsiumnormal zurückgreifen.

nichtgast schrieb:
> Doch nebst dem, dass ich eine genaue Frequenz haben möchte, steht auch
> noch ein wenig Bastelspass im Vordergrund :-)

Na dann mal los

nichtgast schrieb:
> Ich habe noch einen HP 10811 OCXO hier. Den könnte man doch dafür
> verwenden.

Das ist eine gute Vorraussetzung. Denn dieser Oszillator liefert eine 
Kurzzeitstabilität von locker 10E-10 für den Zeitraum welche man als 
Regelzeitkonstante für die PLL benötigt um es mit dem GPS zu 
synchronisieren. Nach einen Jahr sind es dann etwa 10E-8

Das heist man muss den OCXO langsam nachregeln.

Es gibt mittlerweile im Netz einige Mikroprozessorgesteuerete Projekte, 
welches genau deinen Vorstellungen entsprechen.

Wie die Lösungen im einzelnen aussehen habe ich nicht näher untersucht.

Es läuft auf eine digitale PLL hinaus. Analog geht bei diesen 
Zeitkonstanten nur noch sehr schwer.

100 Sekunden sollten es mindestens sein. 1000 Sek wäre noch besser.


Für diejenigen die keine Lust haben wochenlange Forschungsprojekte zu 
betreiben, gibt es bei SDR-Kits ein GPS Frequenznormal welches auf 10E-9 
spezifiziert ist, aber locker 10E-10 erreicht. Kostet unter 200 Euro

Ich besitze das Teil auch und habe es gegen zwei verschiedene 
Rubidiumnormale gestestet. Efratom und Rohde&Schwarz. Dabei hatte sich 
dann bestätigt was ich lange vermutet habe. Der Rohde&Schwarz XRB ist 
deutlich stabiler. Der Efratom hat mit Mühe 10E-10 erreicht nach fast 4 
Stunden Einlaufzeit. Der XRB war nach einer viertel Stunde stabil.

Ralph Berres

von Kurt M. (trukm)


Lesenswert?

Ralph Berres schrieb:

> 100 Sekunden sollten es mindestens sein. 1000 Sek wäre noch besser.

Wie uns Ulrich Bangert in seinem Papier
http://www.ulrich-bangert.de/AMSAT-Journal.pdf
auf Seite 22 erklärt, wäre das Optimum für den HP 10811 wohl
zwischen 2000 und 10000 s.

von Wolfgang (Gast)


Lesenswert?

nichtgast schrieb:
> Da ich immer öfter eine genaue Referenzfrequenz benötige, möchte ich nun
> einen GPSDO bauen.

Wie genau brauchst du sie denn, um erstmal ein paar Grundlagen für 
dein Vorhaben zu klären? Oder geht es nur um "nice to have"?

von nichtgast (Gast)


Lesenswert?

Wolfgang schrieb:
> Oder geht es nur um "nice to have"?

Das auch. Aber der HP5342A hat 11 Stellen. Ich will bei 18GHz sehen, 
dass die letzte Stelle stabil ist :-)
ich denke so eine Stabilität sollte schon zu erreichen sein.

von Ralph B. (rberres)


Lesenswert?

nichtgast schrieb:
> Das auch. Aber der HP5342A hat 11 Stellen. Ich will bei 18GHz sehen,
> dass die letzte Stelle stabil ist :-)
> ich denke so eine Stabilität sollte schon zu erreichen sein.

so stabil wirst du das mit einen Rubidiumnormal erreichen.

Aber Stabilität und Genauigkeit sind zwei verschiedene Dinge.

10e-11 Genauigkeit ist schon eine Hausnummer. Eigentlich benötigst du 
dafür ein Cäsiumnormal.

Ralph Berres

von nichtgast (Gast)


Lesenswert?

Ralph B. schrieb:
> Cäsiumnormal

üüüüüäh. Das will ich nicht. (also schon, aber ich kanns nicht bezahlen 
:-) 11k$ in der Bucht....).

Eine Dekade weniger wäre noch akzeptabel, obgleich ich das Gefühl habe, 
dass der HP10811 Quarzofen das kann.

Gut, aber eigentlich ging es ja noch nicht darum, sondern ob mein 
Prinzip korrekt ist. Also die Torzeit vom 1PPS ableiten, und während der 
Torzeit die 10MHz Takte zählen. Danach entscheiden, ob die EFC eins hoch 
oder eins runter muss.

von m.n. (Gast)


Lesenswert?

nichtgast schrieb:
> Das auch. Aber der HP5342A hat 11 Stellen. Ich will bei 18GHz sehen,
> dass die letzte Stelle stabil ist :-)
> ich denke so eine Stabilität sollte schon zu erreichen sein.

Dazu braucht es aber zwei Dinge:
1. eine stabile Referenzfrequenz
2. eine stabile Eingangsfrequenz

Hast Du beides? Wenn nein, nimm Klebeband und klebe die Digits ab, die 
nicht stabil sind. Dann hast Du Dein Ziel erreicht ;-)

von uuu (Gast)


Lesenswert?

> Gut, aber eigentlich ging es ja noch nicht darum, sondern ob mein
Prinzip korrekt ist. Also die Torzeit vom 1PPS ableiten, und während der
Torzeit die 10MHz Takte zählen. Danach entscheiden, ob die EFC eins hoch
oder eins runter muss.

So etwa ... ausser, dass eine Sekunde nie genuegt. Denn der Jitter des 
1PPS liegt bei vielleicht 100ns. Integriere ueber eine Viertelstunde, 
also ueber 1000 sekunden. Und dabei zaehlst du bei 10MHz auf 1E10, es 
braucht also ein paar Stellen.

von Ralph B. (rberres)


Lesenswert?

nichtgast schrieb:
> Eine Dekade weniger wäre noch akzeptabel, obgleich ich das Gefühl habe,
> dass der HP10811 Quarzofen das kann.

Ich glaube nicht das der Quarzofen so stabil ist.

Wenn du eine Stabilität von 10e-11 benötigst, könntest du ein 
Rubidiumnormal mit einer Zeitkonstante von >10000 Sekunden als mehrere 
Stunden an ein GPS anbinden. Der muss dabei tag und Nacht durchlaufen 
genauso wie das Rubidiumnormal. Zwingend notwendig ist dann eine 
stabille Anbringung der GPS Antenne an der frischen Luft, wobei eine 
Rundumsicht vorhanden sein sollte.

Wie gesagt 10E-11 ist schon eine Hausnummer, die auch der Rubidium 
alleine nicht kann. Jedenfalls nicht über mehrere Wochen.

Ich nehme an du machst psk32 auf 10 GHz machen. Aber auch da reicht 
10e-9 noch aus. Oder wo benötigt man bei 18GHz 1Hz Auflösung?

Ralph Berres

von Normal (Gast)


Lesenswert?


von Dirk S. (Firma: Messtechnik Mittelstand) (schabadu)


Lesenswert?

Mahlzeit

Bin auch gerade an einem Frequenznormal für den Hausgebrauch dran.
Momentan will ich einen 10MHz OCXO (Isotemp) per GPS 
Langzeitkorregieren.
Mein Ansatz:
- 10MHz über 10:1 Teilerkette auf 1Hz runterteilen (alle Teilerstufen 
schaltbar auf einen Ausgang herausführen)
- 1PPS vom GPS und 1Hz vom OCXO einem Atmel zuführen und per SW 
Phasenabstand überwachen und über DA Wandler Korrekturspannung für OCXO 
erzeugen
Das alles über lange Zeiten (Stunden, Tage) mitteln um nur 
Langzeitdriften zu kompensieren und Jitter rauszurechnen. 
Kurzzeitstabilität liefert nur der OCXO der zusätzlich in einen 
Thermosbehälter eingeschäumt wird. Gedanken macht mir noch die 
Spannungsversorgung speziell für die Korrekturspannungserzeugung (wegen 
Kurzzeitstabilität).

präzise Grüße
Dirk

von Pandur S. (jetztnicht)


Lesenswert?

> Mein Ansatz:
- 10MHz über 10:1 Teilerkette auf 1Hz runterteilen (alle Teilerstufen
schaltbar auf einen Ausgang herausführen)
- 1PPS vom GPS und 1Hz vom OCXO einem Atmel zuführen und per SW
Phasenabstand überwachen und über DA Wandler Korrekturspannung für OCXO
erzeugen

Eher nicht so guenstig. Ein verbesserter Ansatz :
mit dem 1PPS einen Zaehler, der mit den 10MHz zaehlt latchen, und den 
Zaehler immer weiterlaufen lassen. Dann vom gelatchten Wert 10'000'000 
subtrahieren und man erhaelt das Fehlersignal. Dieses Fehlersignal 
integrieren und als Korrektur fuer den OCXO verwenden.
Durch das kontinuierliche Weiterlaufenlassen des Zaehlers fallen 
Jittereffekte raus. Der OCXO ist gelockt wenn sich die Korrekturwerte 
rausmitteln.

von Ralph B. (rberres)


Lesenswert?

Sabberlott W. schrieb:
> Dieses Fehlersignal
> integrieren und als Korrektur fuer den OCXO verwenden.

Ob das funktioniert?

Bedenke das ein VCO eine der Abstimmspannung proportionale Frequenz hat, 
aber die Phase ist nicht proportional. In Verbindung mit dem 
integrierenden Zähler baust du damit einen prima State Vario Oszillator 
auf.

Das Problem hatte ich schon mal in meinen DCF Frequenznormal.

Ralph Berres

von Dirk S. (Firma: Messtechnik Mittelstand) (schabadu)


Lesenswert?

> mit dem 1PPS einen Zaehler, der mit den 10MHz zaehlt latchen, und den
> Zaehler immer weiterlaufen lassen.

Zugegeben, das ist der übliche Weg. Und meist auch der erfolgreiche!
Aber ich wollte den Hund mal andersrum bürsten und schauen was dabei 
rauskommt. Da ist der Erfolg nicht garantiert aber der Erkenntnissgewinn 
größer.
Zudem ich das Auswerten einem Atmega328 unter Arduino überlassen wollte. 
Nur um mal zu sehen, in wie weit diese Umgebung für sinnvolle Aufgaben 
nutzen lässt. Ja ja ja ... ich weiß ... Arduino ...usw.

von W.S. (Gast)


Lesenswert?

nichtgast schrieb:
> Sehe ich das richtig, dass ich im Prinzip ein GPS-Modul her nehme (z.B.
> uBlox?) und dessen 1 PPS Ausgang als Gate-Signal für einen Reziproken
> Frequenzzähler benutze?

Der erste Teil ist OK, der zweite nicht.

Nimm deinen 10 MHz OCXO und mache ihn zum Taktgenerator für deinen µC. 
In deinem µC programmierst du einen Timer so, daß er für 1 Periode genau 
10.000.000 Takte deines OCXO's benötigt. Jetzt führst du das 1PPS Signal 
an deinen µC und triggerst damit ein Capture-Register (was man 
eigentlich bei allen heutigen µC hat).

Während der Aufwärmphase deines OCXO ist es natürlich sinnlos, dieses 
Capture Register auszuwerten. Aber danach solltest du bei jedem Capture 
(also alle Sekunde) die Differenz zwischen dem aktuellen Capture und dem 
vorherigen Capture bilden und daraus die Abstimmspannung deines OCXO 
nachführen, bis die Differenz eben im +/-1 Bereich ist.

Dann gehst du dazu über, nur bei jeder 2. Sekunde diese Differenz zu 
bilden und entsprechend feinfühliger deinen OCXO nachzustimmen. Nach 
einer Weile dann alle 4 Sekunden, dann alle 8 Sekunden usw.

Ich denke mal, bei einer Zeitdifferenz von so etwa 100 Sekunden ist dann 
finito, ab da wird eben nur so nachgeführt, wie es eben bei 100 Sekunden 
Abstand geht.

W.S.

von Pandur S. (jetztnicht)


Lesenswert?

Ob einen externen Zaehler oder den Controller Internen zu verwenden ist 
fast dasselbe. Das Problem den AVR fuer so eine Aufgabe zu verwenden, 
ist dass er sonst nichts mehr machen kann. zB kommunizieren. Ich wuerde 
mir zB den Fehler per serieller Schnittstelle ansehen, logen und 
auslesen wollen. Deswegen wuerde ich einen externen Zaehler latchen 
wollen, dann ist die zeitkritische Funktionalitaet entkoppelt.

von Aron A. (arone)


Lesenswert?

Hier gibts nen schönen Ansatz mit guter Dokumentation:
https://www.eevblog.com/forum/projects/lars-diy-gpsdo-with-arduino-and-1ns-resolution-tic/

Ich habe das ganze schon mal nachgebaut und bin zufrieden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.