Forum: Mikrocontroller und Digitale Elektronik 2^x-Quarz oder Oszillator


von Boris (Gast)


Lesenswert?

Hallo,

ich benötige für ein Mikrocontrollerprojekt einen Quarz oder 
vorzugsweise einen Oszillator mit einer Schwingung von 2^x Hz, deutlich 
größer als 2^15 Hz. Er sollte zudem möglichst genau sein, d.h. kleiner 
5ppm.

Bisher habe ich nur Quarze für z.B. 2^22Hz gefunden, leider bestenfalls 
mit 10ppm. Oszillatoren, ganz zu schweigen von TCXO, sind mir noch nicht 
über dem Weg gelaufen.

Zum Mikrocontroller kann ich im Moment noch nicht mehr sagen, als daß 
ich wohl einen besseren Atmel mit USB verwenden werde.

Meine Fragen:
Kann mir jemand von Euch verraten, wo ich geeignete Quarze/Oszis 
finde/kaufen kann?

Wie schwer/sicher ist es wirklich, eine Oszillatorschaltung für meine 
Zwecke zu entwickeln?

Vielen Dank im Vorraus!

von faustian (Gast)


Lesenswert?

aber 32.768MHz gibts. Teilste durch tausend und....

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Boris schrieb:
> Wie schwer/sicher ist es wirklich, eine Oszillatorschaltung für meine
> Zwecke zu entwickeln?

Was genau sind Deine Zwecke? Für USB genügen jedenfalls 12Mhz +-0.5%.

von Boris (Gast)


Lesenswert?

(Wichtige) Ergänzung:

Fällt vielleicht dem einen oder andern von Euch auch noch ein passendes 
Entwicklungsboard auf, bei dem sich vielleicht der Quarz gut tauschen 
lässt?

von Boris (Gast)


Lesenswert?

faustian schrieb:
> Teilste durch tausend

Du meinst wohl durch 1024.
Das ist aber vmtl. nicht genau das was ich haben wollte.

von Boris (Gast)


Lesenswert?

Travel Rec. schrieb:
> Was genau sind Deine Zwecke? Für USB genügen jedenfalls 12Mhz +-0.5%.

Den USB hatte ich nur wegen der Spannung für den Quarz genannt, falls 
relevant, also 5V oder vielleicht 3,3V.

Ich steuere mit dieser Frequenz zu Testzwecken Uhrenmotoren an.
Damit die Versuche auch ihre Ordnung haben, also eine 2^(x+15)-Frequenz.

- Aber ich freu mich schon, daß ihr so schnell antwortet!!
Ich bin gespannt!

von faustian (Gast)


Lesenswert?

Wieso 1024, wenn es wirklich 32.76800000MHz sind (gibt es), musst Du 
(evtl in der Software) durch 1000 teilen, ausser deine Quarze sind in 
Mebihertz ....

von Boris (Gast)


Lesenswert?

Hmm, vielleicht stehe ich auf dem Schlauch...

Also, daß es viele 32768MHz-Quarze gibt habe ich schon gesehen,
aber wie kann man mit einem Mikrocontroller durch 1000 teilen, ohne 
Fourietransformation?

Ich kenne nur Rechenoperationen wie shiften, usw.

von Boris (Gast)


Lesenswert?

Mal andersrum gefragt:

Was wäre wenn ich einen VCXO verwenden würde? Wie soll ich mir das 
Einstellen der gewünschten Frequenz praktisch vorstellen? Haben die 
kleine Schräubchen, wie alte Quarzuhren mit Trimmer oder benötigen die 
noch spezielle Kondensatoren ....

Ich meine die haben doch sehr weite Frequenbereiche. Wie schwer ist es 
da, eine Frequenz von 2^22Hz genau einzustellen?

Ich glaube auch die VCXO sind tendenziell ungenaurer als feste XO oder?

von Michael U. (amiga)


Lesenswert?

Hallo,

faustian schrieb:
> aber 32.768MHz gibts. Teilste durch tausend und....

Da ich das hier letztens schonmal las: wozu soll der gut sein???

2 hoch 25 wäre in der Gegend die nächste 2er Potenz und das sind
33554432 Hz oder 33.554MHz, um in Deiner Schreibweise zu bleiben.

Gruß aus Berlin
Michael

von Master S. (snowman)


Lesenswert?

mal eine ganz andere frage, die möglichweise besser zum ziel führt: wie 
gedenkst du deinen uhrenmotor anzusteuern? falls du einfach z.b. 10 
impulse pro sekunde benötigst, kannst du das mit irgendeinem uC und 
irgendeinem quarz machen.

von faustian (Gast)


Lesenswert?

"Also, daß es viele 32768MHz-Quarze gibt habe ich schon gesehen,
aber wie kann man mit einem Mikrocontroller durch 1000 teilen, ohne
Fourietransformation?"

Zaehlen und vergleichen? Hier soll ja ein Takt und keine Zahl geteilt 
werden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Boris schrieb:
> wie kann man mit einem Mikrocontroller durch 1000 teilen

Mit einem Timer.

von arno nyhm (Gast)


Lesenswert?

Für die von Dir gewünschten Frequenzen, musst Du dir wohl einen Quarz 
anfertigen lassen, ist aber nicht so teuer/schwierig wie es klingen mag:

http://andyquarz.de/pageID_4902356.html

Da es sich im Bereich von 1.5..30MHz (wir dort angegeben) um 
Grundtonquarze handelt, kannst Du sie ggf. auch direkt an 
controllerinterne Quarzoszillatorschaltungen anschließen.
Wie sehr Dir das überhaupt weiterhilft, ist ohne genaue Beschreibung 
Deines Problems kaum zu sagen.

Viel Erfolg
Sascha

von Boris (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Mit einem Timer

Upps, manchmal sieht man den Wald vor lauter Bäumen nicht!!

Stimmt! (gluglugug - am rot Anlaufen)

von Boris (Gast)


Lesenswert?

arno nyhm schrieb:
> Da es sich im Bereich von 1.5..30MHz (wir dort angegeben) um
> Grundtonquarze handelt, kannst Du sie ggf. auch direkt an
> controllerinterne Quarzoszillatorschaltungen anschließen.
> Wie sehr Dir das überhaupt weiterhilft, ist ohne genaue Beschreibung
> Deines Problems kaum zu sagen.

Ich denke das geht vermutlich schon.

Der erste Schritt wäre ja schon mal erreicht, eine geeignete Frequenz zu 
haben. Nur in Bezug auf die Genauigkeit müßte ich mir noch überlegen, ob 
mehr Mühe nötig ist.

Ich muß mal nachschauen, was die Datenblätter geeigneter Quarze sagen.

von Boris (Gast)


Lesenswert?

arno nyhm schrieb:
> Für die von Dir gewünschten Frequenzen, musst Du dir wohl einen Quarz
> anfertigen lassen

Gibt es denn keine Möglichkeit einen 2^22Hz- oder 32,769MHz-Quarz mit 
eigener Oszillatorschaltung noch etwas in meinen Genauigkeitsbereit zu 
ziehen?

Wie weit wäre das denn möglich? (z.B. von 10ppm -> 5ppm?)
Oder ist der Aufwand zu groß?


Vielen Dank auch schon einmal für Eure Beteiligung!

von Boris (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Mit einem Timer.

Die Frage klingt jetzt wirklich akademisch,
würde mich aber mal interessieren:

Wieviel Ungenauigkeit könnte der Timer zusätzlich in meinen Takt 
bringen?

von Till U. (tuhde)


Lesenswert?

Dein Problem ist nicht, einen Quarz(oszillator) hinreichend genau auf 
Deine Frequenz zu bekommen. Ihn dort zu halten, unter allen Spannungen, 
Temperaturen und sonstigen Einflüssen, ist die hohe Kunst.
Was Du brauchst, ist ein TCXO oder sogar ein OCXO

von Boris (Gast)


Lesenswert?

Master Snowman schrieb:
> falls du einfach z.b. 10
> impulse pro sekunde benötigst, kannst du das mit irgendeinem uC und
> irgendeinem quarz machen.

Leider ist das nicht so einfach.

von faustian (Gast)


Lesenswert?

Nur aus Neugier: Geht es um Echtzeit oder um plesiochrone 
Datenuebertragung?

von Boris (Gast)


Lesenswert?

Till Uhde schrieb:
> Was Du brauchst, ist ein TCXO oder sogar ein OCXO

Ein OCXO ist denke ich zu teuer. Die sollen ja auch viel Strom 
benötigen.
Gibt es dazu noch etwas zu sagen?

von Boris (Gast)


Lesenswert?

faustian schrieb:
> Nur aus Neugier: Geht es um Echtzeit oder um plesiochrone
> Datenuebertragung?

Stell mir bitte die Frage anders. Wo ist da der Unterschied?

von Boris (Gast)


Lesenswert?

faustian schrieb:
> Geht es um Echtzeit oder um plesiochrone
> Datenuebertragung?

Wenn Du mit Echtzeit meinst, daß ich ständig aktiv das Verhalten der 
Motoren beeinflusse (Regelung), dann zweiteres.

Anmerkung: Ich komme nicht aus der Nachrichtentechnik, ich befasse mich 
mit Motoren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Boris schrieb:
> Wieviel Ungenauigkeit könnte der Timer zusätzlich in meinen Takt
> bringen?

Ein vernünftig implementierter Timer bringt keine zusätzliche
Ungenauigkeit mit sich.  Falls dein Controller aber nur einen
relativ primitiven Timer hat, den man beim Erreichen eines
bestimmten Zählerstandes "zu Fuß" in der ISR wieder auf einen
anderen Wert setzen muss, dann kommt die Latenz der ISR bzw.
deren zeitliche Unbestimmtheit hinzu.

von Peter D. (peda)


Lesenswert?

Jörg Wunsch schrieb:
> Falls dein Controller aber nur einen
> relativ primitiven Timer hat, den man beim Erreichen eines
> bestimmten Zählerstandes "zu Fuß" in der ISR wieder auf einen
> anderen Wert setzen muss, dann kommt die Latenz der ISR bzw.
> deren zeitliche Unbestimmtheit hinzu.

Auch dann kann man zyklusgenau timen, z.B. bei den einfachen 8051.

Der Timer läuft nach dem Überlauf weiter, also einfach den 
Verkürzungswert addieren.
Man muß davon noch Zeit für die Addition abziehen und die ist immer 
konstant. Unter C muß man sie aus dem Listing ermitteln.


Peter

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter Dannegger schrieb:
> Der Timer läuft nach dem Überlauf weiter, also einfach den
> Verkürzungswert addieren.

Das geht aber nur, wenn die Zeit zwischen Überlauf und der Bearbeitung
der ISR konstant ist und nicht jittert (bspw. weil ein [höher priori-
sierter] Interrupt gerade bearbeiet wird).

Wenn ich es mir aussuchen kann, würde ich jedenfalls einen Timer
bevorzugen, der das in Hardware erledigt.  Ob nun so wie beim AVR,
dass der Zähler vorwärts zählt und beim Erreichen eines bestimmten
Standes automatisch auf 0 geht, oder wie beim ehrwürdigen Z80, bei
dem der Zähler mit einem einstellbaren Wert vorgeladen wird und
dann rückwärts bis 0 zählt, spielt dabei weniger eine Rolle.

von Bernhard M. (boregard)


Lesenswert?

Jörg Wunsch schrieb:
> Peter Dannegger schrieb:
>> Der Timer läuft nach dem Überlauf weiter, also einfach den
>> Verkürzungswert addieren.
>
> Das geht aber nur, wenn die Zeit zwischen Überlauf und der Bearbeitung
> der ISR konstant ist und nicht jittert (bspw. weil ein [höher priori-
> sierter] Interrupt gerade bearbeiet wird).
>

Nein, wenn man in der ISR (dann ist das "Jittern" ja schon passiert) den 
weitergelaufenen Timer ausliest (das ist der "Jitter", bzw. 
"Verkürzungswert") und den Timer dann neu startet unter Berücksichtigung 
dieses Wertes. Die Berechnung / neu starten ist konstant und kann 
einberechnet werden. Natürlich darf die ISR selbst innerhalb dieser 
Aktion nicht von einer höher priorisierten ISR unterbrochen werden.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bernhard M. schrieb:
> Natürlich darf die ISR selbst innerhalb dieser
> Aktion nicht von einer höher priorisierten ISR unterbrochen werden.

Außerdem hast du immer noch die Unsicherheit von 1 digit, da der
Zähler ja kurz nach dem Auslesen (während der Berechnung) noch um
1 weitergezählt worden sein könnte.  Oder du hältst den Timer vor
dem Auslesen an und startest ihn danach neu, aber das könnte auch
weiteren Jitter generieren.

Ja, machbar ist das schon, aber es wäre nicht mein Vorzug

von arno nyhm (Gast)


Lesenswert?

Boris, um was für Motoren handelt es sich denn überhaupt? Wie wirst Du 
diese ansteuern? Welche Rolle spielt der Mikrocontroller - was soll er 
erledigen?

Sehr genaue Oszillatoren sind immer noch eine gewisse 'Kunst' - schnell 
kommt man bei Quarzen nicht mehr um eine Temperaturstabilisierung herum, 
also einen Ofen (OCXO).
Die  20/10ppm die vom Andy angeboten werden sind schon nicht schlecht, 
evtl. kann er es auch noch genauer fertigen, da musst Du ihn wohl mal 
direkt fragen!
In einer einfachen Oszillatorschaltung, so z.B. auch bei den der 
Mikrocontroller, lässt sich die Schwingfrequenz mittels eines 
zusätzlichen (Trimm-)Kondensators etwas 'ziehen', den Temperaturdrift 
beeinflusst das aber weiter negativ.

Hast Du mal grob abgeschätzt/durchgerechnet wie genau dein System 
überhaupt sein muss - wie stark sich eine gewisse Abweichung bemerkbar 
machen wird? 'Möglichst genau' ist zwar immer eine nette Anforderung, 
doch steigt der Aufwand für die letzten Etappen enorm an, ob es sich 
wirklich lohnt sollte man dann mal konkret abschätzen.
Dein Problem schein ja mit Uhren zu tun zu haben - wenn Du wirklich 
Langzeitpräzision mit geringsten Abweichungen benötigst, solltest Du 
vielleicht in Richtung Rubidium- oder DCF77-Frequenznormal gehen, 
welches dann einen anderen Oszillator stabilisiert.

Ein größeres Experiment mit vielen synchronisierten Komponenten wird bei 
mir von einem mit Rubidium-Frequenznormal stabilisierten Timer gesteuert 
- dabei liefert das Frequenznormal 'ultragenaue' 5MHz welche als 
Ausgangsfrequenz für mehrere PLL-Stufen dienen, um die benötigten 
Frequenzen zu liefern - so kämst Du auch von einer gegebenen Frequenz 
auf deine gewünschte: PLL.

Der 'Efratom FRS' ist sehr gutmütig und einfach anzusteuern, alle Magie 
passiert im inneren! Gebraucht, bei Helmut-Singer, kostet so ein Modul 
weniger als so mancher OCXO - von daher ist es vielleicht eine 
Überlegung wert?!
http://www.helmut-singer.de/stock/-542008900.html

Grüße
Sascha

von Peter D. (peda)


Lesenswert?

Jörg Wunsch schrieb:
> Außerdem hast du immer noch die Unsicherheit von 1 digit, da der
> Zähler ja kurz nach dem Auslesen (während der Berechnung) noch um
> 1 weitergezählt worden sein könnte.

Man darf dann natürlich keinen Vorteiler verwenden (hat der 8051 nicht).
Damit ist man CPU-zyklusgenau.

>  Oder du hältst den Timer vor
> dem Auslesen an und startest ihn danach neu, aber das könnte auch
> weiteren Jitter generieren.

Sollte man beim 8051 machen, da die 16Bit nicht gleichzeitig gelesen 
werden und ein 8Bit Überlauf möglich ist.
Oder man garantiert, daß der Interrupt innerhalb 256 Zyklen nach 
Überlauf erfolgt (höchste Priorität zuweisen).

Beim Anhalten entsteht kein Jitter.


Peter

von Boris (Gast)


Lesenswert?

Hallo Sascha,

also für normale Menschen klingt ein Rubidiumzähler schon abgefahren.
Aber vielleicht bringe ich meinen Chef so auch wieder auf dem Boden. 
(Lach!)
Nun, bei Euren Überlegungen sollte ich die Genauigkeitsanforderungen 
wirklich noch einmal prüfen.

Aber die Lösung find ich allemal Klasse!
Ich prüf auf jeden Fall mal was der kostet, würde mich interessieren.
Vielleicht denk ich mal privat dran, fänd ich näckisch, damit fällt mir 
schon allerhand ein...  ;)


Peter, an was denkst Du, wenn Du von 8051 sprichst? Für mich ist das ein 
riesiges Feld.

---------------------------------------
Also ich fasse mal zusammen:

Taktproblem: 32,768MHz (mit Augenmerk Timer/Interruptprioritäten) oder 
2^22Hz (<10ppm noch nicht aufgefunden)

Genauigkeit: Rubidium, TCXO, Oszi bauen lassen (bis 10...20ppm)

Entwicklungsboard zum leichten Quarztausch scheint wohl zu entfallen, da 
dem Takt mehr Aufmerksamkeit gegeben werden muß. Also erst 
Quarz-/Oszillatorwahl dann Entwicklungsboard.

---------------------------------------
Na, vielen Dank für die vielen Antworten!
Ich glaube fast wir sind am Ende angekommen, oder fällt noch jemandem 
etwas zu Genauigkeit, Takt oder Beschaffung ein?

Über Links und Anregungen bin ich natürlich weiterhin dankbar!
Vielen Dank noch einmal!

von visitor (Gast)


Lesenswert?

Rubidium-Oszilatoren und weiteres taktvolles Equipment gibt es zum Glück 
nicht nur in Singers Vollpreis-Apotheke, sondern bspw. auch beim 
freundlichen Chinesen im Netz um die Ecke:

  http://stores.ebay.de/Flyingbests-Equipment

Vier Datum-Rubidum-Oszillatoren habe ich dort vor etwa einem halben Jahr 
erworben, Lieferzeit knapp drei Wochen, incl. einer Woche für die von 
DHL selbst ausgeführte Zollabfertigung, zur Entrichtung des 
19prozentigen Wegelagerer-Bakshish.

Recht beeindruckend ist es, zwei 10MHz-Rubidium-Oszillatoren an X und Y 
eines Scopes zu hängen, um nach ca. 90s zu sehen, wie die 
Lissajous-Schleife langsam "einfriert"...

;-)

MfG

von faustian (Gast)


Lesenswert?

Bei den Rubidiumteilen lese ich immer wieder dass die Dinger doch 
diverse Verschleissmodi und keine unbegrenzte Lebensdauer haben....

OCXO gibts oefter bei Hoefler - gerade wohl leider nicht ;( Auf den 
letzten DAT hatte er massenhaft 32.768MHz 3.3V Vectron OCXOs auf dem 
Tisch, vielleicht mal anfragen ob er noch ein paar hat (meinen nutze ich 
als Labornormal und gebe den hoechstens im Tausch gegen einen anderen 
OCXO her).

von Boris (Gast)


Lesenswert?

Ich denke ich nehme Rubidium in meine Liste der Möglichkeiten mit auf.

Werde mich informieren, wie es mit der Stromversorgung aussieht, wie das 
Signal abzugreifen ist, wie erschütterungsanfällig ...

Vielen Dank.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

visitor schrieb:
> Recht beeindruckend ist es, zwei 10MHz-Rubidium-Oszillatoren an X und Y
> eines Scopes zu hängen, um nach ca. 90s zu sehen, wie die
> Lissajous-Schleife langsam "einfriert"...

Selbst die Lissajous-Figur des Rb-Oszillators gegen den OCXO eines
alten sowjetischen Zählfreuenzmessers (Ч3-54) wird schon beeindruckend
langsam, wenn man den OCXO erstmal kalibriert hat.  Zwar liefert der
OCXO irgendwas, nur keinen Sinus, so dass die Figur sehr lustig
aussieht, aber der komplette Umlauf der Figur lag dann auch bei
einigen 10 s.

Ich kann mir allerdings nicht vorstellen, warum man Motoren mit der
Genauigkeit einer Atomuhr steuern können muss.  Immerhin, so ein
Rb-Oszillator geht im Verlauf von vielleicht eines Jahrzehnts um eine
Sekunde falsch.  Normale synchrone Funkkommunikationsprotokolle wie
IEEE 802.15.4 kommen mit einer Genauigkeit von ±40E-6 aus.

von Boris (Gast)


Lesenswert?

Noch eine Frage:

Die Temperaturstabilität halte ich für ein vernünftiges Argument, doch 
für meine Frage möchte ich sie zunächst einmal vernachlässigen:

Mal angenommen, ich die gewohnte Genauigkeit eines Uhrenquarzes 
(32768Hz, mit Oszilatorschaltung ca.5ppm) würde mir ausreichen.

Gibt es eine mögliche Schaltung mir der man die Frequenz (2^15 * 2^x) 
vervielfachen könnte (also 2^15 * 2^x), ohne an Genauigkeit einzubüßen?

- Wieder bin ich gespannt am Warten!

von Falk B. (falk)


Lesenswert?

@  Boris (Gast)

>Gibt es eine mögliche Schaltung mir der man die Frequenz (2^15 * 2^x)
>vervielfachen könnte (also 2^15 * 2^x), ohne an Genauigkeit einzubüßen?

Ja, nennt sich PLL.

MFG
Falk

von Boris (Gast)


Lesenswert?

Ok, und wieder zurück zu den Rubidium-Oszillatoren:

Was hat deren Frequenz mit meiner gewünschten (2^x+15Hz) zu tun?
Wie geschieht falls nötig die Wandelung?

Gruß
Boris

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Boris schrieb:
> Mal andersrum gefragt:
>
> Was wäre wenn ich einen VCXO verwenden würde? Wie soll ich mir das
> Einstellen der gewünschten Frequenz praktisch vorstellen? Haben die
> kleine Schräubchen, wie alte Quarzuhren mit Trimmer oder benötigen die
> noch spezielle Kondensatoren ....
>
> Ich meine die haben doch sehr weite Frequenbereiche. Wie schwer ist es
> da, eine Frequenz von 2^22Hz genau einzustellen?
>

Stehe ich auf dem Schlauch? 4,194xxxMHz gibt es doch standardmäßig als 
Quarz. Dazu noch ein 74HC4060. fertig. Trimmen ginge auch.

Ansonsten ist meine Antwort wie immer: Si570

von Boris (Gast)


Lesenswert?

Hallo,

es sieht so aus, als ob sich das Problem mit einem TCXO lösen lässt.
Ein freundlicher Hersteller ist sogar bereit mir einen zu schenken.
Besser wärem mehr, da bei SMD und ja noch viel falsch gehen kann...

Aber immerhin, es sieht so aus, als ob in diese Richtung endlich Licht 
ist.
Scheinbar sind die Hersteller nur etwas langsamer gewesen.

------------------------

Es hat sich für mich eine Folgefrage ergeben, doch ich dachte, daß ich 
die besser in einem getrennten Thread stelle:

Beitrag "Atmel mit separatem integriertem USB-Oszillator"

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Ehrlich gesagt, Boris, du bist vollkommen unverständlich.

von Boris (Gast)


Lesenswert?

Abdul K. schrieb:
> Ehrlich gesagt, Boris, du bist vollkommen unverständlich.

Oh, dann werde ich versuchen, mich zu verbessern!  ;)

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Das wäre nett.

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.