Noch ein anderer GPSDO

Gast #5207885
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?
Gast #5207940
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.
Gast #5208046
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.
#5208169
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
#5209002
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
Gast #5209023
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.
Gast #5209055
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 ;-)
Gast #5209139
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.
#5209219
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
(Firma: Messtechnik Mittelstand) #5210023
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
#5210587
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.
#5210609
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
(Firma: Messtechnik Mittelstand) #5211204
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.
Gast #5211258
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.
#5211916
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren