PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frequenzerzeung



hacker
24.10.2008, 14:26
Hallo zusammen,

ich suche ein Möglichkeit mittels einem AVR Rechteckimpulse von 327,68Hz - 655360Hz erzeugen zu können. Diese sollen im Abstand von 327,68Hz über den PC über USB einstellbar sein können. Ich will also ein Vielfaches von 327,68Hz ausgeben können.

Die Frequenz muss nich genau 327,68Hz betragen (wär aber ideal). Jedoch sollte sich schon +- ein paar Hertz in der Größenordnung liegen.

Irgendwie steh ich grad total auf dem Schlauch. Ich probier schon 2 Tage damit rum und irgendwie dreh ich mich da im Kreis.


Über Anregungen zur Lösung würde ich mich freuen.

Vielen Dank.


Viele Grüße,
hacker

Besserwessi
24.10.2008, 15:25
Die einfach Methode um eine Rechtecksignal zu erzeugen ist über einen Timer den takt zu teilen. Allerdings kriegt man da keine Frequenzen in gleichen Abständen, sondern halt Qurzfreuenz / N , mit einer ganzen Zahl N, oft auch noch mit Einschränkungen wie N >10 oder N gerade.

Frequenzen mit gleichmäßiger Teilung kriegt man wenn man die DDS methode wählt. Das geht ganz gut für Sinussignale bei eher niedrigen Frequenzen (z.B. < 50 kHz). Bei hohen Frequenz und Rechtecksignal hat man aber relativ viel Frequenzschwankungen (Jitter) auch wenn im längeren Mittel die Frequenz stimmt.

Eine 3te Möglichkeit ist eine Nicht gnazzahlinger Teiler (z.B. 8 Bits hinter dem Komma) das erlaubt eine noch feinere Teilung als mit dem einfachen Teiler, aber man hat ähnlich wie bein DDS etwas Phasenrauschen/Jitter.

Wenn man wirklich gleiche Frequenzschritte ohne viel Störungen haben will, dann sollte man einen externen PLL nehmen, den man dann z.B. von Controller aus programmieren kann.

wkrug
24.10.2008, 20:23
Die Sache mit der PLL find ich schon sehr in Ordnung.
Mein Vorschlag dazu wäre einen per i²C programmierbaren Frequenzteiler für die einzelnen Abstufungen zu verwenden.
Das Jitterproblem kann zwar durch Regelzeitveränderungen verbessert werden, ganz weg wird man es aber bei einer PLL nie kriegen.

Eine weitere Alternative wäre ein externer DDS Baustein.
Guck mal bei Analog Devices unter:
http://www.analog.com/en/rfif-components/direct-digital-synthesis-dds/products/index.html

Einige der Bausteine da haben auch einen Rechteckausgang für die Synchronisation von mehreren Bausteinen.
Aber auch aus einem Sinus ein Rechtecksignal zu machen sollte auch keine unlösbare Aufgabe sein.

hacker
25.10.2008, 14:25
Was ist denn diese DDS Methode? Lässt diese sich auch auf einem µC realisieren? Ich will großen Schaltungstechnischen AUfwand vermeiden.

Besserwessi
25.10.2008, 14:37
Die DDS Methode ist eine Methode um Signale Digital zu erzeugen. Neben Speziellen ICs kann das auch mit µC machen. Man addiert in einer möglochst kurzen Schleife fortlaufend die Phase des ausgangssignals auf. Für die Erzeugung einer Sinusschwingung wird dann aus einer Tabelle eine Wert per DA Wandler ausgegeben. Da die innere Schleife beim AVR wenigstens etwa 8-15 zyklen braucht, hat man relativ viel Jitter. Die Einzelnen Flnaken des Rechtecksinglans können halt bis zu etwa 10 Zyklen zu spät kommen. Für 600 kHz ist das schon ziehmlich schlecht.

wkrug
25.10.2008, 16:39
Ich will großen Schaltungstechnischen AUfwand vermeiden.
Die Verbindung zwischen dem µC und einem DDS Baustein per SPI sind nur ein paar verbindungen.
Etwas aufwändiger sind die Filter nach der DDS.
Aber da Du nur Rechtecksignale mit " niedriger" Frequenz brauchst können diese auch sehr einfach ausfallen.

Für eine PLL müsstest Du meiner Meinung nach mehr Aufwand treiben.

Für so einen DDS Chip musst Du ein Frequenztuningword errechnen und das in den DDS Baustein übertragen und der Baustein generiert die Frequenz.

Natürlich muss der Chip auch initialisiert werden, wie das steht im Datenblatt.
Ausserdem benötigen die meisten DDS Chips einen externen Quarzgenerator.

Das einzige, was mich bei den Analog Devices Chips stört ist der Preis und die teilweise schlechte Beschaffbarkeit.

Besserwessi
25.10.2008, 17:46
Nicht zu vergessen die winzigen Gehäuse der billigen DDS Chips. Der PLL wäre die Sauberere Lösung, ist aber wohl mehr Aufwand, wohl wenigstens 2 ICs (74HC4046+74HC4059). Dafür aber wohl billiger.