DDS mit AD9951 und PIC16F877 bis 160 MHz

Startseite
Fotos
Schaltung DDS (Target)
Schaltung Steuerteil (Target)
DDS Schaltplan (png)
DDS Platine (png)
Steuerteil Schaltplan (png)
Steuerteil Platine (png)
Sourcecode (zip)
Bedienungsanleitung
Users Guide

 

Here you can see a DDS circuit with the AD9951 and a PIC16F877. The frequency range of the AD9951 is 0MHz to 160MHz.
You can use he DDS either with the PIC16F877 or with a small VB6 Program with your computers LPT Port. In this case you will perhaps need a small buffer circuit beetwen the LPT port an the dds unit. Unzip the programm to a folder an run it. No setup is required. Please let me know if you change the programm code, so that i can post it here on the website.
The VB6 Program is tested under Win 2000 and XP.
The PIC sourcecode is made with MPLAB V.6.5
The PIC is programmed with a Picstart Plus. The configuraton word is Hex 3F31

Screenshot VB Program:

Bei der auf den folgenden Seiten folgenden Schaltung handelt es sich um eine DDS Schaltung für einen HF Generator von 0 - 160 MHz mit einem DDS IC AD9951 der Firma Analog Devices und PIC 16F877 von Mikrochip als Prozessor.
Zur Ansteuerung kann entweder ein PIC 16F877 oder ein kleines VB6 Programm verwendet werden (über die parallele Schnittstelle). Unter Umständen ist in diesem Fall eine kleine Schaltung zwischen der parallelen Schnittstelle und dem DDS erforderlich.
Der Sourcecode für den PIC ist mit MPLAB V. 6.5 erstellt, als Programmiergerät findet ein Picstart Plus Verwendung. Das Konfigurationswort für den PIC ist Hex 3F31.
Das VB6 Programm nur in einen beliebigen Ordner entpacken und starten. Es ist kein Setup erforderlich. Das Programm ist unter Windows 2000 und XP getestet.
Veränderungen an den Programmen sind erwünscht. Bitte um eine kleine Mitteilung, damit ich die Änderungen hier aufspielen kann (Bin ein absoluter Neuling in der Hochsprachenprogrammierung).
 Die Ausgangsleistung beträgt etwa 10 dBm (gemessen habe ich zwischen 8 und 12 dBm, je nach Frequenz). Der große Vorteil des AD9951 liegt darin, dass das Ausgangssignal über einen 14 Bit DA-Wandler erzeugt wird (im Gegensatz zu seinen kleineren Brüdern), d.h. das Signal ist sehr sauber und kann direkt für TX/RX-Konzepte verwendet werden, ohne dass eine schmalbandige PLL nachgeschaltet werden muss. Nachteilig ist der doch recht hohe Stromverbrauch (ca. 200 mA bei 12 V).
Die Schaltung ist auf 2 Platinen realisiert um eine gute Entkopplung zwischen dem Prozessorteil und der DDS Schaltung zu erreichen. Die DDS Platine passt von der Größe her in ein Weißblechgehäuse der Firma Schubert mit den Maßen L * B * H = 37 * 55 * 50 mm.
Die Frequenz ist über einen Drehgeber einstellbar. Dabei können Frequenzschritte zwischen 1 Hz und 10 MHz gewählt werden (über einen im Drehgeber integrierten Taster).
Zusätzlich ist es möglich zwischen 2 frei wählbaren Frequenzen mit ebenfalls wählbarer Geschwindigkeit und Raster zu wobbeln. Das Wobbeln kann entweder einmal oder in einer Schleife dauernd wiederkehrend erfolgen. Beim Erreichen der oberen Frequenz während eines Wobbeldurchgangs ist es weiterhin möglich eine zusätzliche Wartezeit einzustellen (wobei eine Frequenz von 0 Hz ausgegeben wird) bevor wieder mit der Startfrequenz begonnen wird. Dies kann z.B. beim Ausmessen von Filtern günstig sein, da dann die Filter eine "Erholpause" erhalten.
Im Gegensatz zu mehreren anderen Sourcecodes die ich angeschaut habe (dort wird häufig ein fixer Wert verwendet um eine Frequenzänderung zu ermöglichen), berechnet der Prozessor wirklich jede Frequenz über die im Datenblatt des AD9951 angegebene Formel, d.h. es ergibt sich bei keiner Frequenz ein Fehler größer als ein Bit, was in etwa 1/10 Hz entspricht. Dazu war es notwendig praktisch alle externen Kommandos intern als BCD Format zu verarbeiten und anschließend entsprechend zu wandeln. Daraus ergibt sich ein doch etwas umfangreicherer Sourcecode , so dass ein PIC16F877 verwendet werden muss. Der Drehgeber sollte nicht mehr als 30 Rastungen pro Umdrehung besitzen, da der Prozessor nur mit 4 MHz getaktet wird und es daher zu erwarten ist, dass sich bei einem schnellen Drehen der Prozessor "verschluckt". Soll ein Drehgeber mit mehr Rastungen verwendet werden, ist ein PIC mit 20 MHz Quarz zu verwenden. Es müssen aber dann alle Pausen im Programm entsprechend geändert werden und die 2 Kondensatoren am Quarz des PIC auf 15pF verringert werden. .

Der AD9951 hat nur einen Pin-Abstabd von 0.5 mm. Das erfordert schon sehr "feinfühliges" Arbeiten. Außerdem muss er auch noch auf der Unterseite auf Masse gelötet werden, d.h. es ist unbedingt eine durchkontaktierte Platine zu verwenden. Wenn genügend Interesse besteht, lasse ich mal einen Schwung Platinen anfertigen.