Hallo Mikrocontrollerfreunde ich habe mir einen GPSDO gebaut, und dieser scheint eigentlich auch recht gut zu funktionieren. Im Anhang mal der Teil mit dem Quarzofen und dem DAC, wo ich eine Frage dazu habe. Und zwar habe ich heute meinen GPSDO nach einer Stunde Warmlaufzeit mit einem professionellen GPSDO von Meinberg verglichen. Ich frage mich, was ich da erwarten kann; die beiden Oszillatoren werden ja nie exakt die selbe Frequenz haben, da sie ja nicht wirklich gegeneinander gelockt sind. Jedenfalls habe ich festgestellt, dass im Vergleich zum Meinberg mein Oszillator immer noch ein wenig driftet; manchmal ist er ein bisschen schneller, dann wieder etwas langsamer. Der OCXO treibt einen Mikrocontroller (STM32F303) an. Die PLL setzt den Takt der CPU und der Timer auf 60 MHz hoch. Im Mikrocontroller lasse ich einen 32 Bit Timer laufen, und mit dem PPS-Puls von einem LEA-8 Modul wird ein Capture Ereignis ausgelöst. Ich bilde im Interrupt dann jeweils die Differenz aus dem aktuellen Capturewert und dem Vorhergehenden. Da der Timer mit 60 MHz läuft, müssen zwischen zwei Pulsen somit genau 60 Mio. Perioden liegen. Ich hab dann einen Counter gemacht, welchen ich um 1 hoch zähle, wenn die Frequenz zu tief ist, und um 1 runter zähle, wenn die Frequenz zu hoch ist. Der Counter wird dann noch durch 10 geteilt und auf den DAC gegeben. Das Problem ist, dass die Frequenz nicht richtig stabil wird. Ich triggere mein Oszilloskop auf den Meinberg-GPSDO; mein eigener GPSDO rennt dann immer ein wenig nach rechts oder nach links, ich würde aber erwarten, dass er genau still steht. Wenn ich annehme, dass der Meinberg exakt stabil ist (hat einen neuen Kalibrierkleber drauf), dann driftet die Phase meines GPSDO um ca. +/- 5..10 ns pro Minute hin und her. Ob das wohl akzeptabel ist für ein Frequenznormal? Ich habe auch festgestellt, dass bei einem DAC-Wert von 29797 die Frequenz etwas zu tief ist - wird auf den DAC aber der Wert 29798 ausgegeben, also nur ein Count mehr, dann ist die Frequenz gerade ein kleines bisschen zu hoch. Wie löst man das Problem? Die Abstimmspannung vom OCXO wird sowieso nie exakt zu dem passen, was der DAC kann. Ich muss aber anmerken, dass ich meinen OCXO, der nigelnagelneu ist, nur 1 Stunde aufgewärmt hatte. Vielleicht ist das zu kurz. (Ich brauchte einen speziellen OCXO, da ich etwas hohe Anforderungen an das Phasenrauschen habe.)
Tobias P. schrieb: > Ich habe auch festgestellt, dass bei einem DAC-Wert von 29797 die > Frequenz etwas zu tief ist - wird auf den DAC aber der Wert 29798 > ausgegeben, also nur ein Count mehr, dann ist die Frequenz gerade ein > kleines bisschen zu hoch. Wie löst man das Problem? Indem du die Verstärkung in deinem Regelkreis verringerst. Oder du erhöhst die Auflösung von deinem DAC z.B. durch PWM, i.e. schnelles hin- und herspringen zwischen zwei benachbarten Werten mit dem passenden Tastverhältnis.
Du benoetigst einen langsameren Regler mit PI-Charakteristik. Die Regelzeitkonstante sollte um die 15 Minuten betragen. Bedeutet, der DAC muss noch ein Stueck langsamer werden. Und ich wuerde auf 16 Bit gehen. Mein OCXO zB hat einen Regelbereich von +-1.0ppm, die 16Bit werden auf diesen Bereich abgebildet. Die LM4040 ist leider ein Fehlgriff. Der TK ist 100ppm/K.
oder die Pufferstufe so auslegen, dass sie default die ermittelte mittlere Abstimmspannung liefert und mit dem DAC nurmehr einen Offset erzeugen.
Tobias P. schrieb: > Ob das wohl akzeptabel ist für ein Frequenznormal? Kommt drauf an, was man will. Das sind 166e-12 oder 0.166€-9. Was schon sehr , sehr gut ist. Ich denke ein Axiom75 vielleicht noch ein bisschen besser sein . Angefangen bei der Referenz LM4040. Die hat eine Drift von 100ppm und Rauschen von 35uV, was schon sehr grenzwertig sein dürfte. Dann wäre die Frage, welcher GPS Empfänger. Da reden wir über ca. 10-50ns Jitter, aber nur wenn die Antenne passt. Da wirst du mit 1s Messzeit nicht auskommen , denn das wären dann nur 10-50 ppb. Bei einem HP10811 sind es mal mindestens 2000s im Vergleich dazu. Soweit ich Meinberg verstehe, sind die schon noch besser (je nach Modell). Ohne dass du den DAC veränderst sollte auch die Frequenz stehen bleiben. Wie ist das ganze (thermisch) eingepackt ? Schau mal wie genau der Meinberg ist ?
Ja, das mit dem LM4040 habe ich auch eben erst bemerkt. Allerdings denke ich, ist es doch nicht so schlimm - wenn der LM um 100 ppm wegdriftet, sind das ja grade mal 250 uV. Da ist die Drift der anderen Elemente noch nicht drin.... Werde noch eine bessere Referenzdiode suchen. Im Moment hab ich noch kein Gehäuse, d.h. die Diode ist dem Luftzug vom offenen Fenster usw. ausgesetzt, sicher auch nicht optimal. Obs wohl noch bessere Dioden als den 4040er im SOT23 gibt? hätte noch ADR5040 da, aber das sieht nicht wesentlich besser aus. Gut das mit der Temperatur wird sich ein bisschen entschärfen wenn das Gehäuse da ist. Das GPS-Modul ist ein LEA-8, mit einem vorgeschalteten LNA und einer selber gebauten quadrifilaren Helixantenne, montiert auf dem Fenstersims (innen). Er trackt bis zu 12 Satelliten, also auch recht gut :-)
Der LEA-8 kann nur einen 1PPS ausgeben. Dabei gibt es immer etwas Jitter im Vergleich zu der echten Frequenz vom GPS. Wenn Du einen LEA-8T nehmen würdest, hättest Du die Möglichkeit entweder eine UART-Nachricht zu bekommen, in der der Versatz des 1PPS zum echten Signal aufgeführt ist, oder aber die Frequenz des Timpulse zu verändern (bis 10 MHz hoch). Da würdest Du mehr Messwerte bekommen und kannst damit die Abweichung genauer bestimmen. Der LEA-8T ist halt extra für Timing-Applikationen vorgesehen, der normale LEA-8 eher für Positionserkennung.
Tobias P. schrieb: > Obs wohl noch bessere Dioden als den 4040er im SOT23 gibt? Ich verwende häufiger den MAX6070 (Rauschen ca. 5uV, 6ppm max, 0.04% genauigkeit und <3€). Besser geht natürlich immer (dann meist aber auch teurer). Dabei die Widerstände nicht vergessen, 100ppm sind bei SMD "normal", alles bessere muss man aussuchen. Wenn ich das Datenblatt vom Axiom75-11 auf die Schnelle richtig verstehe, ist der Abgleich +-1ppm mit +-2.25V (bei 2.5V) gemacht. Das bedeutet, dass ca. 20uV notwendig sind für 1e-12 Einstellung der Frequenz. Dann bedeuten 250uV bereits > 1e-11. Das alles muss aber auch erst mal durch den Rest erreicht werden. Es bleibt spannend.
Hallo Tobias, Stampf schrieb: > Du benoetigst einen langsameren Regler mit PI-Charakteristik. Die > Regelzeitkonstante sollte um die 15 Minuten betragen. Bedeutet, der DAC > muss noch ein Stueck langsamer werden. 15 Minuten Zeitkonstante ist ein guter Startwert. Wenn es genauer sein soll: Allan devation von OCXO und NAVSAT Epfänger ermitteln, Schnittpunkt der beiden Kurven als Zeitkonstante des Reglers wählen. Zum Einlesen: http://www.ulrich-bangert.de/AMSAT-Journal.pdf Ansonsten wurde schon genannt: LM4040 ist nicht die beste Wahl, LEA8T ist besser als LEA8 für Timinganwendungen.
Falls der Controller etwas mehr wie nur zaehlen sollte, kann man den PLL Lock auch an einen Chip auslagern. zB einen AD9548, oder aehnlich.
Hi allerseits, der Fehler scheint darin zu liegen, dass ich die PLL verwendet habe, um den Mikrocontroller höher zu takten. Der Jitter ist einfach zu gross. Ich habe die PLL nun weg genommen, sodass der Mikrocontroller nun mit den 10 MHz direkt angetrieben wird. Als Referenzdiode dient ein REF3225, von dem ich noch ein Kistchen gefunden habe. Jetzt habe ich den professionellen GPSDO als Referenz für einen HP 53131A Counter mit 11 Stellen benutzt. Mein eigener GPSDO schwingt im Verlauf ca. eines halben Tages auf exakt 10.000 000 000 MHz ein und bleibt dort - auf dem Scope sehe ich ein stehendes Bild. Werde dann noch mit meiner GoPro eine Zeitrafferaufnahme erstellen. Jetzt werde ich noch das Gehäuse fertig fräsen und ein LCD einbauen :-) Danach habe ich einen frontseitigen und 3 rückseitige 10 MHz Ausgänge mit je 7 dBm, was für praktisch alle Specis, NWAs und dergleichen ausreicht. Das Phasenrauschen werde ich auch noch messen, sollte aber um die -150 dBc @100Hz sein.
Tobias P. schrieb: > Das Phasenrauschen werde ich auch noch messen, sollte aber um > die -150 dBc @100Hz sein. Mit welchem Verfahren/Geräten willst Du das in dem von Dir erwarteten Wertebereich messen?
Gerd E. schrieb: > Tobias P. schrieb: >> Das Phasenrauschen werde ich auch noch messen, sollte aber um >> die -150 dBc @100Hz sein. > > Mit welchem Verfahren/Geräten willst Du das in dem von Dir erwarteten > Wertebereich messen? habs noch nicht genau angeschaut, aber ich werds mal mit dem HP 8662A Signalgenerator, dem 11729C Carrier Noise Test Set und dem 8568B Speci versuchen. Wenn mich nicht alles täuscht bilden die zusammen den HP 3048A Phasenrauschmessplatz. Die Frequenz habe ich ja bereits mit einem professionellen GPSDO gemessen. Ich werd demnächst noch Zugang zu einem Cs Normal haben und das mal vergleichen :-)
Tobias P. schrieb: > Das Phasenrauschen werde ich auch noch messen, sollte aber um > die -150 dBc @100Hz sein. Das dürfte nicht klappen, da der Axiom 75-11 -140dBc @ 100Hz (was ein phantatischer Wert ist) hat und dieser bestimmt das Kurzzeitrauschen. Insgesamt ca. 1^10 ist doch schon sehr schön für den geringen Aufwand.
Schorsch X. schrieb: > da der Axiom 75-11 -140dBc @ 100Hz (was ein phantatischer Wert ist) hat > und dieser bestimmt das Kurzzeitrauschen das stimmt, gemäss Datenblatt. Bernd Neubig hat mir aber einen selektiert und mir den Testreport zukommen lassen. Meiner hat gemäss dem Testreport -154dBc @100Hz, was unheimlich toll ist :-) denn ich gedenke ihn als externe Referenz für den HP 8568B Speci zu verwenden. Dieser verlangt ein Phasenrauschen besser -140dBc @100Hz - daher kommt also meine 'Messlatte', die der GPSDO einhalten sollte :-) ich befürchte noch, dass die ganzen Verstärker und die Spannungsversorgung und HF-Sauereien des Mikrocontrollers das Phasenrauschen verschlechtern, weshalb eine Nachmessung sicher sinnvoll ist.
Das Cs Normal fuer die Frequenz kannst du vergessen, denn hinter GPS steht auch ein Cs Normal. Sprich du misst GPS gegen ein anderes Cs Normal. Und die 150dBc @ 100Hz erscheinen mir sehr sportlich. Interessiert mich aber. Das waer dann ja besser wie ein Rb.
Proletus schrieb: > Das waer dann ja besser wie ein Rb. wieso? ein Rb hat von sich aus auch nicht so ein super Phasenrauschen. Da wird meist auch ein OCXO verbaut, welcher mittels PLL am Rb angebunden ist. Damit wird das Phasenrauschen des Outputs im Wesentlichen durch den OCXO vorgegeben, und die Frequenzgenauigkeit durch das Rb.
Es ist immer so, dass ein OCXO für das Kurzzeitverhalten verantwortlich ist, egal of Cs oder Rb Normal. Und da kann man den unterschiedlichsten Aufwand treiben. Die alten HP5065 hatte so ziemlich das ordentlichste an Board, was es in den letzten Jahrzehnten dazu gab. Tobias P. schrieb: > Testreport -154dBc @100Hz Das ist dann natürlich eine sehr schöne Unterstützung. Wird aber nicht einfach werden, das nachzumessen.
Langfristig musst du dir um die Genauigkeit vom GPSDO keine Gedanken machen, weil die Uhren in den Satelliten an die "offizielle Zeit" angebunden sind. Auf kleine Tau musst du dagegen achten, damit der GNSS Empfänger nicht die in diesem Bereich bessere Stabilität des OCXO kaputt macht. Das passiert, wenn die Reglerzeitkonstante zu kurz gewählt ist.
Zitronen F. schrieb: > Falls der Controller etwas mehr als nur zaehlen sollte, kann man den PLL > Lock auch an einen Chip auslagern. zB einen AD9548, oder aehnlich. Oder man verwendet einen zusätzlichen Interpolator, um ganz von der PLL des µC wegzukommen. Wenn 'mrt12' mich fragen würde, würde ich einen TDC7200 empfehlen ;-)
m.n. schrieb: > Wenn 'mrt12' mich fragen würde, würde ich einen TDC7200 empfehlen ;-) ja, Zufälle gibt, nicht zwar? ;-) zugegeben, ich habe im EEVBlog Forum einen verwandten Thread erstellt. Hätte ich evt. erwähnen sollen. Falls es jemand interessiert: Mit einer noch besseren Spannungsreferenz und einem besseren Antennenstandort habe ich nach 4 Stunden 'Warmlaufzeit' 10.000000000 MHz, also <1mHz Abweichung. Gemessen habe ich dies mit einem HP 53131A Counter, als Referenz diente ein Meinberg GPS Frequenznormal, welches im Februar kalibriert worden ist und seither im Dauerbetrieb läuft. Die Allan Variance habe ich auch bestimmt. Sie liegt bei rund 1e-11 bei ca. 1000s Beobachtungszeit. Länger habe ich nicht gemessen, ich würde aber erwarten, dass der Wert noch weiter sinkt. Der HP 10811 wird ja um 1800s herum erst richtig gut :-) Das Phasenrauschen konnte ich nicht messen - es liegt unter dem Noisefloor meines Equipments (-: Habe noch ein Grafik-LCD angeschlossen, wo die wichtigsten Infos angezeigt werden. Ich glaub, ich werd eine Version 2.0 planen, wo alle Fehler behoben sind und noch ein Interpolator dazu kommt, um innert kurzer Zeit hohe Auflösungen zu erhalten, damit der GPSDO schneller lockt.
Hallo allerseits ich habe an meinem GPSDO noch weiter herum gepröbelt, unter anderem eine saubere Ansteuerung eines LCD-Graphikdisplays, wo die die Frequenz usw. angezeigt wird, und auch am Regelungsalgorithmus habe ich noch versucht herum zu feilen. Ich denke, dass ich im Moment das beste erreicht habe, was meine beschränkte Hardware hergibt. Ich habe ja einen Timer, der von den 10 MHz angetrieben wird, und der 1PPS dient als Capture-Signal. Es wird dann laufend die Differenz zweier aufeinander folgender Capture-Ereignisse gebildet. Zu beginn wird der OCXO im Sekundentakt nachgeregelt, sobald die Frequenz innerhalb +/- 1 Count stabil ist für längere Zeit, wird die Zeitkonstante erhöht usw. bis man bei 1000 Sekunden ist. Ich habe die Frequenzstabilität mit einem Trimble Thunderbolt verglichen und habe ein stehendes Bild auf dem Oszilloskop erhalten. Leider hat mein bester Counter, zu dem ich momentan Zugang habe, nur 1 mHz Auflösung, sodass ich die Abweichungen zwischen Trimble und meinem GPSDO nicht feststellen kann. Und leider ist es wirklich so, dass aufgrund der schlechten Auflösung von halt nur 100 ns die Zeit, bis der OCXO wirklich gelockt ist, extrem lange dauert. Ich wollte daher, wie oben vorgeschlagen, einen bzw. zwei TDC7200 als Interpolator hinzufügen und eine Version 2 realisieren. Ich dachte mir folgendes: Man könnte einen TDC7200 als Start-Interpolator verwenden, und einen weiteren als Stop-Interpolator. Der Start-Interpolator wird mit dem 1PPS gestartet und mit der steigenden Flanke vom OCXO gestoppt. Umgekehrt wird der Stop-Interpolator von der steigenden Flanke vom OCXO gestartet und mit der steigenden Flanke vom PPS gestoppt. Der Capture-Timer wird weiterhin beibehalten! Mit den beiden Interpolatoren kann ich doch jetzt herausfinden, der wievielte Bruchteil einer Periode nach dem Start und vor dem Stop verstrichen sind. Würde das gehen? Wenn der TDC wirklich mit einigen 10ps Auflösung misst, dann würde das ja bedeuten, dass man die Anzahl Perioden während einer Sekunde mit einer Auflösung von ca. 1/1000 messen könnte (was gegenüber jetzt eine Verbesserung um Faktor 1000 wäre ;-)). Was mir nicht klar ist, ob der TDC das wirklich kann. Was passiert, wenn am START-Eingang mehrere Start-Pulse kommen, bevor ein Stop-Puls erscheint? zählt der 1. Puls, oder der letzte?
Alternativ empfehle ich den Zaehler anders zu benutzen. Du kannst mit dem 1PPS den Zaehler triggern und so den 100ns Jitter behalten. Du kannst den Zaehler aber auch weiterlaufen lassen und den Zaehler nur sampeln. So wird der Langzeit Jitter immer kleiner. Du bekommst im Wesentlichen eine Gerade, die durch approximierende Punkte definiert ist. Und du kannst jederzeit, aus der Liste der Timersamples jede gewuenschte Korreltion rausrechnen. Klar ? Die Ungenauigkeit von 100ns verteilt sich auf immer mehr Samples. Bei stabilem Oszillator sind die Samples auf +1, -1 gleichverteilt. Nach 100sek ist der 10MHz Zaehler bei 10^9, bei 100'000 sek (1.4Tage) bei 10^12
:
Bearbeitet durch User
Jetzt ist G. schrieb: > Du kannst den Zaehler aber auch weiterlaufen lassen und den Zaehler nur > sampeln yo, genauso mache ich das ja - Stichwort Capture. Der Zähler läuft dauernd durch! ich betreibe ihn als 32 Bit Counter und lese ihn als Vorzeichenbehaftete Zahl aus. So muss man die Überläufe nicht extra behandeln. Es funktioniert ja, aber eben, bis ich 10e-12 erreicht habe dauert es Tage....
Hallo Tobias, ich habe von Dir noch eine Nachricht bekommen, auf die ich hier eingehen werde. Du mußt beachten, daß ein TDC7200 im Modus 1 Zeiten von 12 ns - 500 ns zwischen Start-Stopp messen kann. Im Modus 2 sind es rund 200 ns -> einige ms. Daher kann man das 1 pps Signal nicht direkt als Start-Stopp-Signal verwenden, da 1 s Abstand viel zu lang ist. Die 10 MHz auf 1 s herunterzuteilen bringt ebensfalls keine sinnvolle Lösung. Da Du schon mit der Capture-Funktion arbeitest, hast Du schon einmal die Grundauflösung von 100 ns @ 10 MHz. Die 10 MHz kannst Du gerne für den µC per PLL auf eine höhere Frequenz bringen, die aber nicht für die Zeitmessung verwendet werden sollte: nimm einen Timer mit Zählereingang, an den die 10 MHz gelegt werden, und dazu einen weiteren Eingang, der als Capture-Eingang dient. Der TDC kann Dir jetzt den Phasenversatz zwischen dem 10 MHz und 1 pps Signal messen, womit der Capture-Wert feiner aufgelöst wird. Geeignet dafür ist Modus 1, wobei die 10 MHz verzögert werden müssen, damit die Zeitdifferenz immer > 12 ns ist. Mit einer Verzögerung von einer Periode (100 ns) bekommt man vom TDC Ergebnisse zwischen 100 - 200 ns. Da das Stoppsignal des 1 pps Impulses gleichzeitig auch das Startsignal für die nächste Messung ist, braucht man lediglich einen einzigen TDC. Durch fortlaufende Differenzbildung Stoppzeitpunkt - alter Startzeitpunkt, hebt sich die Verzögerung von 100 ns wieder auf. Bei Verwendung des TDC, der abgesehen von Eigenrauschen, Auflösungen von < 100 ps liefert, ist der Jitter des 1 pps Signals die Hauptfehlerquelle bei dieser Messung, weshalb auch über einen längeren Zeitraum gemittelt werden muß. Ohne TDC sind es die 100 ns Unsicherheit des 10 MHz Signals. Um alles im Detail zu erklären, müßte man ein Buch schreiben, was mir zu aufwendig ist. Auch wenn es knapp gehalten ist, versuche das von mir Geschriebene zu verstehen. Selber verwende ich den TDC für Frequenzzähler, dessen Schaltplan Du hier sehen kannst: http://mino-elektronik.de/FM_407/fmeter_407.htm#c3 Dabei sind die DFFs IC7, IC8 und IC9 für Synchronisierung und Verzögerung des Eingangssignals (bei Dir konstant 10 MHz) zuständig. Die 'grobe' Zeit wird mit Timer 1 gemessen (PA8 und PA9); die feinere Auflösung mit dem TDC. Viel mehr kann ich Dir nicht erzählen, aber ich hoffe, es hilft Dir ein wenig weiter. Falls Dir der TDC ein doch zu großer Aufwand ist, wäre eine einfachere Möglichkeit, ggf. einen schnelleren µC zu verwenden. Beim STM32F7xx zum Beispiel laufen die Timer mit bis zu 216 MHz und liefern eine Auflösung besser 5 ns. Dieser Wert ist sicherlich kleiner als der Jitter des 1 pps Signals.
Hi m.n., danke für deine Ausführungen. Zuerst zum Thema PLL: ich verwende einen STM32F303. Ich hatte zuerst auch die Idee, die Auflösung zu erhöhen, indem ich die PLL verwende und z.B. einen Takt von 50MHz aus den 10MHz vom OCXO erzeuge. Das hat aber leider nicht funktioniert, die PLL hat gemäss Datenblatt zwar nur 300ps Jitter (dann steht da noch frech: guaranteed by design), aber dass da eine Sägezahnförmige FM-Modulation mit drauf ist, steht nirgends. Somit ist der per PLL vervielfachte Quarztakt unbrauchbar. Man könnte höchstens extern mit einem ADF5..... IC eine PLL aufbauen und hoffen, dass diese dann besser ist und man nicht unnötig Stabilität bzw. Genauigkeit vom OCXO verschenkt. Oder aber man würde mit diskreten Verdoppler- oder Verfielfacherstufen arbeiten, wie in einigen HP Countern, wo aus den 10 MHz ohne PLL, nur mit Vervielfachern, bis zu 500MHz erzeugt werden. Aber das wäre dann eine komplett andere Baustelle :-) Ich interessiere mich mehr für den Einsatz eines TDC als Interpolator. Danke auch hier für deine diesbezüglichen Ausführungen. Mir leuchtet noch nicht ganz ein, weshalb nur ein einziger Interpolator genügt. Ich habe im Anhang eine Skizze von einem Zeitdiagramm beigefügt. Zuoberst sehen wir den 10MHz Takt. Das dürfte klar sein. Auf der Zeile darunter kommt das 1PPS Signal. Ich habe versucht extra hervor zu heben, dass es gänzlich asynchron zum OCXO-Takt sein kann! Zeile 3 ist der Zählerstand meines Timers. (Da ich ihn durchgängig laufen lasse, habe ich nicht 0 als Startwert gewählt. Der 1. PPS-Puls kann ja bei einem beliebigen Zählerstand auftreten). So, bei meinem aktuellen Design würde mit dem 1. PPS der Wert 11 in das Capture-Register geladen, und mit dem nächsten PPS der Wert 17. Die Differenz wäre 6, und das entspricht ja genau der Anzahl voller Perioden innerhalb des Messintervalls, soweit so gut. Jetzt habe ich angenommen, dass mit der steigenden Flanke des 1PPS nicht nur der Capture ausgelöst wird, sondern auch noch der TDC gestartet wird. Mit den steigenden Flanken des OCXO-Takts wird der TDC wieder gestoppt. Die erste Messung des TDC wird z.B. 90ns liefern, die zweite Messung wird ca. 40ns liefern, wenn man so grob schätzt anhand meiner Skizze. Aber nun habe ich doch 2 Probleme: a) ich kenne den genauen Quarztakt nicht. Es sind ja vielleicht 10.000000001 MHz - dann wird der TDC für die selbe Messdauer einen anderen Wert ausgeben, als wenn der Takt 9.999999999 MHz gewesen wäre. (Logisch) b) wieso geht es mit einem TDC? ich habe doch einen Start- und einen Stopzeitpunkt des 1PPS, die beide relativ zum OCXO versetzt sein können. Ich habe noch nicht ganz verstanden, wie der TDC die Messwerte ausgibt. Ich denke mal, die sind wahrscheinlich auf eine Periode vom Referenztakt normiert, sodass der Referenztakt im Prinzip egal ist und man einfach einen Messwert bekommt, wie viele 'angebrochene' Perioden verstrichen sind?
Du startest den TDC mit dem 1PPS, und misst die Distanz zu naechsten 10MHz, und schreibst die den Count des Counters auch auf. Jetzt nimmst du ein Histogramm auf.
Mir hat dies Seite sehr geholfen, hatte aber auch diese Pics und pic Erfahrung. http://www.leapsecond.com/pic/picdiv.htm Bei Interesse kann ich picPET.hex schicken.
Tobias P. schrieb: > Das hat aber leider nicht funktioniert, die PLL hat > gemäss Datenblatt zwar nur 300ps Jitter (dann steht da noch frech: > guaranteed by design), aber dass da eine Sägezahnförmige FM-Modulation > mit drauf ist, steht nirgends. Davon war an anderer Stelle schon einmal zu lesen, ob hier oder auf einen anderen Erdteil. Beim F4xx konnte ich solch ein Verhalten nicht feststellen. Tobias P. schrieb: > Die erste Messung des TDC wird z.B. 90ns liefern, die zweite Messung > wird ca. 40ns liefern, wenn man so grob schätzt anhand meiner Skizze. > Aber nun habe ich doch 2 Probleme: > > a) ich kenne den genauen Quarztakt nicht. Es sind ja vielleicht > 10.000000001 MHz - dann wird der TDC für die selbe Messdauer einen > anderen Wert ausgeben, als wenn der Takt 9.999999999 MHz gewesen wäre. > (Logisch) Der TDC bringt bezogen auf 100 ns eine ca. 1800-fache Auflösung. Da fallen die minimalen Abweichungen bei der Referenzfrequenz nicht ins Gewicht. Ferner wird nach jeder Messung automatisch eine Vermessung des internen Ringoszillators (ca. 18 GHz) durchgeführt, mit der die genaue Start-Stopp-Zeit ermittelt werden kann. (Datenblatt) > b) wieso geht es mit einem TDC? ich habe doch einen Start- und einen > Stopzeitpunkt des 1PPS, die beide relativ zum OCXO versetzt sein können. Das hast Du schon selber aufgezeichnet ;-) Der TDC mißt immer nur den Versatz zwischen den steigenden Flanken der beiden Signale immer beginnend mit 1 pps. Der Start-Versatz (links) mit 87,5 ns wird zum groben Intervall T18-T12 addiert. Der Stopp-Versatz am Ende mit rund 37 ns wird hingegen abgezogen: 87,5 ns + 600 ns - 37 ns = 650,5 ns. Da lückenlos gemessen wird - so machst Du es ja schon mit den Capture-Werten des Timers - wird der Stopp-Versatz am Ende zum Start-Versatz des nächsten Intervalls und der Stopp-Versatz neu ermittelt.
Hi Tobias (hubertus) Auch ich werde auf Deine Mail hier antworten, da es ja zum Thema passt. alter Beitrag - Beitrag "Re: Noch ein anderer GPSDO" Da mein Projekt ja von extremer Langsamkeit leben soll, ist noch nicht so viel passiert. Das Konzept steht, die einzelnen Baugruppen bis auf Stromversorgung soweit fertig und getestet, die SW noch im Kopf und das Gehäuse in Planung. Ich kann also hier noch nicht viel beitragen. Nur das ich grundsätzlich einen gut abgelagerten Quarzofen mit einer extrem langsamen (Mittelung über Tage/Wochen) Regelung kombinieren möchte um Langzeitdrift und Alterung zu kompensieren. Was ich noch nicht im Blick habe sind die Ausgangstreiber (75/50 ohm) --Ideen? Ansonnsten ist es sehr interesant hier mitzulesen wie mit Picosekunden und Auflösungen im mH Bereich gehandelt wird. Ihr dürft mein Projekt dann gerne mal vermessen. schönen Tag noch
Dirk S. schrieb: > Was ich noch nicht im Blick habe sind die Ausgangstreiber (75/50 ohm) > --Ideen? Hallo Dirk ich habe in meinem GPSDO einen Distributor eingebaut, sodass ich bis zu 4 Ausgänge von 10MHz Sinus habe und einen 1PPS Ausgang. Ich habe die Ausganstreiber mit einem Video-OpAmp gemacht. Der Erfinder von Stable32 (Software zur Stabilitätsmessung an Oszillatoren) hat seinen Distributor hier beschrieben http://www.stable32.com/An%20Octal%2010%20MHz%20Distribution%20Amplifier.pdf ich habe es ähnlich realisiert, nur habe ich einen anderen OpAmp verwendet (AD9631; ich habe noch LMH6714 getestet, funktioniert gleich gut. Meine Schaltung ist aber noch ein wenig verbessert gegenüber derjenigen von Wriley, da ich nur eine einzige Versorgungsspannung nutzen wollte habe ich den nichtinvertierenden Eingang der OpAmps auf halbe Betriebsspannung gelegt und dann einen AC-gekoppelten invertierenden Verstärker realisiert. Dieser ist so dimensioniert, dass eine einzelne Verstärkerstufe eine Eingangsimpedanz von ca. 220 Ohm hat; wenn ich dann die 4 Verstärker parallel schalte, habe ich ungefähr die 50 Ohm, die der OCXO gerne sieht. Vom OCXO habe ich mit ein paar pF noch eine Abzweigung zum Mikrocontroller gemacht, um diesen so mit dem Takt zu versorgen. An den Outputs der OpAmps habe ich dann auch wieder eine AC-Kopplung reslieirt, sowie einen 50 Ohm Seriewiderstand, sodass man 50 Ohm Ausgänge erhält. Die Verstärkung ist so gewählt, dass genau 8 dBm an allen Ausgängen anliegen, und das hält die Schaltung auch sehr genau ein. Wichtig ist, wie auch in dem verlinkten Papier steht, dass die Outputs voneinander gut rückwärts isoliert sind, sodass ein Gerät, das am Output 1 angeschlossen ist, nicht 'merkt', ob am Output 2 was passiert, und dass keine Sauereien, die ein Gerät evt. erzeugt durch den Distributor zu einem anderen Output gelangen. Ich habe das Schema jetzt nicht hier, aber ich glaube, es ist ziemlich klar, wie ich es gemeint habe. Für den 1PPS output wollte ich ein TTL-mässiges Signal. Ich habe dazu einfach einen Bustreiber 74AC541 benutzt und dessen 8 Ausgänge über je 390 Ohm parallel geschaltet. Das funktioniert bei mir tadellos und gibt ein Rechtecksignal wie aus dem Bilderbuch, mit guten Flanken. (Da das 1PPS-Signal nicht direkt vom GPS-Modul abgenommen wird, sondern per Timer im Mikrocontroller erzeugt wird, kann man auch andere Frequenzen erzeugen). Dirk S. schrieb: > Auflösungen im mH*z* Bereich Ich hoffe, dass mein GPSDO von der Genauigkeit her irgendwann in Richtung Stratum 1 geht, also 1 mHz wäre mir noch ein bisschen zu viel. Es müsste noch besser werden. Ich will bei meinem Frequenzzähler auch bei 20 GHz keine der 11 Stellen wackeln sehen. m.n. schrieb: > Davon war an anderer Stelle schon einmal zu lesen, ob hier oder auf > einen anderen Erdteil. Beim F4xx konnte ich solch ein Verhalten nicht > feststellen. ja, im EEVBlog hat einer ein paar Messungen dazu gepostet. Hat der F4 eine andere PLL als der F3? ich dachte, das RCC-Modul wäre das selbe. m.n. schrieb: > Das hast Du schon selber aufgezeichnet ;-) > Der TDC mißt immer nur den Versatz zwischen den steigenden Flanken der > beiden Signale immer beginnend mit 1 pps. Der Start-Versatz (links) mit > 87,5 ns wird zum groben Intervall T18-T12 addiert. Der Stopp-Versatz am > Ende mit rund 37 ns wird hingegen abgezogen: 87,5 ns + 600 ns - 37 ns = > 650,5 ns. > > Da lückenlos gemessen wird - so machst Du es ja schon mit den > Capture-Werten des Timers - wird der Stopp-Versatz am Ende zum > Start-Versatz des nächsten Intervalls und der Stopp-Versatz neu > ermittelt. Danke :-) da bin ich echt auf dem Schlauch gestanden. Ich lasse mal meinen jetzigen Entwurf des GPSDO noch ein weilchen laufen, um länger mit dem Trimble vergleichen zu können, und denke mal über die Version 2 nach. Du hast ja bereits Erfahrung mit dem TDC. Funktioniert es tatsächlich, das Signal des OCXO am STOP-Eingang einzuspeisen? der TDC hat kein Problem damit, wenn da dauernd ein Signal anliegt? im Datenblatt habe ich leider keine Aussage darüber gefunden, was passiert, wenn das Startsignal mehrmals hintereinander aktiviert wird, oder was passiert, wenn das Stopsignal schon mehrmals aktiviert wurde, bevor der Timer überhaupt gestartet ist. Rein von der Applikation, für die der TDC gedacht ist, kann das ja normalerweise auch gar nicht passieren, daher war bzw. ist es für mich nicht klar, was er dann in einem solchen Fall macht. Grüsse, Tobias
> http://www.stable32.com/An%20Octal%2010%20MHz%20Distribution%20Amplifier.pdf Danke, kannte ich noch nicht. > Ich habe das Schema jetzt nicht hier, aber ich glaube, es ist ziemlich > klar, wie ich es gemeint habe. Glasklar. > Für den 1PPS output wollte ich ein TTL-mässiges Signal. Ich habe dazu > einfach einen Bustreiber 74AC541 benutzt und dessen 8 Ausgänge über je > 390 Ohm parallel geschaltet. Das funktioniert bei mir tadellos und gibt > ein Rechtecksignal wie aus dem Bilderbuch, mit guten Flanken. Ok, das wäre dann mein umschaltbarer Ausgang der Teilerkette. > Ich hoffe, dass mein GPSDO von der Genauigkeit her irgendwann in > Richtung Stratum 1 geht, also 1 mHz wäre mir noch ein bisschen zu viel. > Es müsste noch besser werden. Ich will bei meinem Frequenzzähler auch > bei 20 GHz keine der 11 Stellen wackeln sehen. Extremist! Ist aber OK, möchte meinen GPSDO ja auch mal extrem genau vermessen haben.
Tobias P. schrieb: > Ich hab dann einen Counter gemacht, welchen ich um > 1 hoch zähle, wenn die Frequenz zu tief ist, und um 1 runter zähle, wenn > die Frequenz zu hoch ist. Der Counter wird dann noch durch 10 geteilt > und auf den DAC gegeben. Mache das lieber anders: Bringe einen Spannungsteiler aus zwei Festwiderständen am OCXO an, den du nach Messen der benötigten Steuerspannung so gut es geht auf diese Spannung einstellst. Damit hast du quasi den analogen Grobabgleich. Sodann führst du den Ausgang deines DAC's über einen Vorwiderstand an den Steiereingang des OCXO und du nimmst das "Counter durch 10" heraus. Damit wird der überstreichbare Frequenzbereich des OCXO zwar eingeengt abe zugleich die Feinheit der Einstellung erhöht. Das hilft schon mal um einen geschätzten Faktor 10, denn dein OCXO wird nicht erst dann verstellt, wenn dein Vergleichsergebnis um +/- 10 sich geändert hat, sondern er wird bereits nachgestellt, wenn es sich um +/- 1 geändert hat. Ansonsten solltest du an den DAC-Ausgang noch einen dezenten Tiefpaß setzen, damit der Sprung beim Ändern sachte erfolgt. Aber die Zeitkonstante noch deutlich unter 1 Sekunde halten, sonst wird's instabil. Nochwas: Deine Idee mit dem Timer/Capture ist von hause aus gut und schwingt auch wesentlich schneller ein als eine simple PLL, da sie ja auf fast jede Phasenlage einrasten kann. Aber bedenke, daß alles, was du in einem µC hast, getaktete Logik ist. Auch die Signale, die du an den Pins des µC anliegen hast, werden zuerst mit dem zugehörigen Systemtakt in Samples verwandelt, bevor sie im µC irgend etwas bewirken können. Tobias P. schrieb: > Die PLL setzt den > Takt der CPU und der Timer auf 60 MHz hoch. Eben. Damit kriegst du die Samples des 1PPS eben auch nur im Takte von 1/60 µs, also ca. alle 17 ns. Feiner wird's nicht, solange du µC interne Logik verwendest. Wenn du da raus willst, dann wird das Ganze aufwendiger, denn du mußt es dann mit externer Logik tun. W.S.
Nochmals zum TDC. Damit moechte man den Versatz zwischen 1PPS und dem OCXO messen. Die beiden sind voellig asynchron. Gemaess Datenblatt sind mehrere Stop zulaessig. Die minimale Zeit zwischen 2 Stops ist 67ns, was den Clock, welcher sinnvollerweise auch grad gleich dem OCXO ist, auf 16MHz limitiert. Es bleiben 2 Fragen. - Was geschieht wenn der Stop (next OCXO up) naeher wie die spezifizierten 12ns ist. => vielleicht.. Gemaess 8.3.3.3 werden vorherige Stops ignoriert - Der OCXO laeuft und wird gezehlt. Auf welche OXCO Flanke wurde nun gemessen? Auf Synchronizitaet zwischen 1PPS und dem OXCO zu regeln bedeutet den Versatz auf gemittelt Null zu bringen. Sinnvollerweise regelt man auf konstanden TDC Wert zwischen zwei OCXO pulsen bei gleichem OCXO Clockcount.
:
Bearbeitet durch User
Dirk S. schrieb: > Extremist! Ist aber OK, möchte meinen GPSDO ja auch mal extrem genau > vermessen haben. eben ;-) W.S. schrieb: > Mache das lieber anders: > Bringe einen Spannungsteiler aus zwei Festwiderständen am OCXO an, den > du nach Messen der benötigten Steuerspannung so gut es geht auf diese > Spannung einstellst. ja, man könnte sich sogar überlegen, da ein kleines Poti einzubauen, denn wenn der OCXO irgendwann aufgrund Alterung ausserhalb des Einstellbereichs gedriftet ist, dann kann man ihn nicht mehr auf die Sollfrequenz ziehen. Mit dem Poti könnte man das dann noch retten. Aber ja, die erzielbare Genauigkeit dürfte so wohl besser sein, denn der Einstellbereich wird schmaler. W.S. schrieb: > Ansonsten solltest du an den DAC-Ausgang noch einen > dezenten Tiefpaß setzen, damit der Sprung beim Ändern sachte erfolgt. jup, das habe ich gemacht. 1k / 10uF. Ich habe es allerdings weniger gemacht, um den Sprung abzufedern, sondern um etwaiges Rauschen, welches dann vom OpAmp ja noch verstärkt wird, vom EFC-Eingang des OCXOs fernzuhalten. Der Cap ist so nah wie möglich am Pin des OCXO, um die Leitung so kurz zu halten wie es nur geht. W.S. schrieb: > Deine Idee mit dem Timer/Capture ist von hause aus gut und schwingt auch > wesentlich schneller ein als eine simple PLL, da sie ja auf fast jede > Phasenlage einrasten kann. hmm ob das wirklich schneller als eine PLL ist, bezweifle ich eben :-) ich hatte es zu Anfang auch für eine besonders gute Idee gehalten, und ich bin nach wie vor der Meinung, dass man so, da der Timer kontinuierlich durch läuft, beliebig kleine Frequenzfehler messen kann, aber die Zeit, bis die Frequenz halt wirklich gelockt ist, kann sehr lange dauern. Prinzipiell bekomme ich ja jede Sekunde einen neuen Messwert - würdest du dann auch wirklich jede Sekunde den OCXO nachstellen? Es kann ja sein, dass man aufgrund einer kleinen Phasenverschiebung zwischen 1PPS und dem OCXO in der einen Sekunde mal 9999999 Counts hat und dann dafür in der nächsten 10000001. Dann würde man zweimal am OCXO 'wackeln', was natürlich unschön ist, denn am Ende landet man wieder am selben Ort, aber hat dafür einen kleinen Frequenzsprung erzeugt. Jetzt ist G. schrieb: > Auf Synchronizitaet zwischen 1PPS und dem OXCO zu regeln bedeutet den > Versatz auf gemittelt Null zu bringen. Sinnvollerweise regelt man auf > konstanden TDC Wert zwischen zwei OCXO pulsen bei gleichem OCXO > Clockcount. hmm ja das hatte ich mir auch gedacht - quasi die Phase zwischen OCXO udn 1PPS soll auf 0 geregtlt werden. Damit hätte man eine PLL. Aber ich stehe immer noch ein wenig auf dem Schlauch, wie ich das dann implementiere. Nur die Phase auf 0 regeln heisst ja nicht, dass die Frequenz dann stimmt, denn die PLL kann, wie du ja auch schon gesagt hast, auf jede beliebige steigende Flanke der 10 MHz einrasten, da man nicht weiss, welche Flanke man erwischt hat :-/
Tobias P. schrieb: > Nur die Phase auf 0 regeln heisst ja nicht, dass die > Frequenz dann stimmt, denn die PLL kann, wie du ja auch schon gesagt > hast, auf jede beliebige steigende Flanke der 10 MHz einrasten, da man > nicht weiss, welche Flanke man erwischt hat Wenn die Abweichung gering genug ist, dürfte es da keine Mehrdeutigkeiten geben. 100ns wären 10^-7 Abweichung bei 10 MHz. Du kannst ja auch die 10MHz mitzählen, dann ist klar wie groß die Abweichung ist. Je kleiner die Abweichung, umso länger muss dann die Messdauer sein. Für 10^-10 dann z.B. mindestens 1000 Sekunden oder 1000x den PPS Impuls vom GPS.
wäre es nicht auch denkbar nach einer groben Annäherung über den µC TC, diesen danach als "Fenstersteuerung" für den TDC nur rund um den 10E7-ten Takt zu verwenden? Quasi "Flankenlupe"?
G. H. schrieb: > wäre es nicht auch denkbar ... Warum so kompliziert, wenn es doch noch den NE555 gibt. Schorsch X. schrieb: > Da reden wir über ca. 10-50ns Jitter Denkt noch jemand daran?
Beitrag #5615266 wurde von einem Moderator gelöscht.
G. H. schrieb im Beitrag #5615266: > m.n. schrieb: >> Warum so kompliziert, wenn es doch noch den NE555 gibt. > > DEPP Wieso? Wenn man schon eine unwirksame Lösung plant, ist die mit einem NE555 doch viel einfacher.
m.n. schrieb: > Wenn man schon eine unwirksame Lösung plant, ist die mit einem NE555 > doch viel einfacher. Wieso? er will doch auch den TDC benutzen. Ich hab zwar nicht verstanden wie, aber wieso sollte das unwirksam sein?
Gibt es schon Ergebniss ? Zum Einrasten des pps Pulses auf den 10Mhz Clock, gewöhnlich teilt man den 10Mhz Clk auf 10khz oder beim TDC auf 100Khz und verwendet den pps Puls als Start sowie den 10 oder 100khz als Stop. Macht aber auch nur Sinn, wenn die Sawtooth correction des GPS Receivers benutzt wird, und dies in HW oder SW korrigiert wird.
Nee. Der erste Ansatz ist mit dem 1PPS puls einen Zaehler zu starten, der bei einem 10MHz Clock auf 10'000'000 zaehlt. Dann weiss man ob der Zaehler zu schnell uder zu langsam zaehlt und kann nachregeln. Nun hat der 1PPS puls aber bis zu 40ns Jitter, dazu kommt, dass der 10MHz und der 1PPS asynchron zueinander sind. Bedeutet der 10MHz kann bis zu 100ns zu spaet starten. Die naechste Loesung ist dann den 10MHz zaehler durchlaufen zu lassen und mit dem 1PPS den Zaehler zu sampeln. Das Histogramm ueber eine laengere Zeit zeigt dann bei welcher Frequenz der Zaehler effektiv laeuft. Die Werte schwanken idealerweise +-1 Count um 10'000'000. zumindest kann man so darauf regeln.
Tobias P. schrieb: > ja, man könnte sich sogar überlegen, da ein kleines Poti einzubauen, > denn wenn der OCXO irgendwann aufgrund Alterung ausserhalb des > Einstellbereichs gedriftet ist, Bloß kein Poti. Sowas bringt eine Instabilität herein, die du auf gar keinen Fall haben willst. Du mußt die Bereichseinengung auch nicht übermäßig weit treiben. Nur soweit, daß ein einzelner Schritt aus deinem DAC in seiner Wirkung deutlich kleiner ist als das LSB bei deinem Vergleich zwischen 1PPS und Timerstand. Dann macht ein DAC-Schritt von 1 auch keine Verwerfung, die du direkt schon bei dem nächsten Vergleich messen kannst. Ich selber hab das durch, allerdings nicht per OCXO, sondern mit nem billigen TCXO. Das Verfahren, auf konstante Phasenlage zwischen Timer und 1PPS zu steuern, ist tatsächlich schneller als wenn man beide Signale auf eine feste Phasenlage (0 oder 180° oder 90° oder so) einregeln wollte. Aber da man gut dran tut, pro Sekunde eben nur mit 1 LSB nachzustimmen und keinen Proportionalteil zu haben, dauert es trotzdem lange. Das Problem bei der Sache ist ja eigentlich, daß man eben nur 1 Regel-Ereignis pro Sekunde hat - und das macht dann eben eine saulangsame Regelzeit aus. W.S.
Wie bekommt man den das GPS Signal an den Arbeitsplatz? Oder muss das GPSDO Teil am Fenster oder gar besser draussen stehen?
Ich verwende ein günstiges TCVCXO und mein Regelkreis ist 30/40/50/60/100/360 Sekunden verschieden gewichtet. 360 hat die Gewichtung 1 , 30 sowie 40 Sek verändern den 16bit PWM um 177 Werte. Die Werte sind jeweils 177/177/63/17/3/1 Gemessen wird vom verlängerten PPS impuls (~150ms) auf einen 5uS verzögerten pps Puls (100ms) des XO mittels Xor Glied. Auflösung ist sub ns und das Sawtooth compensierte Resultat wird stark gefiltert um den Jitter loszuwerden, aber es funktioniert auch ohne Sawtooth compensation.
Uwe B. schrieb: > Wie bekommt man den das GPS Signal an den Arbeitsplatz? Oder muss das > GPSDO Teil am Fenster oder gar besser draussen stehen? draussen ist besser, da in Innenräumen der Jitter grösser ist. Beispiel: LEA8 hat einen spezifizierten Jitter von <22ns wenn die Antenne draussen platziert ist mit guter Sicht auf den Himmel. In Innenräumen kann der Jitter bis 100ns betragen, wenn ich mich richtig erinnere. Ich betreibe aber meinen GPSDO auf der Fensterbank (Suboptimal, zB. auch wegen Temperaturschwankungen) mit einer selber gebauten Helix-Antenne (https://hb9fsx.ch/wordpress/index.php/2018/01/31/a-homebrew-gps-antenna/ ) und einem mit MMIC aufgebauten LNA mit 22dB Gain. Das funktioniert bisher sehr gut. Bemerkenswert ist, dass ich mit dem LEA8 Empfänger auf der Fensterbank bis zu 12 Sats gleichzeitig empfange, während zwei kommerzielle (aber ältere) GPSDOs am selben Antennenstandort mit ach und Krach einen bis zwei Sats sehen: - ein GPSDO von Jackson Labs hat selbst nach einer Woche keinen Lock, da er zu wenig Sats sieht. Bringt man die aktive Patchantenne nach draussen (Kabel durch einen Spalt im Fenster gefädelt) wird es besser, immerhin 2..3 Sats, aber kein Lock. - ein Trimble Thunderbolt sieht nach ca. 15min mit der Antenne im Innenraum 4 Sats und versucht zu disziplinieren, schlägt aber fehl und lockt auch nicht sauber. Also heisst das meiner Meinung nach: - wenn man sehr moderne Empfänger wie uBlox LEA8 verwendet, dann kann es in Innenräumen funktionieren, aber ein Fenster braucht es schon. - die mitgelieferten Patchantennen zum Trimble/Jackson Labs GPSDO sind grottig, oder - die Empfänger sind schlicht noch nicht modern genug, um auch unter erschwerten Bedingungen empfangen zu können oder - beide meine Vergleichs-GPSDOs haben einen Schuss. Chris schrieb: > TCVCXO ist sicher von der Stabilität und Phasenrauschen schlechter als ein OCXO. Ich hatte meinen OCXO nach geringstem Phasenrauschen ausgewählt. Hast du Zahlen, was dein TCVCXO kann? Chris schrieb: > 30/40/50/60/100/360 Sekunden verschieden gewichtet. 360 hat die > Gewichtung > 1 , 30 sowie 40 Sek verändern den 16bit PWM um 177 Werte. Die Werte sind > jeweils 177/177/63/17/3/1 > Gemessen wird vom verlängerten PPS impuls (~150ms) auf einen 5uS > verzögerten pps Puls (100ms) des XO mittels Xor Glied. das hab ich nicht ganz verstanden, aber klingt interessant - kannst du es nochmals genauer erklären? Chris schrieb: > Sawtooth compensation wieso sprechen eigentlich immer alle davon? ich habe irgendwo gelesen, dass das bei neueren Empfängern nicht nötig sein soll (?).
Tobias P. schrieb: > Chris schrieb: >> TCVCXO > > ist sicher von der Stabilität und Phasenrauschen schlechter als ein > OCXO. Ich hatte meinen OCXO nach geringstem Phasenrauschen ausgewählt. > Hast du Zahlen, was dein TCVCXO kann? > Nicht wirklich. Ich benutze den hier: ASVTX-12-A-40.000MHZ-I15-T an einem Pic cpu über cap angeschlossen und wird in der pic cpu durch 4 geteilt, am clkout Ausgang sind dann 10Mhz vorhanden. Im Datenblatt sind Werte des 19.2Mhz angegeben. Phase Noise @ 19.2MHz 100Hz offset from the carrier -115 -100 1kHz offset from the carrier -135 -125 dB/Hz 10kHz offset from the carrier -150 -140 Datenblatt hier: https://www.mouser.it/datasheet/2/3/ASTX12_ASVTX12-8609.pdf Für mich war niedrige Temperatur und geringe Stromaufnahme wichtig. > Chris schrieb: >> 30/40/50/60/100/360 Sekunden verschieden gewichtet. 360 hat die >> Gewichtung >> 1 , 30 sowie 40 Sek verändern den 16bit PWM um 177 Werte. Die Werte sind >> jeweils 177/177/63/17/3/1 >> Gemessen wird vom verlängerten PPS impuls (~150ms) auf einen 5uS >> verzögerten pps Puls (100ms) des XO mittels Xor Glied. > > das hab ich nicht ganz verstanden, aber klingt interessant - kannst du > es nochmals genauer erklären? > Die Schaltung benutzt einen 16bit pwm mit 6ppm Einstellungsbereich, +-3ppm. Der Korrekturalgorithmus misst jede Sekunde die Zeitdifferenz zwischen GPS und XO. Dazu wird das pps Signal mit einem 74HC123 auf ca 150ms verlängert und mittels Xor wird der um ca 5uS zum gps pps Impuls zeitversetzte 100ms pps Puls verodert um T1 und T2 im sub ns Bereich zu messen, Die Messmethode welche ich verwende kann 1-10uS messen. Auflösung ist ca 80ps bei 40Mhz. Diese Daten werden mit einem Zeitinterval von etwas weniger als 5min gemittelt. Dies ist für die fine adjustment, coarse benutzt XO Takte als Zeiteinheit. Der Algorithmus vergleicht 30 Sek bei zuviel Abweichung wird der pwm Wert um 177 incrementiert oder decrementiert. Ist der XO in sync, wird bei 40 Sek sowie 50 Sek usw kontrolliert. Kommt der Algorithmus auf 100 Sekunden und ist falsch, wird der pwm wert um 3 verändert. Wenn der Algorithmus 360 Sekunden erreicht, egal of korrekt oder falsch, heisst dies 10Mhz ist auf 12 Stellen stabil. Nach jeder Korrektur oder bei 360 Sekunden beginnt die Zählung wieder von 0 Sekunden. > Chris schrieb: >> Sawtooth compensation > > wieso sprechen eigentlich immer alle davon? ich habe irgendwo gelesen, > dass das bei neueren Empfängern nicht nötig sein soll (?). Das stimmt, neuere Empfänger mit der T(ime) Firmware machen dies, nicht aber die normale Firmware. Es geht darum dass der Empfänger den PPS Impulse mittels Bresenham Algorithmus ausgegeben und dieser eine Art Sägezahn Artifakt generiert mit einen Kegel bei Vorzeicheninversion. Der gps Empfänger weiss wie viel diese Approximation falsch liegt. Das ist die sogenannte Sawtooth correction. Das Rauschen wird dadurch erheblich reduziert und dieser Artifakt eliminiert. Macht erst Sinn, wenn man die Zeit genauer als 40ns misst.
Chris schrieb: > Für mich war niedrige Temperatur und geringe Stromaufnahme wichtig. Wie viel mW zieht denn die gesamte Schaltung im Schnitt? Lässt du das GPS Modul einschlafen wenn die Verhältnisse stabil sind (T, Δf)?
Mit 3v TTL output 46mW . gps Modul bleibt eingeschalten aber im low power modus mit nur 1hz update, keine T Firmware.
W.S. schrieb: > Du mußt die Bereichseinengung auch nicht übermäßig weit treiben. Nur > soweit, daß ein einzelner Schritt aus deinem DAC in seiner Wirkung > deutlich kleiner ist als das LSB bei deinem Vergleich zwischen 1PPS und > Timerstand. Dann macht ein DAC-Schritt von 1 auch keine Verwerfung, die > du direkt schon bei dem nächsten Vergleich messen kannst. Hallo hallo, ich habe die Bereichseinengung nun so dimensioniert, dass man in beide Richtungen nur ca. 1 Hz den OCXO ziehen kann. Vorher waren es 10 Hz - ich müsste also somit noch eine um Faktor 10 bessere Auflösung bekommen ;-) soweit jedenfalls in der Theorie. Mein HP 34401 sagt, dass der OCXO nun in Schritten von gut 10 Mikrovolt nachgeführt wird - vielleicht etwas gar extrem, aber schauen wir mal, wo es hin führt. @Chris: bin grade unterwegs und schreibe vom Smartphone aus - daher muss ich mich kurz fassen, ich meld mich nochmal. Danke jedenfalls für deine Ausführungen, sehr hilfreich, wenn ich v2.0 entwerfe. ULP Zeitnuß schrieb: > Lässt du das GPS Modul einschlafen wenn die Verhältnisse stabil sind (T, > Δf)? das sollte man tunlichst vermeiden, denn sonst bekommt man es nicht mit, wenn der Taktgeber (OCXO, TCXO, ...) z.B. aufgrund von Alterung driftet.
Chris schrieb: > 100Hz offset from the carrier -115 -100 ja, sieht ganz brauchbar aus. Für Spektrumanalyzer als Referenz wohl begrenzt brauchbar, aber für alles andere sicher mehr als OK, z.B. für Counter und dergleichen. Ein HP 8568B Spektrumanalyzer verlangt < -140dBc @ 100Hz, da gibt es nur wenige OCXOs, die das können. Chris schrieb: > Dies ist für die fine adjustment, coarse benutzt XO Takte > als Zeiteinheit. interessant. Ich habe mir auch ähnliches überlegt, z.B. zu Beginn eine "grobe" Abstimmung, wo jede Sekunde justiert wird, und wenn er eine Minute in Folge stabil war, dann den Counter-Wert über z.B. eine Minute mitteln. Man sollte ja eigentlich nicht zu oft nachregeln, denn wie das berühmte AMSAT-Paper von Ulrich Bangert gezeigt hat, hat z.B. ein HP 10811A OCXO seine beste Stabilität bei einer Beobachtungszeit von ca. einer halben Stunde. Ich habe jetzt erst mal die "Bereichseinengung" von W.S. vorgeschlagen implementiert. Der EFC-Eingang wird mittels Spannugnsteiler in die Mitte gezogen, der DAC kann so die Spannung nicht mehr von 0 bis 5 Volt verändern, sondern nur noch von ca. 2.2V bis ca. 3V oder so. Damit kann ich den OCXO in beide Richtungen um max. ca. 1Hz verstimmen - das gibt eine viel bessere Auflösung. Im Moment lasse ich ihn so laufen und korrigiere, falls nötig, jede Sekunde. Den Counter-Wert lasse ich mir auf dem Display anzeigen, so habe ich dann auch beobachten können, dass es Momente gibt, wo er 10000001 Counts hat, dann den EFC-Wert um 1 nach unten korrigiert und im nächsten Moment dann 9999999 Counts hat, und sodann die EFC wieder um 1 erhöht - sehr merkwürdig. Leider habe ich keine USB-Schnittstelle implementiert, um alles mitzuloggen - das muss ich bei der nächsten Version auch anpassen. Im Anhang noch 2 Bilder von meinem Gerät. Die beiden BNC-Buchsen auf der Front stellen einmal 10 MHz und einmal einen 1PPS zur Verfügung. Der 1PPS wird vom Mikrocontroller über einen Timer erzeugt und ist nicht der selbe 1PPS, wie der vom GPS-Modul, damit ich den Jitter los bin. Das PWM-Modul ist so konfiguriert, dass ich jede Sekunde einen 100ms langen Puls bekomme. Mittels Counter habe ich verifiziert, dass in einer Periode exakt 10000000 Pulse vom 10MHz anliegen. Das 1PPS-Signal ist wichtig, wenn man den GPSDO mit einem anderen vergleichen will, dann möchte ich mittels TIC (Time Interval Counter) die Allan-Deviation bestimmen. Mein bester Counter ist ein HP 5335A, von daher weiss ich nicht, ob es mit diesem überhaupt möglich sein wird, gemäss Datenblatt kann er angeblich eine Single-Shot Auflösung von 100ps, da er auch über analoge Interpolatoren verfügt, aber ich habe nicht den Eindruck, dass er bei mir wirklich mit 100ps Auflösung misst - da muss ich noch ein bisschen graben. Auf der Rückwand sind dann nochmals 3 10MHz-Ausgänge sowie ein Anschluss für eine 12V Wandwarze und natürlich die Antennenbuchse. Im Hintergrund kann man meine selber gezimmerte, aus einem Stück Semirigid-Koax zusammengelötete Helix-Antenne sehen.
Jede sekunde zu reagieren ist sinnlos. Denn dann kriegst du ein unruhiges System. Dass es zustaende wie -1,0, resp 0,+1 geben kann ist klar. Die Frage ist dann was passiert, wenn du auf 10 sekunden misst, ist es dann immer noch -1,0, resp 0,+1 ? Und was ist wenn du 100 sekunden misst ? Immer noch -1,0, resp 0,+1 ? Was ist wenn du 1000 sek misst ? Alle diese Aussagen gleichzeitig werden erreicht wenn man einen durchlaufenden Zaehler alle Sekunden latcht und speichert. Du brauchst keinen TDC. Zum Vergleichen von 2 solchen Geraeten. Kann man qualitativ mit dem Oszilloskop machen. Wann laeuft einer dem anderen um einen Count weg. Unbemannt : Man merkt sich alle diese -1,0,+1 und wertet aus. Eigentlich benoetigt man keinen Vergleich. Denn das GPS haengt an einem Cluster von CS Uhren, welche per Definition die korrekte Zeit anzeigen. Wenn man auf allen Zeitskalen immer bei -1,0,+1 liegt, ist eigentlich gut.
Jetzt ist G. schrieb: > enn man einen > durchlaufenden Zaehler alle Sekunden latcht und speichert :-) ich kann schon fast nicht mehr zählen, wie oft ich schon gesagt habe, dass ich genau das mache ;-) Stichwort Input Capture. Den 1PPS erzeugt ich mit Output Compare. Jetzt ist G. schrieb: > Zum Vergleichen von 2 solchen Geraeten. Kann man qualitativ mit dem > Oszilloskop machen. ja, das stimmt wohl. So habe ich auch ermittelt, ob mein GPSDO im Vergleich zu einem Trimble still steht oder irgendwo hin driftet. Aber die Allan Deviation bekommt man mit dieser Art von Messung nicht. Diese sagt aber etwas über die Stabilität des Oszillators aus. Jetzt ist G. schrieb: > Eigentlich > benoetigt man keinen Vergleich. Denn das GPS haengt an einem Cluster von > CS Uhren, welche per Definition die korrekte Zeit anzeigen. JA! aber einen Vergleich benötigt man dennoch. Sonst könnte man ja auch einen LC-Oszillator nehmen und diesen disziplinieren - auf lange Sicht wird dieser auch die "richtige" Frequenz haben. Aber man hat dann doch noch deutlich höhere Ansprüche, wie z.B. Kurzzeitstabilität, Phasenrauschen - der Oszillator könnte ja eine halbe Sekunde lang 10.0000001 MHz machen und eine halbe Sekunde lang 9.9999999 MHz. Auf dem Oszilloskop sieht man das nicht, im Phasenrauschen sieht man es vielleicht, aber bei der Allan Deviation sieht man das ganz sicher. Daher muss man alle drei Messungen machen - Test, ob mit dem Oszilloskop die Schwingungen der beiden Prüflinge relativ zueinander still stehen, Phasenrausch-Test, und Allan Deviation Test. Dass GPS auf Cs-Uhren basiert, ist ja grade der Witz an der Sache, deshalb will man ja das machen. Das NIST sagt sogar, dass man GPSDOs nicht kalibrieren muss, da sie als Primärstandards taugen. https://ws680.nist.gov/publication/get_pdf.cfm?pub_id=842479 Jetzt ist G. schrieb: > Jede sekunde zu reagieren ist sinnlos. Wenn die Frequenzänderung, die der DAC bewirken kann, nur im ein- bis zweistelligen Mikrohertz-Bereich ist, ist die Unrihigkeit des Systems noch tolerierbar. Stratum 1 verlangt eine Frequenzgenauigkeit von 1e-11, also 100 Mikrohertz.
:
Bearbeitet durch User
Hallo allerseits, mittlerweile läuft mein GPSDO schon eine ganze Weile. In der Zwischenzeit habe ich mir noch einen Oscilloquartz STAR4 zugelegt, um die Frequenzen vergleichen zu können. Die 1PPS Signale vom STAR4 und von meinem GPSDO kann man mit einem TIC gut vermessen. So sieht man, dass mein GPSDO selbst nach ein paar Tagen immer noch eine leichte Abweichung zum STAR4 hat. Das dürfte halt daran liegen, dass meine Messmethode in der Tat nicht ideal ist. Ausserdem möchte ich gerne, wie bei den richtigen GPSDOs, den 1PPS Ausgang auf UTC synchronisiert haben. Also werde ich nun eine Version 2 bauen müssen, und hier möchte ich gern eine PLL benutzen. Ich dachte mir, dass ich den OCXO wie bisher herunter Teile auf 1PPS, und dann einen Phasen-Frequenz-Detektor verwende, so wie diesen hier: https://electronics.stackexchange.com/questions/301402/phase-frequency-detector-in-pll So könnte man den Versatz der beiden 1PPS messen. Danach dachte ich, dass ich mit den Signalen "UP" und "DN" einen Counter im Mikrocontroller ansteuere, und den Counterwert dann dem DAC zuführe der den OCXO dann ansteuert. So müsste es dann ja möglich sein, die beiden 1PPS signale zeitlich zu synchronisieren, sodass der OCXO auch auf die richtige Frequenz kommt. Also eigentlich schon eine Art PLL. Nur, wo würde man das Loopfilter hier einbauen? ich glaube, eigentlich müsste ich die Pulsdauer der Signale UP und DN messen, oder nicht? Angenommen, ich initialisiere einen 16 Bit Counter mit 32767. Und immer, wenn bei UP ein Impuls kommt, wird der Counter erhöht, und bei einem Impuls an DN wird der Counter 1 erniedrigt. Der Counterwert wird mittels DAC dem OCXO zugeführt. a) kann das funktionieren, b) theoretisch dauert das ja immer noch 32768 Sekunden = 9 Stunden, bis diese primitive PLL gelockt ist. Wie kann man das verbessern? Grüsse Tobias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.