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!
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%.
(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?
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!
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 ....
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.
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?
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
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.
"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.
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
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.
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!
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?
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
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.
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?
faustian schrieb:> Nur aus Neugier: Geht es um Echtzeit oder um plesiochrone> Datenuebertragung?
Stell mir bitte die Frage anders. Wo ist da der Unterschied?
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.
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.
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
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.
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.
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
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
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
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!
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
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).
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.
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.
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!
@ 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
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
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
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"