Simple-DDS mit ARDUINO-Software
12. Februar 2014

   Automatic translation by GOOGLE:
http://translate.google.de/translate?sl=de&tl=en&js=n&prev=_t&hl=de&ie=UTF-8&u=http%3A%2F%2Fwww.kh-gps.de%2Fdds_ardu.htm

Ziel war der Aufbau eines einfachen universellen Frequenzgenerators für Frequenzen bis etwa 25 MHz.  Dabei sollten auch wieder die schon einmal an anderer Stelle [1] benutzten sehr preiswerten DDS-Bausteine aus chinesischer Produktion zum Einsatz kommen. Mit dem ARDUINO "NANO" wurde der kleine Bruder des weitverbreiteten UNO-Bausteins als Steuerprozessor vorgesehen. Nachdem beide Bausteintypen den gleichen Prozessor- ( ATMEGA328p ) und auch USB-Chip verwenden, können identische Softwareversionen zur Anwendung kommen.


Abb.1   DDS-Basisversion für 2x6-Startfrequenzen und Feinabstimmung

Um die Sache einfach zu halten, wollte ich mich ursprünglich auf 6 Startfrequenzen beschränken. Inzwischen besteht darüberhinaus aber auch noch die Möglichkeit zum Aufruf einer weiteren Frequenzgruppe mit noch einmal 6 Kanälen. In jedem Fall wurde aber auf eine exakte Frequenzanzeige verzichtet.
Die Zusammenschaltung von DDS-Baustein und Prozessorboard geht aus Abb.1 hervor.

Die möglichen 6 Startfrequenzen lassen sich über die vom Schleifer eines Potentiometers abgenommene Analogspannung anwählen, wobei der jeweils selektierte Kanal durch Aufleuchten einer zugeordneten LED signalisiert wird. Die schon erwähnte Umschaltung auf weitere 6 Kanäle erfolgt durch eine Masseverbindung an Port "A1". Innerhalb der einzelen Kanäle ermöglicht ein Drehgeber die Frequenzfeinabstimmung. Hier ist derzeit eine Schrittweite von 100Hz vorgesehen, wobei sich dieser Wert im Programmcode aber leicht auch an ggf. abweichende eigene Bedürfnisse anpassen lässt. Ebenfalls gilt das für die 2x6 möglichen Startfrequenzen, die der Nutzer noch entsprechend seiner eigener Anforderungen ändern sollte.  
Das Programm selbst basiert auf einer Veröffentlichung in [2] und wurde von mir an einigen Stellen etwas modifiziert. Nachdem ich meine Programme für ARDUINO-Boards einige Zeit noch in BASCOM erstellt hatte, war das einer der ersten Versuche, es auch einmal zumindest ein wenig mit ARDUINO-kompatiblem Code zu versuchen. Der wesentlicher Vorteil dabei ist die Nutzbarkeit der ARDUINO-IDE mit einfacher Möglichkeit zur Programmmodifikation, anschliessender Kompilierbarkeit und Bootloadernutzung via USB-Schnittstelle.

BEISPIELE FÜR MÖGLICHE ANWENDUNGEN
UND ERWEITERTE VERSIONEN

In vielen Ländern ist die ( SSB- ) Nutzung einiger Festfrequenzen im 60m-Band ( ca. 5.2-5.4 MHz ) zugelassen. Hier bietet sich die Verwendung eines Empfängers/Transceivers mit schneller Aufrufbarkeit dieser wenigen Kanälen an. In Abb.2 habe ich einmal angedeutet, wie sich der Eingangsteil eines entsprechenden Empfangsgerätes unter Verwendung der beschriebenen DDS-Einheit auf einfache Weise realisieren liesse.


Abb.2  Blockschaltbild für das mögliche Eingangsteil eines 60m-Band-Empfängers


Abb.3 zeigt eine DDS-Version, die um ein 1.8"-TFT-Display [4] erweitert wurde. Im Gegensatz zur Basisversion erlaubt das nicht nur eine grobe Frequenzanzeige mit LED's, sondern stattdessen eine hochauflösende via Display. Die derzeit vorgesehene Frequenzauflösung beträgt 100Hz, kann bei Bedarf jedoch auch noch verringert werden.
Während Schalter "SW1" wiederum der Anwahl einer 2. Gruppe von Startfrequenzen dient, ist "SW2" dafür vorgesehen, bei Bedarf auch eine vom Anwender frei zu bestimmende Anzeigeablage aktivieren zu können. Vorgesehen ist das für Empfänger oder Sender, die nach dem Mischprinzip arbeiten und ermöglicht dabei eine direkte Anzeige der Eingangs- bzw. Ausgangsfrequenzen. 


Abb.3  Erweiterte DDS-Version mit TFT-Display


Abb.4  Musteraufbau des DDS-Generators mit TFT-Display


Nachdem TFT-Displays nicht unbedingt zu den Standardbauteilen gehören, habe ich auch noch eine Version erstellt, die zur Frequenzanzeige stattdessen ein handelsübliches 2x16-Zeichen LCD-Display nach "HD44780" verwendet. Eine elegante Möglichkeit zu seiner Ansteuerung bietet sich durch Verwendung eines I2C-Adapters, so wie er als Bausatz z.B. hier [5] für wenige Euros erhältlich ist und im Wesentlichen auf einem Schaltkreis "PCF8574[A]" basiert ( ein ggf. folgendes "P" steht für das Platikgehäuse ). Bei Verwendung eines auch in seiner mechanischen Bauform geeigneten Displaytyps [z.B. 6] können die Querverbindungen zwischen den beiden aufeinander abgestimmten Trägerplatinen auf einfachste Weise hergestellt werden. Durch Nutzung des I2C-Busses ergibt sich weiterhin der Vorteil, dass die Verbindungen zwischen Anzeigemodul und Prozessor nur 4-adrig ( siehe Abb.5 ) ausgeführt werden müssen.  


Abb.5  DDS-Generator mit 2x16-Zeichen I2C-LCD-Anzeigemodul

Anm.: Für ein einwandfreies Funktionieren der Anordnung ist es erforderlich, dass die Schaltkreise "PCF8574[A]" mit der jeweils korrekten Chipadresse angesprochen werden. Zum Einen wird diese durch die drei Kurzschlussbrücken festgelegt, so wie sie in Abb.5 links neben der Lüsterklemme erkennbar sind. Im Normalfall sollte dabei mit der aus Abb.5 ersichtlichen Brückenanordnung ( mit Masseverbindung der 3 Auswahlports ) gearbeitet werden. 
Nachdem Fa. Pollin die Bausätze für die I2C-Adapterplatinen sowohl mit Schaltkreisen "PCF8574" als auch mit solchen des Typs "PCF8574A" auszuliefern scheint, die Versionen sich aber in ihren Ansprechadressen unterscheiden, ergeben sich daraus natürlich auch Folgen für den zu verwendenden Programmcode. Im Gegensatz zu der aus Abb.5 ersichtlichen Version wurde in dem von mir aufgebauten Exemplar ein "PCF8574" verwendet und mit der Chipadresse "0x40" erfolgreich angesprochen. Ohne es selbst getestet zu haben, sollte es bei Verwendung eines "PCF8574A" dagegen erforderlich werden, dass der Programmcode an der entsprechenden Stelle auf "0x70" geändert wird.


Abb.6  Musteraufbau des DDS-Generators mit LCD-Display


LINKLISTE

[1] http://www.kh-gps.de/dds.htm
[
2] http://forum.arduino.cc/index.php?topic=175141.0
[3] http://www.ebay.de/bhp/arduino-nano
[4] http://www.sainsmart.com/home-page-view/sainsmart-1-8-spi-lcd-module-with-microsd-led-backlight-for-arduino-mega-atmel-atmega.html
[5] http://www.pollin.de/shop/dt/NDU4OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_LCD_I_C_Modul.html
[6] http://www.pollin.de/shop/dt/Nzc1OTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_TC1602A_09.html

NACHBAU  UND  SOFTWARE-DOWNLOAD

Zum DDS-BOARD siehe auch Link [1]

Zum ARDUINO "NANO":
Ich habe nie verstanden, warum die Original-Bausteine bei uns zu Preisen um Euro 40 angeboten werden, während man die Nachbauten im Internet schon für etwa ein Drittel bis ein Viertel dieser Summe erhalten kann [3]. Persönlich habe ich daher bisher auch nur diese Nachbauversionen eingesetzt und kann darüber nichts Negatives berichten.

Der hier herunterladbare ZIP-Ordner enthält folgende INO-Sketches und einige Libraries, die zur Kompilierung noch zusätzlich erforderlich sein könnten:
DDS_LED_1       = DDS-Generator mit Kanalanzeige via LED ( gem.  Abb.1 und Abb.2 ) 
DDS_TFT_4        = DDS-Generator mit TFT-Frequenzanzeige  und schaltbarer Offsetfunktion ( gem.  Abb.3 und Abb.4 )
DDS_I2C_2         = DDS-Generator mit LCD-Frequenzanzeige und schaltbarer Offsetfunktion ( gem.  Abb.5 und Abb.6 )

Die in den Musterprogrammen abgelegten Ausgangs-, Offset- und Rasterfrequenzen lassen sich leicht durch vom Anwender gewünschte abweichende Frequenzen ersetzen. Die derzeitigen Programmversionen sind auch nur als Vorschläge für erste eigene Versuche anzusehen und auf jeden Fall noch verbesserungsfähig. So weisen sie z.B. auch noch den Schwachpunkt auf, dass Änderungen der Schaltereinstellungen erst nach zusätzlicher Betätigung des Kanalwählers oder gar Neustart des Programmes wirksam werden. An dieser Stelle ist allerdings noch eine Optimierung geplant. 

E-Mail contact via: