DDS


DDS sind eigentlich für keinen OM etwas Neues. Seit längerem ist auch bei mir einer in Form eines FA-NWT im Labor verfügbar - dieser wiederum ist abhängig vom Computer, was mich oft stört, wenn ich bloss schnell etwas ausprobieren will und dazu vorher den Rechner anstellen muss.

Nun, die DDS-Module mit dem bekannten AD9850 sollte jedermann bekannt sein - für 5$ ist man in der Bucht inkl. Gratisversand direkt aus China dabei. Warum diese Module so günstig sind, darüber ranken sich viele Vermutungen, die oft schon fast Verschwörungstheorien genannt werden müssen. Ich möchte mich diesen Gedankenspielen nicht anschliessen; nach ausgiebigem Testen verschiedener, baugleicher Module bin zur Erkenntnis gelangt, dass an den verwendeten Komponenten nichts auszusetzen gibt; ehm wobei ich da das verbaute LPF ausnehmen möchte - es ist in der hier verbauten Form nicht zu verwenden und wurde beim von mir verwendeten Modul abgetrennt. Ebenfalls habe ich den RSet-Widerstand auf 2k abgesenkt, um die volle mögliche Amplitude aus dem Käfer rausholen zu können.
Die Ansteuerung erledige ich hier seriell, da ich viele Pins des ATMEGA16 für das 4x4-Matrix und LCD-Display benötige. Die Datenübertragung lässt sich wie bei einem SPI erledigen, allerdings erfolgt dies hier softwarebasiert via bitbanging und nicht über das hardwarebasierte SPI des Microcontrollers.

Die Arbeitsfrequenz des AD9850 kommt von einem gewöhnlichen Quarzoszillator - dementsprechend sind leider Parameter wie Drift und Phasenrauschen; um die Frequenzausgabe so genau wie möglich zu haben, wird die Arbeitfrequenz im EEPROM abgelegt und zur Berechnung des Datenworts ausgelesen. Da mein Frequenzzähler im 100MHz-Bereich nur über den Prescaler zählen kann und dementsprechend ungenau ist, ermittle ich die MCLK indirekt durch die Ausgabe von 10MHz und dem Umrechnen der Abweichung; dieser Wert wird dann im EEPROM abgelegt.
Ebenfalls habe ich in der Software Funktionen für ASK, PSK und FSK implementiert. ASK lässt sich über einen externen DAC am RSet-Pin realisieren, FSK lässt sich über ein Togglen von zwei Frequenzen einfach realisieren, und für PSK ist ein 5bit-Wert im Datenwort vorgesehen. Die Ansteuerung dieser Funktionen erfolgt über einen externen Interrupt des Microcontrollers.
Weiterhin sieht die Steuersoftware die Eingabe einer Offsetfrequenz vor, z.B. für den Einsatz als VFO an einem Mixer.

Die Dateneingabe erfolgt über eine 4x4-Matrixtastatur, ebenfalls aus dem Chinabasar; das Feature des VFO-Knopfs übernimmt ein Rotary Encoder - die Schrittweite beträgt fix 1Hz. Da das Ausgangssignal des DDS relativ schwachbrüstig ist, ist eine Verstärkung notwendig, wofür ich hier einen LM7171 ausgewählt habe, da er über das notwendige - achtung ein Wortungetüm - Verstärkungsbandbreitenprodukt verfügt und, noch wichtiger, einen vernünftigen Preis hat. Das Datenblatt weist auf eine Verstärkung von +2 oder -1 hin; ich bin mit V=2,5 etwas darüber hinaus gegangen, womit nun bis 25MHz 2Vpp oder +10dBm in 50Ohm am Ausgang anliegen; oberhalb fällt der DDS schon ab, ab 35MHz ist das Signal eigentlich nicht mehr verwertbar. Das Ausgangsfilter besteht aus einem 42MHz Tschebytscheff-LPF, etwas monströs mit 3x T50-6 realisiert.

Wie zu erkennen, ist die Lochrasterplatine gross geraten - aber mit Absicht. Bei einer sauberen Aufteilung lassen sich mit einem Quarzoszillator zwei AD9850 speisen und damit ein I/Q-DDS aufbauen. Zudem beabsichtige ich, eine Sweep-Funktion in die Software zu integrieren - aber alles zu seiner Zeit; fürs erste habe ich einen computerunabhängigen DDS fürs Experimentieren; deswegen habe ich z.B. auch noch nicht den Interrupt-Pin für die digitalen Modulationen nach aussen geführt.

Update 11.2017 Der DDS ist ein ständiges Bastelobjekt. Mittlerweilen habe ich den Ausgangsverstärker überarbeitet, dazu zig Male die Software. Mehr aus Jux habe ich einen einstellbaren DC-Offset implementiert. So kann der Ausgang nebst HF-Signal zwischen +10V und -10V eingestellt werden; dazu habe ich einen LTC1661 verbaut. Der zweite Kanal ermöglicht endlich die Einstellung der Signalamplitude am AD9850. Dazu habe im Inneren Ordnung geschaffen und die fliegende Konstruktion abgeschafft. Es ist ziemlich halbarschig, Projekte zu bauen und sich dann nicht die Mühe zu machen, die Baugruppen sauber in den Gehäusen zu befestigen.

Update 11.2019 Neulich kam mir die Idee, diesen DDS, der auch den Audiobereich abdeckt, mal mit meinem Distortion Analyzer anzuschauen. Aufgrund des rein analogen Aufbau desselben und der damit durch die Bauteile (Twin T-Notch Filter), muss die Referenz genau abgeglichen werden, damit die eingestellte Ausgangsfrequenz mit den Filtern matched. Das liess sich dann auch bewerkstelligen, und ja: sehr erbauend ist das alles überhaupt nicht. Das Ding rauscht wie blöde, was zweifelsohne von den verwendeten Opamps (LM7171) stammt, die mit 14nV/sqrt(Hz) bei 10kHz rauschen. Da liesse sich als bei Langeweile und materiellem Aufwand bessere Ergebnisse erreichen, aber mein Rigol-Arbitary macht das unnötig; denn dieser hat im Vergleich zu diesem DDS um einiges besser abgeschnitten. Aus Faulheit hab ich leider die Werte erst gar nicht augeschrieben; vielleicht wiederhole ich das Experiment bei Gelegenheit. Das eigentliche Messziel - nämlich das Mass der Verzerrung - konnte ich aufgrund des hohen Grundrauschens erst gar nicht erfassen.