Frage:
DIY Rubidium Uhr Konstruktion
ecfedele
2015-05-20 22:34:05 UTC
view on stackexchange narkive permalink

Ich habe kürzlich meinen Weg zu einem Datum x72-Rubidium-Standard gefunden und hatte den halben Sinn, ihn in eine Homebrew-Atomuhr zu verwandeln, da ich ihn nicht genau für ein satellitengestütztes Satellitengeschäft verwende.

Es scheint, dass es zahlreiche Beispiele für den Online-Aufbau von Atomuhren mit AVRs und PICs gibt, aber die meisten davon scheinen einen der von der Quelle abgeleiteten Eingänge (z. B. das 1pps-Signal) in einen Timer einzuspeisen, der zählt. Auf dem Interrupt gibt es eine Softwareaktion, die die Uhr antreibt.

Ich nehme an, die Hauptfrage lautet: Gibt es einen besseren und direkteren Weg, dies zu tun? Ich habe keine RTC-Module gefunden, die ein 10-MHz-Signal akzeptieren würden (da dies den Stromverbrauch erhöhen und das Konzept einer RTC zunichte machen würde), aber gibt es irgendeine Art von Taktgerät oder IC, die auf das Rubidium-Signal verweisen könnte ?

Das Software-Clock-Timer-System fühlt sich für mich eher wie ein Hack an. Wenn also jemand die Komponenten dieses Projekts für mich ein wenig besser aufschlüsseln könnte, wäre er sehr dankbar.

Wenn Sie einen 10-MHz-Ausgang haben, der für den Oszillator diszipliniert ist, können Sie einfach einen AVR abtakten und das Timer-Peripheriegerät verwenden, um Intervalle zu erstellen, die in der Software für Ihre Taktanzeige gezählt werden sollen.Achten Sie darauf, keine Berechnungen durchzuführen, bei denen sich Rundungsfehler ansammeln.
Teilt der 1pps-Ausgang nicht bereits das 10-MHz-Signal für Sie?
Nur Info: Rubidiniumuhren haben zwei (mindestens) Stabilitätsverschlechterungsmodi.Eine häufige Ursache ist die Beschichtung von Rubidium auf dem Lampenglas, und die übermäßig begeisterten können dies mit einer Heißluftpistole und genügend Geschick, Glück und Wagemut beheben.Gute kurze Diskussion [** hier **] (http://www.eevblog.com/forum/testgear/any-good/10/?wap2)
Je nach Ausgang wollte man ein GPS und ein Rubidium-Osc, das daran festhalten kann wird den 10 Zehnern Zeit geben.Es gibt GPS-Empfänger, die 10 MHz und 1 pp akzeptieren, um eine Genauigkeit von bis zu ns zu erreichen.
Fünf antworten:
Ignacio Vazquez-Abrams
2015-05-20 22:37:32 UTC
view on stackexchange narkive permalink

Wenn Sie eine MCU für die Verwendung eines externen Oszillators konfigurieren, können Sie das 10-MHz-Signal in die MCU einspeisen (möglicherweise benötigen Sie einen Pegelumsetzer, wenn keine TTL / 5V-CMOS-Signalpegel verwendet werden) und anschließend Timer-Vorskalierer verwenden es auf eine überschaubare Taktrate für die weitere Verwendung herunter.

Es kann nicht so einfach sein.Viele dieser Geräte geben eine Wellenform aus, die entweder sinusförmig oder zumindest sehr weit von einer Rechteckwelle entfernt ist.Und jedes Verfahren zum Umwandeln in ein Taktsignal muss ein extrem niedriges Phasenrauschen aufweisen, wenn die Nützlichkeit des ursprünglichen Referenzsignals erhalten bleiben soll.
markrages
2015-05-20 22:55:25 UTC
view on stackexchange narkive permalink

Wenn Sie ein 1-pps-Signal von einem 10-MHz-Eingang wünschen, können Sie zwei 4059-Zähler in Reihe konfigurieren, z. B. durch 5000 dividieren und dann durch 2000 dividieren. (Wenn Sie eine symmetrische Rechteckwelle möchten, dividieren Sie dann auf 2 Hz Setzen Sie es für die letzte Division durch 2 durch ein Flip-Flop.)

Natürlich kann auch ein Mikrocontroller die Division durchführen. Manchmal ist das Löten jedoch einfacher als das Programmieren.


Für die Genauigkeit einer Uhr müssen Sie angeben, wie Ihre Ausgabe lautet. Wenn Sie möchten, dass eine Anzeige von einem Menschen gelesen wird, ist es keine große Sache, nach dem Empfang des PPS-Umschalters einige ms zu benötigen, um die Anzeige zu aktualisieren. In ähnlicher Weise ist ein bisschen Jitter für den menschlichen Gebrauch in Ordnung (die naive Implementierung dauert etwas länger, wenn Werte übergehen.) Wenn Sie eine Ausgabe mit geringem Jitter oder ohne Latenz benötigen, sollten Sie Ihre Anforderungen klarer angeben.

"Löten ist einfacher als Programmieren" - ein großes Lob dafür.Der Datum x72-Standard enthält jedoch bereits 1pps-Ausgänge.Was mich mehr beunruhigt, ist aus Sicht der Codearchitektur - es ist einfach genug, einen Zähler auszuführen, aber ein Standard-HH: MM: SS-Taktschema erfordert Schleifen und Vergleiche, und ich mache mir Sorgen, dass diese Operationen die Genauigkeit beeinträchtigen würdender Verwendung eines Rubidium-Standards.
Ich nehme an, bei einem 1pps-Signal wäre genügend Zeit vorhanden, um iterative ISRs auszuführen. Können Sie jedoch helfen, allgemeine Codeperspektiven zu beleuchten?
David Hunter
2015-05-21 01:36:24 UTC
view on stackexchange narkive permalink

Wenn die Eingabe auf 1PPS beschränkt ist, besteht eine Methode, um die Zeitberechnung bei ISR ​​deterministisch zu halten (weder schnell noch langsam, aber konsistent) darin, die Zeit tatsächlich eine Sekunde in die Zukunft an anderer Stelle zu berechnen und dann die ISR zu verwenden In diesem Fall kann sogar ein relativ langsamer periodischer Code:

  1. eine vorherige Zeit beibehalten und sehen, wie der ISR die Zeit vorverlegt
  2. Verwenden Sie die Zeitänderung, um die "Zeit der nächsten Sekunde" zu berechnen, um sie für den ISR vorzubereiten.
  3. ol>

    Wenn der Zeitpunkt des Interrupts schneller als 1PPS ist, bedeutet dies einfach weniger Zeit zum Erkennen und berechnen Sie die 1 / x-Zeit in die Zukunft woanders.

Natürlich kann es immer noch zu Jitter kommen, wenn die Interrupt-Latenz variabel ist (möglicherweise weil ein Mehrradbefehl ausgeführt werden muss) oder der Interrupt jemals maskiert wird
Adam Haun
2015-05-21 01:27:06 UTC
view on stackexchange narkive permalink

Wenn es sich um eine 10-MHz-Rechteckwelle handelt, reicht nahezu jedes digitale System aus. Ignacios Vorschlag, einen Mikrocontroller direkt zu takten, ist gut. Sie können den 10-MHz-Takt auch auf 1 kHz herunterteilen und an den externen Interrupt-Pin einer MCU anschließen. Ein Interrupt pro Millisekunde sollte ohne erkennbare Verzögerung leicht zu handhaben sein. (Dies gilt auch für einen Interrupt pro Sekunde.)

Wenn Sie MCUs lieber vermeiden möchten, können Sie Dekadenzähler-ICs und Logikgatter verwenden, um BCD-Werte für Sekunden, Zehnsekunden, Minuten, zu erzeugen. Dutzende Minuten usw. Diese Webseite zeigt eine Beispielschaltung. Auch dies können Sie mit einem heruntergeteilten 1-kHz-Takt (wenn Sie Millisekunden anzeigen möchten) oder dem 1-PPS-Signal tun. Die BCD-Werte können dann in Sieben-Segment-Decoder eingespeist werden, die Sieben-Segment-LED-Anzeigen steuern.

Wenn Sie einen analogen Takt steuern möchten, können Sie mit einer ähnlichen Methode Impulse für einen Schrittmotor erzeugen.

Unabhängig davon, welche Methode Sie verwenden, sollte es keine wahrnehmbare Ungenauigkeit oder Abweichung geben, die über das hinausgeht, was der Rubidium-Oszillator bietet.

Guill
2015-05-22 12:12:11 UTC
view on stackexchange narkive permalink

Ich habe eine RTC für einen PC entworfen und gebaut bevor RTCs in die PCs aufgenommen wurden (um 1980). Ich habe einen 10-MHz-Quarzoszillator verwendet und ihn auf 1PPS heruntergeteilt. Dann zählte ich genau wie Adam die Impulse hoch und verwendete 7-Segment-Anzeigen, um die Stunden, Minuten und Sekunden anzuzeigen. Der Grund, warum ich die 10-MHz-Quelle verwendet habe, war die sehr hohe Genauigkeit. Es gibt keinen Grund, warum eine "genauere" Quelle nicht verwendet werden könnte (Ihr Rubidium-Oszillator). Nichts "Phantasievolles" ist erforderlich. Teiler, Zähler und Anzeigen sind alles, was Sie brauchen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...