DDS-Generator mit ARDUINO-Board und BASCOM-Software
8. Februar 2013

Here is automatic translation made by Google:
http://translate.google.de/translate?sl=de&tl=en&js=n&prev=_t&hl=de&ie=UTF-8&eotf=1&u=http%3A%2F%2Fkh-gps.de%2Fdds.htm&act=url

Die schon seit vielen Jahren erhältlichen DDS-Schaltkreise eignen sich hervorragend zur Erzeugung stabiler Sinus- oder Rechtecksignale in weiten Frequenzbereichen. So ist z.B. der weit verbreitete Typ "AD9850" im Bereich von nahezu Null bis etwa 40 MHz nutzbar. Die Steuerung erfolgt dabei üblicherweise mithilfe von Microcontrollern über einen SPI-Datenbus.
Der Einsatz von DDS-Chips ist besonders einfach umsetzbar, wenn sie gemeinsam mit einem passenden Taktgenerator auf einer kleinen Platine untergebracht sind. Via z.B. EBAY sind entsprechende, aus chinesischer Produktion stammende Boards [Abb.1] schon für wenige Euro erhältlich ( Suchwort: "AD9850" ) .


Abb.1   China-DDS-Board mit AD9850

Nähere Angaben zu diesen Boards findet man z.B. in [2],[3],[4]. Sie werden mit einer Versorgungsspannung von 5V betrieben. Wie auch aus dem Schaltbild Abb.2 ersichtlich, erfolgt die Ausgabe der erzeugten Sinussignale über ein Tiefpassfilter.


Abb.2  Schaltbild des DDS-Boards

Um erste Erfahrungen mit dieser Art DDS-Generatoren sammeln zu können, ging es zuerst einmal nur darum, bestimmte Festfrequenzen zu erzeugen um damit ggf. Quarzoszillatoren ersetzen zu können. Aus Gründen der Einfachheit sollte fertig verfügbare ARDUINO-Hardware ( Typ "UNO" oder kompatible ähnliche Versionen ) benutzt werden, um damit die benötigten Steuerungsvorgänge auszulösen. Wie auch schon an anderer Stelle beschrieben [1], benutze ich die genannte Hardwareplattform gern auch in Verbindung mit Bascom-AVR-Software. So entstand das in den Abbildungen 3 ud 4 dargestellte erste Projekt. Durch Änderung der Frequenzeingaben im Quellcode konnten auf diese Weise unterschiedlichste Festfrequenzen im Bereich bis etwa 40 MHz versuchsweise generiert werden.


Abb.3  Frequenzgenerator mit ARDUINO-Board und AD9850-DDS
Minimalkonfiguration zur Erzeugung von Festfrequenzen ( F ca. 0-40MHz )



Abb.4  Das Gleiche noch einmal in einer etwas anderen Darstellung

Der nächste Schritt bestand nun im Aufbau eines universellen DDS-Frequenzgenerators mit Up/Down-Tasten und einstellbaren Schrittweiten, wobei diese zwischen etwa 10Hz und 1 MHz liegen sollten. Zudem sollte noch die Möglichkeit zur Frequenz-Feinabstimmung mithilfe eines Drehgebers hinzukommen. Die Abbildungen 5 und 6 zeigen das entsprechende Projekt. Zur Anwendung kam wiederum das schon weiter oben genannte ARDUINO-UNO-Board , wobei ein ebenfalls fertig erhältliches Aufsteck-LED-Shield [siehe auch 1] benutzt wurde, um damit eine Frequenzanzeige realisieren und die Steuerfunktionen auslösen zu können. Bei Bedarf war lediglich noch der erwähnte Drehgeber zusätzlich anzuschliessen.


Abb.5  Frequenzgenerator mit ARDUINO-Board ( hier nicht gezeigt ),
aufsteckbarem LCD-Keypad-Shield und AD9850-DDS;
Steuerung über Tasten und Drehencoder ( optional; hier nicht gezeigt )


Abb.6  Das Gleiche noch einmal in einer etwas anderen, etwas erweiterten Darstellung

Während die Tasten "S3" und "S4" der Anwahl verschiedener Abstimmschritte ( ca. 10Hz bis 1 MHz ) dienen, erfolgte die eigentliche Frequenzeinstellung mithilfe der Tasten ""S4" und "S1".  Die mit "Select Mode" bezeichnete Taste "S5" erlaubt neben dem VFO-Betrieb auch noch den Aufruf von 9 zusätzlichen, derzeit noch im Programmcode fest abgelegten Festfrequenzen. Eine erweiterte Version, die es dem Anwender auch ohne BASCOM-Kompilierung ermöglicht, hier Frequenzen eigener Wahl im EEPROM-Bereich des Prozessors abzulegen, ist in Vorbereitung.

NACHBAU

Hier herunterladbar sind
1. eine Basisversion der BASCOM-Software. Sie errlaubt das Generieren einer beliebigen Festfrequenz bis etwa 40 MHz und kann mit oder ohne zusätzliches Aufsteck-LCD-Shield betrieben werden und
2. einer erweiterten Version für den Betrieb mit LCD-Keyboard-Shield und Steuermöglichkeiten gem. Abb.6. Nachdem ich allerdings bei Berechnung größerer Rasterschritte an die Grenzen der unter BASCOM erreichbaren mathematischen Genauigkeit stiess, wurde die Firmware in der aktuellen Version 1.5 dahingehend geändert, dass unabhängig vom gewählten Raster, mit einem ggf. angeschlossenen Drehgeber immer nur eine Frequenzfeinabstimmung in 10Hz-Schritten möglich ist.
Die in den Quellcodes enthaltenen BAS-Files können aber entsprechend eigener Wünsche bzw. Frequenzen angepasst und mithilfe von BASCOM-AVR kompiliert werden. Derzeit kann ich allerdings nicht sagen, ob das auch noch mit der kostenlos erhältlichen ( und in ihrem Leistungsumfang begrenzten ) BASCOM-AVR-Testversion möglich ist. Als Ergebnis der Kompilation enthält man in jedem Fall das via ICSP-Verbindung in den ARDUINO-Prozessor zu schreibende  jeweilige HEX-File.

LINKLISTE

[1]  http://www.kh-gps.de/bascom_arduino.htm
[2]  http://www.pongrance.com/DDS-9850.html
[3]  http://www.pongrance.com/DDS-9850-exp-manual.pdf
[4]  http://www.g4jnt.com/AD9850-Controller.zip
[5]  http://ja9ttt.blogspot.de/2012/01/ad985051-dds-control-part2.html
[6]  http://www.multiforum.se/afu/viewtopic.php?t=1465&mforum=afu
[7]  http://www.mikrocontroller.net/topic/285846

E-Mail contact via: