Inhaltsverzeichnis:
Video: GPSDO YT, disziplinierter Oszillator 10Mhz Referenzfrequenz. Kostengünstig. Genau.: 3 Schritte
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
*******************************************************************************
STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP
Dies ist ein veraltetes Projekt.
Überprüfen Sie stattdessen meine neue 2x16-LCD-Display-Version, die hier verfügbar ist:
www.instructables.com/id/GPSDO-YT-10-Mhz-L…
Ich habe die alte Version hier zur Dokumentation gelassen.
*******************************************************************************
Hallo Leute, Was ist ein GPSDO? GPSDO bedeutet: GPS-disziplinierter Oszillator. GPS für globales Positionsbestimmungssystem. Alle GPS-Satelliten sind mit einer synchronisierten Atomuhr ausgestattet. Das GPS-Modul empfängt diese Signale von mehreren Satelliten. Und durch Triangulation kennt er seinen Standort. Aber hier interessiert uns der Puls pro Sekunde, der auf dem Modul zu finden ist. Mit diesem präzisen Impuls (von der Atomuhr) können wir einen sehr sehr genauen Oszillator herstellen. Wozu ? Als Referenz, zum Kalibrieren von Frequenzzählern oder einfach nur zum Spaß, um einen in seinem Labor zu haben.
Sie sind viele schematische im Internet. Ich habe einige probiert. Einige sind gut, einer mit einem tiny2313 war 5 Hertz zu langsam. Aber meine ist die einfachste, nützlichste und bequemste. Und ich gebe Ihnen den.hex-Code. Sie sind kein VCO und kein Teiler. Schaltung mit VCO läuft gut. Es muss jedoch kontinuierlich ein Pulssignal von 10 kHz oder mehr haben. Wenn die Antenne zu schwach wird, Puls fehlt oder gar kein Puls, läuft der Oszillator (ocxo) von selbst und die VFC (Voltage Frequency Control) ist nicht mehr genau. Das VCO-Feedback benötigt eine Referenzfrequenz, um anzuhalten. Wenn nicht, variiert es von 1 bis 2 Hertz! Außerdem funktioniert das billigere GPS-Modul in dieser Konfiguration nicht. Wir müssen mindestens 10 kHz haben, um einen VCO zu machen. Ich habe es mit 1000 Hertz versucht. Die Lücke war zu groß. Die Häufigkeit variierte. Mit einem ublox neo-6m können Sie also kein großartiges vco-gpsdo machen, da die maximale Ausgangsfrequenz 1000 Hz beträgt. Sie müssen ein Neo-7m oder ein Obermaterial kaufen.
So funktioniert mein GPSDO YT. Der Controller fand die gute Anpassung für jeden OCXO mit vfc 0 bis 5v. Wenn wir das GPs-Signal verlieren, ändert sich die Frequenz überhaupt nicht. Wenn das Signal wieder erscheint, nimmt der Controller seinen letzten bekannten guten Wert und fährt wie zuvor fort. Am Oszilloskop, mit einem Referenzoszillator. Wir können nicht sagen, wann das Signal verloren geht oder wann es zurückgekommen ist. Das Signal ist das gleiche.
Nach der Kalibrierung können Sie das GPSdo ohne Antenne verwenden, wenn Sie möchten. Ein paar Reittiere später werden Sie eine sehr kleine Drift haben. Aber…. wie viel größer? Es ist Zeit für eine Erklärung.
Hier ist etwas Mathe… Einfache Mathe, folge mir damit, es ist einfach. Bisher hat der Algorithmus 6 Phasen. Jede Phase nimmt eine Probe von 1 bis 1000 Sekunden, findet die gute PWM-Einstellung und geht zu den meisten längeren Proben für mehr Genauigkeit.
Genauigkeit = (((Anzahl Sekunden x 10E6) + 1)/Anzahl Sekunden) - 10E6
Phase 1, 1 Sekunde Abtastung für 10.000.000 Zählungen für eine Genauigkeit von +- 1 Hz
Phase 2, 10 Sekunden Abtastung für 100.000.000 Zählungen für eine Genauigkeit von +-0,1 Hz
Phase 3, 60 Sekunden Abtastung für 600 000 000 Zählungen für eine Genauigkeit von +-0,01666 Hz
Phase 4, 200 Sekunden Abtastung für 2 000 000 000 Zählungen für eine Genauigkeit von +-0,005 Hz
Phase 5, 900 Sekunden Abtastung für 9 000 000 000 Zählungen für eine Genauigkeit von +-0,001111 Hz
Phase 6, 1000 Sekunden Abtastung für 10 Milliarden Zählungen für eine Genauigkeit von +-0,001 Hz
Schlimmsten Fall. Wenn wir Phase 6 erreichen. Diese Zahl kann sich alle 1000 Sekunden ein wenig ändern oder nicht. irgendwann wird es 10, 000, 000, 001 oder 9, 999, 999, 999 sein, also + oder - 0, 000, 000.001 Variation für 1000s. Jetzt müssen wir den Wert für 1 Sekunde kennen.
10Mhz = 1 Sekunde
Für 1 Sekunde = 10.000.000, 001 Zähler/1000s = 10.000.000.001 Hz (schlimmster Fall für 1 Sekunde)
10.000.000.001 - 10.000.000 = 0,001 Hz/s schneller oder langsamer
0,001Hz X 60 X 60 X24 X365 = 31536 Hz/Jahr
Denken Sie also daran, 10Mhz ist 1 Sekunde, 31536Hz X 1 / 10E6 = 0,0031536 Sekunde/Jahr
Eine weitere schnellere Berechnungsmethode. ein Fehler bei 10E9Mhz ist 1/10E9 = 1E-10
1E-10 x 60x60x24x365 = 0, 0031536 Sekunde/Jahr.
Ist das genau genug für Sie?
Sie müssen jedoch einen guten OXCO haben. Ich bevorzuge Double Oven 12v Sinus-Ausgang. Stabiler, leiser und genauer. Aber ich habe das gleiche Ergebnis mit einfachen 5V. Zum Beispiel hat ein stp 2187 eine Stabilitätskurzzeit (Allan-Abweichung) von 2x10-12 = 0,000, 000, 000, 002 Hz Stabilität. Gleichzeitig korrigiert Avr immer die PWM (Frequenz), wenn GPS-Impulse verfügbar sind. Der uC zählt immer… immer. Das bedeutet, dass auf dem Display weder Datum noch Uhrzeit angezeigt werden. Wenn uC 900s abtastet, ist dieser für 900 Sekunden beschäftigt. Es muss die ganze Uhr zählen. Das Problem ist, dass uC mit 10Mhz läuft. Jede Uhr muss gezählt werden. Es zählt sich selbst. Wenn nur eine Uhr fehlt, ist das Sample nicht gut und die PWM-Anpassung ist nicht richtig. Ich kann die Anzeige nicht jede Sekunde aktualisieren.
Wenn die Probenahme gestartet wird. Uc beginnt Timer0 zu zählen. Jeder 256-Takt erzeugt eine Unterbrechung. X-Register wird inkrementiert. wenn es voll ist, wird das Y-Register inkrementiert und X auf 0 zurückgesetzt und so weiter. Am Ende, beim letzten GPS-Impuls, wird die Zählung gestoppt. Und jetzt und nur jetzt kann ich die Anzeige aktualisieren und etwas Mathe für die PWM-Berechnung machen.
da ich das weiß, habe ich nur 25, 6 uns (256 uhr vor dem unterbrechen) um die zeit abzulesen und anzuzeigen oder sonstiges. Es ist unmöglich. Eine Unterbrechung kann gebufft werden, nicht 2. Ich könnte die Zeit nach 1000s aktualisieren… aber es wird nicht praktikabel sein, die Zeit mit einem Intervall von 15, 16 Minuten zu sehen. Ich habe eine Uhr, eine Uhr, ein Handy, um die Zeit zu wissen:) Ich mache eine 10-MHz-Referenz. Keine Uhr.
Ein weiteres Problem, das ich hatte, einige avr-Anweisungen haben 2 Zyklen. Einschließlich der rjmp-Anweisung. Dies bedeutet, dass, wenn der erste oder letzte GPS-Impuls gleichzeitig mit einem 2-Zyklen-Befehl auftrat, der uC einen Takt verpasst. Weil uC den Befehl beendet, bevor der Interrupt beginnt. Der Zähler startet oder stoppt also einen Zyklus später. Ich kann also keine Zeitwarteschleife machen… Aber tatsächlich habe ich keine andere Wahl. Ich musste irgendwo loopen!! I Also verwende ich rjmp und nop (dies tut nichts) Anweisung. Nop ist ein Ein-Zyklus-Befehl. Ich habe 400 nop-Anweisungen für einen rjmp auf atmega48 gestellt. 2000 auf atmega88- und atmega328p-Version. Daher sind die Chancen geringer, dass der erste oder letzte Impuls beim rjmp-Befehl kommt. Aber ja, es ist möglich und wenn dies passiert, wird dieser Fehler bei der nächsten Probenahme korrigiert.
Die Anzeige ist optional. Sie können nur mit uC, OCXO und Tiefpassfilter (Widerstandskondensator) schalten, einschalten und warten. Nach 1 Stunde haben Sie eine akzeptable Frequenz. Aber um Phase 6 zu erreichen, dauert es ein paar Stunden.
PWM hat 16 Bit. 65535 Schritt. 5v/65535 = 76, 295 uV
Die OCXO-Variation beträgt 2 Hz mal 1 V. 1v/76, 295uV = 13107 Schritt für 2 Hz. 2/13107 = 152,59uHz in Schritten von pwm
Die Phase 5 ändert pwm um 3, Phase 6 ist 2. Schritt… Warum 3 ? weil 3 die Frequenz um 0,000, 000, 000, 4 auf einer 15-Minuten-Skala ändert. und 4 ist meine magische Zahl in meinem Algorithmus. Zum Beispiel, wenn in Phase eins, ist die erste gefundene Frequenz 10.000, 003 MHz. Ich senke um 0, 000, 000,4 Schritte nach unten.
Ein zu großer Schritt kann von 10.000003 bis 10.000001 und nach 9, 999998 Hz gehen. Ich verfehle das Ziel.
Mit 0, 0000004. Es ist schneller als 0, 1 und ich bin mir sicherer, eine Zahl nicht zu umgehen. Und so weiter. Ich mache das gleiche mit 10 Sekunden, 60 Sekunden und 200s Phase und 900s. 1000s läuft im Modus und verwende einen PWM-Schritt von 2
Bitte beachten Sie, dass Phase 5 länger zu erreichen ist. Der Abstand zwischen 4 und 5 ist größer. Aber es hilft, schneller von 5 auf 6 zu gehen.
Wenn Phase 6 genau 10 Milliarden gezählt hat, werden die PWM-Werte im eeprom gespeichert. Jetzt ist es Zeit für den Laufmodus. Dieser zählt 1000 Sekunden Sample, aber nur mit 2 Step PWM. Im Betriebsmodus wird die tatsächliche Frequenz angezeigt und in Intervallen von 1000 Sekunden aktualisiert. Wenn das Signal im laufenden Modus verloren geht, geht es im Selbstlauf weiter. Keine Änderung von PWM in diesem Modus. Wenn das Signal zurückkommt, kehrt es zu Phase 5 zur Neusynchronisierung zurück.
Wenn der Stromkreis nach dem Speichern des Eeproms getrennt wird. Dieser beginnt in Phase 5 beim Einschalten mit dem eeprom-pwm-Wert.
Um den Eeprom-Wert zu löschen, drücken Sie einfach die Taste beim Start. Pwm 50% wird geladen und die Kalibrierung beginnt mit Phase 1.
Ich verbringe viele Stunden damit, verschiedene Dinge auszuprobieren, die Konfiguration der Schaltung. Ich habe viele Tests mit OP-Verstärker, Puffer und anderen Chips durchgeführt. Und am Ende… das beste Ergebnis, das ich bekommen habe, braucht es nicht. Nur eine gute stabile Stromversorgung und ein Filterkondensator. Also halte ich es einfach.
Schritt 1: Teile kaufen
Als erstes müssen die Teile gekauft werden. Denn oft dauert der Versand sehr, sehr lange.
GPS-Modul: Ich verwende ein ublox neo-6m. Ich habe dieses hier bei ebay gekauft. Machen Sie eine Suche, es kostet ungefähr 7 bis 10 US-Dollar.
Standardmäßig ist bei diesem Empfänger der 1-Impuls pro Sekunde aktiviert. Wir brauchen nichts zu tun.
Sie können jedes GPS-Modul mit einem 1-Hertz-Impulsausgang verwenden. Du hast ein. Verwende das!
OCXO: Ich habe 2 Oszillatoren ausprobiert. Ein Doppelofen stp2187 12V Sinuswellenausgang. Und ein ISOTEMP 131-100 5V, Rechteckwellenausgang. Beide stammen von radioparts16 bei ebay. Ich hatte einen sehr guten Service von ihnen und der Preis war billiger.
AVR: Code passt auf ein wenig atmega48. Aber ich schlage vor, einen atmega88 oder atmega328p zu kaufen. Es ist fast der gleiche Preis. Kaufen Sie diese bei Digikey oder ebay. Ich verwende die Dip-Version. Sie können eine oberflächenmontierte Version kaufen, aber achten Sie darauf, dass die Pins nicht mit dem Schaltplan identisch sind.
LCD-Display: Jedes 4x20 HD44780-kompatible Display funktioniert. Ratet mal, wo ich meine gekauft habe:) Ja bei ebay vor ein paar Jahren. Jetzt ist es teurer als zuvor. Aber verfügbar unter 20 US-Dollar.
Vielleicht werde ich in naher Zukunft einen Code für ein 2x16-Display erstellen. Diese Displays kosten nur 4$. Und zwischen dir und mir würde ein 2-zeiliges Display ausreichen.
Sie müssen über einen AVR ISP-Programmierer verfügen. Die Programmierung eines AVR ist nicht wie ein Arduino. Arduino wurde bereits für die Kommunikation über die serielle Schnittstelle programmiert. Ein brandneuer AVR muss mit ISP oder Parallel High Voltage Programmer programmiert werden. Wir verwenden hier isp.
Ein 74hc04 oder 74ac0, Voltregler 7812 und 7805, Widerstände, Kondensator…. digikey, ebay
Schritt 2: Hier ist Schema und Gpsdo_YT_v1_0.hex
Ich denke, dass der Schaltplan alles ist, was Sie brauchen, um dieses Projekt zu realisieren. Sie können eine kupferplattierte Platte mit Ätzverfahren oder nur eine perforierte Platte verwenden, wenn Sie möchten.
Sie können jede beliebige Box verwenden, aber ich empfehle eine Metallbox. Oder einfach auf einem Steckbrett zum Spaß wie meinem:)
Ich warte auf Antennenverlängerung und BNC-Anschluss, um mein Projekt in eine Box zu stecken.
Sie müssen das richtige Sicherungsbit auswählen. Stellen Sie sicher, dass der externe Oszillator ausgewählt ist. Wenn Sie Probleme mit dem externen Oszillator haben, versuchen Sie es mit External Crystal. Und der low.ckdiv8-Takt ist deaktiviert. Siehe Bild. Beachten Sie, dass Sie, wenn der externe Takt das Bit verschmilzt, einen externen Takt bereitstellen müssen, um den Code zu programmieren oder auszuführen. Mit anderen Worten, schließen Sie den Oszillator an den xtal1-Pin an.
Übrigens… Sie können den gleichen Code verwenden, um einen Frequenzzähler mit 1-Sekunden-Tor zu erstellen. Geben Sie einfach den zu messenden Takt in den xtal1-Pin ein und Sie haben einen +-1 Hz-Frequenzzähler.
Ich werde das Projekt aktualisieren, sobald ich neue Sachen habe.
In der Zwischenzeit haben Sie, wenn Sie das Projekt interessiert, genug Material, um es vor mir zu beginnen und sogar abzuschließen
Ich habe 2 Videos hochgeladen, Sie können Phase eins und das letzte sehen.
Für Fragen oder Anmerkungen stehe ich gerne zur Verfügung. Dankeschön.
26. Februar 2017…. Version 1.1 verfügbar.
-atmega48 wird nicht mehr unterstützt. Nicht genug Platz.
-Anzahl der gesperrten Satelliten hinzugefügt.
-Unterstützt 2x16 LCD. Wenn Sie ein 4x20 haben, funktioniert es auch. Aber 2 letzte Zeile zeigt nichts an.
Schritt 3: Logs in Eeprom
Hier ist der Dump von Eeprom nach ein paar Stunden Laufzeit. Ich werde erklären, wie man das liest. Wieder ist es einfach:)
An Adresse 00, 01 ist der PWM-Wert gespeichert. Sobald Phase 5 9 Milliarden zählt, wird der PWM-Wert jedes Mal aktualisiert, wenn der Zähler genau 10 Milliarden erreicht.
Sobald wir in Phase 5 sind. Alle Zählerstände werden nach dem PWM-Wert im eeprom gespeichert. Beginnen Sie bei Adresse 02, nach 03 usw.
Dieses Beispiel kam von meinem 5 Volt ocxo. Wir können den PWM-Wert von 0x9A73 = 39539 dezimal auf 65536 lesen. = 60, 33% oder 3,0165 Volt.
Adresse 00:01 ist also 0x9A73
Als nächstes können Sie 03 lesen. Für 9.000.000.003 wird Pwm um 3 gesenkt, da wir uns noch in Phase 5 befinden
00 für 10.000, 000.000 pwm bleibt unangetastet und wir gehen in den Laufmodus (Phase 6) über
02 für 10.000, 000.002 In diesem Fall wird der PWM-Wert von 2. gesenkt
01 für 10.000, 000.001 PWM-Wert wird von 2. gesenkt
01 für 10.000, 000.001 PWM-Wert wird von 2 wieder gesenkt
00 für 10.000, 000.000 pwm bleiben unberührt
00 für 10.000, 000.000 pwm bleiben unberührt
00 für 10.000, 000.000 pwm bleiben unberührt
Jetzt wissen Sie, wie man das eeprom liest. Alle 1000 Sekunden wird ein neuer Wert in das Eeprom geschrieben. Wenn das eeprom voll ist, startet es von Adresse 2 neu.
FF-Wert Mittelwert 9, 999, 999,999
Sie können mit diesem Dump die Genauigkeit verfolgen, ohne LCD-Display.
Sie können die eeprom-Datei mit einem ISP-Programmierer sichern.
Ich hoffe, dass ich Ihnen genügend Informationen gegeben habe. Wenn nicht, lass es mich wissen. Ratschläge, Fehler, alles.
Yannick
Empfohlen:
Die 'Sup - eine Maus für Menschen mit Tetraplegie - kostengünstig und Open Source - Gunook
Die 'Sup - eine Maus für Menschen mit Quadriplegie - Low Cost und Open Source: Im Frühjahr 2017 fragte mich die Familie meiner besten Freundin, ob ich nach Denver fliegen und ihnen bei einem Projekt helfen möchte. Sie haben einen Freund, Allen, der infolge eines Mountainbike-Unfalls an Tetraplegie leidet. Felix (mein Freund) und ich haben kurz nachgefors
Tensegrity oder Double 5R Parallelroboter, 5 Achsen (DOF) Kostengünstig, robust, Bewegungssteuerung - Gunook
Tensegrity oder Double 5R Parallel Robot, 5 Axis (DOF) Preiswert, robust, Bewegungssteuerung: Ich hoffe, Sie werden denken, dass dies die GROSSE Idee für Ihren Tag ist! Dies ist ein Eintrag im Instructables Robotics-Wettbewerb, der am 2. Dezember 2019 endet. Das Projekt hat es in die letzte Juryrunde geschafft, und ich hatte keine Zeit, die gewünschten Updates durchzuführen! Ich habe
DIY BODENFEUCHTIGKEITSSENSOR GÜNSTIG UND ABER GENAU! - Gunook
DIY BODENFEUCHTIGKEITSSENSOR GÜNSTIG UND ABER GENAU!: Ich bin Pflanzenliebhaber und Technikkopf. Vor kurzem habe ich beschlossen, einige Pflanzen auf meinem Balkon zu züchten. Ich beschloss, das Bewässerungssystem zu automatisieren, da ich möglicherweise vergesse, sie zu gießen. Ich wollte mit meinen schönen Blumenpflanzen kein Risiko eingehen. Also beschlossen, Erde zu holen
TRAGBARES LED-LICHT (einfach, kostengünstig und schön gestaltet) - Gunook
TRAGBARES LED-LICHT (einfach, kostengünstig und schön gestaltet): Dies ist ein sehr kostengünstiges und einfach zu realisierendes Projekt. Es kann leicht mit einem Preis von weniger als 100 (weniger als $ 2) hergestellt werden. Dies kann an vielen Orten verwendet werden, z. B. im Notfall, bei Stromausfall, wenn Sie im Freien sind. bla..Also.. Was bist du
Alexa Curtain Control System - 3D-druckbar und kostengünstig - Gunook
Alexa Curtain Control System - 3D-druckbar und kostengünstig: Hallo, ich versuche schon lange, so viel wie möglich von unserem Haus zu automatisieren. Als der Winter hier in Großbritannien ankommt, habe ich beschlossen, abends alle Vorhänge zu schließen und morgens wieder zu öffnen. Dies bedeutet, dass ich