Forum: Mikrocontroller und Digitale Elektronik Clock Genauigkeit


von Mat. K. (matthias_kornfield)


Lesenswert?

Hi

Eine Frage bezüglich Clock Genauigkeiten:

Mein External Crystal Oscillator mit 16 MHz hat eine Genauigkeit von 
+/-10 PPM.
Der Oszillator ist an ein STM32 angeschlossen. Ich generiere daraus ein 
153.6 MHz main clock. Damit treibe ich einen timer PWM mit 2.048 MHz.
Das ist der Input Clock von meinem AD Wandler. Der AD Wandler erzeugt 
dann damit 250 Samples per Second.

1. Haben die 250 Samples per second immer noch +/- 10 ppm?

2. Stimmt diese Rechnung: worst case habe ich alle 100k Samples ein 
Sample zu viel oder zu wenig?

3Bleibt eigentlich die Frequenz bei gleich bleibender Temperatur und 
abgesehen von Aging dann gleich über Zeit? Also kann ich davon ausgehen 
dass meine Aufnahme von 8 Stunden konstant die selber sampling frequency 
hat bei gleich bleibender Temperatur?

4. Wie war das eigentlich früher bei den alten Digital-Armbanduhren? mit 
einem  +/-10 PPM Quartz wurden sie dann ja auch alle 100k Sekunden eine 
se Versatz haben, oder?

Danke

: Bearbeitet durch User
von Helmut -. (dc3yc)


Lesenswert?

1. Es heißt "Quarz" und nicht "Quartz".

2. ppm bleibt ppm, egal bei welcher Frequenz.

3. Natürlich ändert sich die Frequenz über die Temperatur und über die 
Alterung.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Was samplest du denn, dass du dir da Gedanken ueber die Anzahl der 
Samples machen willst? Ein DCF77-Signal?

Gruss
WK

von Peter D. (peda)


Lesenswert?

Die 153.6 MHz werden ja über eine PLL erzeugt, d.h. da ist eh ein Jitter 
drauf.

Warum müssen denn die 100k Samples so super genau sein?

Der Einfluß der Temperatur läßt sich mit einer Heizung verringern (OXCO) 
oder mit Kompensation (TXCO).
Zur Kompensation wird die Temperatur gemessen und über eine Tabelle 
entsprechend Kondensatoren am Quarz zugeschaltet.

von Michael K. (k-mte)


Lesenswert?

Hallo Matthias,

die Frequenz von rund 153.6 MHz wird aus der Frequenz von 16 MHz durch 
eine PLL-Schaltung erzeugt. Diese beinhaltet eine Phasenregelung, die 
bewirkt, dass die Frequenz von rund 153.6 MHz stets um einen Mittelwert 
pendelt. Über einen langen Zeitraum betrachtet ist dieser Mittelwert 
genauso stabil wie die externe Frequenzquelle. Beim Momentanwert der 
Frequenz von rund 153.6 MHz kann jedoch aufgrund des Pendelns von 
Stabilität nicht gesprochen werden.

von Monk (roehrmond)


Lesenswert?

Mat. K. schrieb:
> 4. Wie war das eigentlich früher bei den alten Digital-Armbanduhren?

Sie waren und sind immer noch nicht 100% genau.

von Jens G. (jensig)


Lesenswert?

Mat. K. schrieb:
> 1. Haben die 250 Samples per second immer noch +/- 10 ppm?

ppm ist eine Verhältniszahl, genau so wie bei %. Also werden die 
Zusammenhänge wohl dieselben sein, und die Samples werden genau so um 
die 0,001% abweichen können.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mat. K. schrieb:
> Wie war das eigentlich früher bei den alten Digital-Armbanduhren? mit
> einem  +/-10 PPM Quartz wurden sie dann ja auch alle 100k Sekunden eine
> se Versatz haben, oder?
Das wäre etwa 1 Sekunde pro Tag. Könnte hinkommen.

Aber weil das die Worst-Case Angabe über den gesamten Tmeperaturbereich 
ist, waren die Uhren tatsächlich besser, weil die Temperatur am 
Handgelenk niemals lange -40°C oder +70°C hatte, sondern meist im 
Bereich um 20°C lag.

Mat. K. schrieb:
> Eine Frage bezüglich Clock Genauigkeiten
Eine Gegenfrage: warum fragst du? Welches Problem hast du? Welche 
Aufgabe möchtest du mit diesen Anfragen lösen?

von Mat. K. (matthias_kornfield)


Lesenswert?

Hileider musste ich sehr viel Schreiben um meine Anwendung zu erklären. 
Die Frage ist ja erstmal allgemein. Und ich glaube ihr habt sie 
eingehend alle beantwortet. Vielen Dank.
Passt.

von Rainer W. (rawi)


Lesenswert?

Mat. K. schrieb:
> Hileider musste ich sehr viel Schreiben um meine Anwendung zu erklären.

Versuche einfach eine kurze Zusammenfassung in drei Sätzen

Heutzutage wäre zur Erhöhung der Genauigkeit eines Quarzoszillator noch 
GPSDO zu nennen. Ob das nötig ist, bzw. dir viele andere Probleme vom 
Hals schafft, hängt von deiner Anwendung ab.

von Vanye R. (vanye_rijan)


Lesenswert?

> Handgelenk niemals lange -40°C oder +70°C hatte, sondern meist im
> Bereich um 20°C lag.

Mal abgesehen davon das die Annahme sicher glaubwuerdig ist, an
meinem Arm hat es grade 25.5Grad. Sagt meine Armbanduhr.
Der Hersteller koennte also sogar diesen Temperaturwert
nehmen und das rechnerisch kompensieren.

Vanye

von Lu (oszi45)


Lesenswert?

Die Zeiten mögen ausreichend genau sein, wenn aus dem wohltemperierten 
Quarz hergeleitet werden. Ob sie noch genau sind, wenn sie durch einen 
Mikroprozessor behandelt werden, habe ich größere Zweifel, da 
Befehlsausführungszeiten verschieden sein können.

von Jens G. (jensig)


Lesenswert?

Lu schrieb:
> Die Zeiten mögen ausreichend genau sein, wenn aus dem
> wohltemperierten
> Quarz hergeleitet werden. Ob sie noch genau sind, wenn sie durch einen
> Mikroprozessor behandelt werden, habe ich größere Zweifel, da
> Befehlsausführungszeiten verschieden sein können.

Dann ist das Programm da drauf nicht viel wert, wenn das davon abhängig 
sein sollte.

von Jens M. (schuchkleisser)


Lesenswert?

Lu schrieb:
> Ob sie noch genau sind, wenn sie durch einen
> Mikroprozessor behandelt werden, habe ich größere Zweifel, da
> Befehlsausführungszeiten verschieden sein können.

Seit wann? Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt 
genau an wie lange ein Befehl braucht. Und das ändert sich auch nie.

Vanye R. schrieb:
> Der Hersteller koennte also sogar diesen Temperaturwert
> nehmen und das rechnerisch kompensieren.

Ich würde vermuten, das die Kurve Temp/Abweichung an dieser Stelle so 
flach ist (obwohl sehr elliptisch), das selbst 20-30° keine 
nennenswerten Unterschiede mehr ausmachen, plus: wie genau ist die 
Temperaturmessung? Am Ende ist die Abweichung durch 1 Woche Fieber 
kleiner als die die durch einen "+-0,5°C"-Sensor all year long entsteht.

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Jens G. schrieb:
> Dann ist das Programm da drauf nicht viel wert, wenn das davon abhängig
> sein sollte.

Der ADC wird vermutlich permanent seine Daten wegschaufeln.
Die MCU muss es nur abholen und vermutlich an eine fremdgetaktete 
Weiterverarbeitung schicken, die exakt diese Samples erwartet.
Hatte ich mal bei einer speziellen Analog zu ISDN Wandlung bei dem ich 
einen propritären Bus emulieren musste.

Mit zwei separaten Oszillatoren ist das aber nicht ohne weiteres 
erreichbar.
Wenn man an den Clock der anderen Stufe kommt, daraus mit PLL den MCU 
Takt erzeugen.
Jittert, ist aber ansonsten synchron.

Umgleiche Samples hingegen führen zu Sprüngen im Signal und das hört 
man.

von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Jens M. schrieb:
> Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt
> genau an wie lange ein Befehl braucht.

Schon beim STM8 kann man das nicht mehr mit Bestimmtheit sagen.
Hängt von der Pipeline ab.
Der ADC kann aber autarkt laufen und alle X Zyklen einen Wert liefern.
Die MCU braucht nicht vorhersagbare Ausführungszeiten. Sie muss nur die 
Puffer rechtzeitig abholen bzw. füllen.

von Rainer W. (rawi)


Lesenswert?

Jens M. schrieb:
> Seit wann? Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt
> genau an wie lange ein Befehl braucht. Und das ändert sich auch nie.

Viele Mikrocontroller kennen so etwas wie Interrupts. Die grätschen in 
den Zeitablauf des Programms rein. Da nützt es überhaupt nichts, dass 
die Befehlsausführungszeit bekannt sind, wenn durch zufällige Interrupts 
im Programmablauf ganze Blöcke von Befehlen dazwischen geschoben werden.
Feste Zeiten überlässt man besser einem unabhängig laufenden 
Timer/Zähler.

von Axel S. (a-za-z0-9)


Lesenswert?

Michael schrieb:
> Jens M. schrieb:
>> Jeder Mikroprozessor/-controllerhersteller gibt im Datenblatt
>> genau an wie lange ein Befehl braucht.
>
> Schon beim STM8 kann man das nicht mehr mit Bestimmtheit sagen.
> Hängt von der Pipeline ab.

Das ist im gegebenen Kontext schnurzegal.

Auf dem Weg vom 16MHz Quarzoszillator über die PLL auf 153 Komma knips 
MHz über den Timer für die 2.048 MHz PWM bis hin zum ADC ... nirgendwo 
ist das Timing von der Ausführungszeit einer CPU Instruktion abhängig. 
Oder vom Zustand einer Pipeline.

von Pandur S. (jetztnicht)


Lesenswert?

Egal wie lange die Ausfuehrungszeiten sind, die 10ppm kann man trotzdem 
einhalten. Die Frage ist eher was wofuer die 10ppm wichtig waeren. Eine 
Sekunde pro Tag ist doch schon gut.

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