Projekt: 4,4-GHz-Signalgenerator mit ADF4351


zurück zu HF , zurück zur Elektronik , Homepage


Einleitung
Test
Funktionsprinzip
Eigentümlichkeiten
Überlegungen zum Bau
Signalpegel-Linearisierung
Projektstatus
Downloads

zurück zu Projekte
zurück zu HF



Picture



Einleitung

Ich habe einige preiswerte Evaluation-Boards (chinesischer Herkunft) mit einem PIC-Controller zusammen in ein Gehäuse gesperrt, und dessen Front mit Tastatur, Display und Rotary-Encoder versehen. Das ergibt zusammen einen komfortabel zu bedienenden Hochfrequenz-Signalgenerator, der nicht nur preiswert ist, sondern auch ohne fundierte HF-Kenntnisse nachgebaut werden kann. Die Kenndaten sind:

Folgende Komponenten wurden verbaut:
Wenn man die nötigen Werkzeuge besitzt (Krimpzange für SMA-Verbinder, 3D-Drucker) fallen also Kosten von ca. 90 Euro an. Das war es auch, was mich an diesem Projekt interessierte. Denn Signalgeneratoren für über 1000 € gibt es ja genug.
Um möglichst schnell ein erstes Gerät fertig zuhaben, habe ich erst mal auf Sonderfunktionen (wie Modulation, Sweep, Fernsteuerung via USB) verzichtet.

Der Synthesizer (ADF4351) erzeugt das HF-Signal mit 35 MHz ... 4,4 GHz. Mit dem Abschwächer (PE43702) wird die gewünschte Ausgangsleistung eingestellt und mit dem Endverstärker das Signal um ca. 20 dB verstärkt. Die Steuerplatine (PIC18F4550) steuert alle Baugruppen. Die Bedienung erfolgt über Tastatur, Rotary-Encoder und Dotmatrix-Display.

Das nebenstehende Foto zeigt die Anordnung der drei Evaluation Boards auf dem Boden des Gehäuses. Die Frontseite ist hier rechts und die Rückseite links.
Rechts befindet sich die schwarze ADF4351-Platine. Ihr Frequenzeingang ist mit einer gelben Schutzkappe versehen, da der interne 25-MHz-Quarz benutzt wird. Einer der beiden Ausgänge ist mit einem Dummy-Load abgeschlossen, der andere ist mit Hilfe eines Koaxialkabels mit dem Eingang (oben) der grünen PE43702-Platine verbunden.

Der Ausgang (unten) der PE43702-Platine ist mit Hilfe eines SMA-Winkeladapters mit dem Eingang des 20dB-Verstärkers verbunden. Am Ausgang des Verstärkers ist ein kurzes Koaxialkabel angeschlossen, das normalerweise zur (hier entfernten) Frontplatte geht.

Am oberen Bildrand kann man die senkrecht stehende Steuerplatine erahnen. Über ein buntes Flachbandkabel ist der ADF4351 angeschlossen. Eine pinkfarbene Litze dieses Kabels geht zum 5V-Eingang der Platine. (Die dort ursprünglich vorhandene Buchse wurde entfernt.

Die Steuerleitungen des PE43702 sind grün. Die 5V-Versorgungsspannung für den PE43702 und den Verstärker sind das schwarz/orange Leitungspaar.

Aufbau

Für dieses Bild wurde die Frontplatte des Gehäuses abgenommen und so zur Seite gedreht, dass man ihre Rückseite erkennen kann.

Oben in grün ist das LCD-Display zu sehen. Es ist mit buntem Flachbandkabel an der Steuerplatine angeschlossen. Der blaue Trimmwiderstand dient behelfsmäßig der Einstellung des Display-Kontrasts.

Darunter ist in braun die Tastatur zu sehen., die ebenfalls mit buntem Flachbandkabel an der Steuerplatine angeschlossen ist. Außerdem kann man vier Shottky-Dioden erkennen. Sie dienen der Erzeugung eines Interrupt-Signals bei einem beliebigen Tastendruck.

Die Lochrasterplatine links daneben trägt den Rotary-Encoder und dessen Beschaltung (4 Widerstände und 2 Kondensatoren).
Frontplatte


Steuerplatine
Als Steuerplatine habe ich die 40-Pin-Version eines USB4All eingesetzt, allerdings ohne die USB4all-Firmware.  Der Steuer-PIC ist ein PIC18F4550. Die Firmware ist für den Generator neu geschrieben, und hat mit der USB4all-Firmware nichts zu tun.
Der USB-Anschluss der Platine wird z.Z. nur zur Stromversorgung des ganzen Generators benutzt. Deshalb ist die USB-Buchse der Platine auch an der Geräterückseite zugänglich. Die Stromaufnahme beträgt ca. 220mA. Das ist zwar eigentlich mehr, als die 100mA, die man einfach so aus einem USB-Port saugen kann, aber alle modernen USB-Anschlüsse haben damit kein Problem. Alle anderen Stromverbraucher sind an den 5V-Ausgängen der Steuerplatine angeschlossen.


Synthesizer-Platine mit ADF4351
Der Chip ADF4351 von Analog Devices kann Frequenzen von 35 MHz bis zu 4,4 GHz erzeugen und mit einer Leistung von -4dB bis +5 dB ausgeben. Auch gut ist, dass man Platinen mit diesem Chip aus China für deutlich unter 20€ bekommt.

Funktion:
Der Chip macht aus einer Eingangsfrequenz (hier 25 MHz von einem Quarz) per VCO-Schaltung ein Ausgangssignal bis zu 4,4 GHz erzeugt. Frequenzen von 2,2 GHz bis zu 4,4 GHz werden im Chip direkt mit einem VCO erzeugt und als Sinus ausgegeben. Frequenzen unterhalb von 2,2 GHz dagegen entstehen durch einen Frequenzteiler, der die VCO-Frequenz herunterteilt. Dessen Ausgangssignal ist eher rechteckig (soweit das bei den Frequenzen möglich ist) und kommt deshalb in Begleitung vor Oberwellen (ganzzahlige Vielfache der Frequenz) aus der Schaltung. (Hier ein Oszillogramm von 50 MHz.)
Die Ausgangsleistung kann von -4dBm bis 5dBm in 3dB-Schritten eingestellt werden.
Es gibt zwei Ausgänge mit SMA-Buchsen, wobei am zweiten Ausgang das invertierte Signal des ersten Ausgangs herauskommt. Ich verwende hier nur einen der Ausgänge, weshalb der zweite Ausgang mit einem Abschlusswiderstand abgeschlossen werden muss.

Ansteuerung:
Gesteuert wird der Chip - und damit diese Platine - über ein 3-pin Serial-Interface (SPI), das mit 3,3V-Pegel funktioniert. Durch das Interface kann man Daten in den Chip hineinschreiben, aber nicht herauslesen.
Es gibt dann noch zwei herausgeführte diskrete Signale. Eines zeigt an, dass die PLL eingerastet ist, das zweite ist konfigurierbar. Die Pins des Interfaces sind auf der Platine mit jeweils einem 10kOhm-Widerstand nach Masse verbunden. Um mit den 5V-Ausgängen der Steuerplatine diese Pins korrekt anzusteuern, sind in die Leitungen von der Steuerplatine zum ADF4251 jeweils ein weiterer 10 kOhm Widerstand eingesetzt. Zusammen mit den Widerständen auf der Platine bilden sie Spannungsteiler, die die 5V-Signale der Steuerplatine auf verträgliche 2,5V absenken.
Der SPI-Controller des PIC18F4550 hat einen Bug, der dazu führt, dass die Signalleitung (SDO) nach einiger Zeit spontan auf low fällt. Das verträgt der ADF4351 nicht. Um den Effekt zu vermeiden, darf der SPI-Takt nicht zu klein sein. Mit Fosc/64 trat dieser Effekt auf, mit Fosc/16 (ca 1,3 MHz) dagegen nicht mehr.

Stromversorgung:
Der ADF4351 ist ein 3,3V-Chip.
Meine Platine bietet zwei Möglichkeiten der Stromversorgung. Am Pfostenstecker kann man 3,3-V einspeisen. Zusätzlich gibt es noch eine Buchse für 5VDC, die verpolungssicher ist, und einen 3,3V-Spannungsregler bedient. Die Stromaufnahme bei 3,3V ohne Ausgangssignal beträgt 80 mA. Bei aktivem Ausgang kommen (je nach erzeugter Leistung) 10 ... 15 mA hinzu.
Ich speise die Platine mit 5V, die von der Steuerplatine kommen. Diese schließe ich am 5V Eingang an.

Taktversorgung:
Meine Platine hat einen SMA-Anschluss. Im Original war der dazu gedacht, anstelle des 25 MHz-Quarzes, welcher auf der Platine sitzt, eine externe Referenzfrequenz einzuspeisen. Die Art und Weise der Bestückung meines Exemplars erlaubt das aber erst mal nicht. Stattdessen kommt am SMA-Anschluss die 25 MHz Quarzfrequenz heraus. 
Für den Anfang tut es der 25MHz-Quarz auf der Platine

Anzeigen:
Es gibt zwei blaue LEDs. Die eine (D2) zeigt die vorhandene Betriebsspannung an, die zweite (D3) zeigt an, dass die PLL eingerastet ist. Im geschlossenen Gehäuse sind die natürlich nicht sichtbar, aber beim Aufbau und Fehlersuche sind sie hilfreich. D2 sollte leuchten, sobald der Signalgenerator über USB angeschlossen ist. D3 sollte leuchten, wenn eine Ausgangsfrequenz erzeugt wird, also ab ca. 4 Sekunden nach dem Einschalten.


Einstellbarer Abschwächer
Der PE43702 kann Signale bis 4 GHz in 0,25dB-Stufen von 0 dB bis 31,75dB abschwächen. Dazu kommt noch eine Frequenzabhängige Einfügedämpfung von ca. 2dB. Die Ansteuerung erfolgt über ein serielles Interface, dass SPI-ähnlich ist. Die Platine wird mit 5V versorgt und verträgt digitale 5V-Steuersignale der Steuerplatine. Die Stromaufnahme ist vernachlässigbar.
Die Platine dient dazu, den gewünschten Ausgangspegel einzustellen. Dabei müssen die Frequenzabhängigkeiten aller Baugruppen berücksichtigt werden, so nimmt die Verstärkung des Endverstärkers oberhalb von 2 GHz ab.


Endverstärker
Die Platine verstärkt hineinkommende Signale um ca 20dB. Dabei darf die Eingangsleistung 0dBm nicht überschreiten, um Sättigung zu vermeiden. Oberhalb von 3GHz nimmt die Verstärkung ab, und liegt bei 4GHz bei etwa 15dB. Gespeist wird die Platine mit 5V und nimmt etwa 70mA auf.

Dotmatrix-LCD-Display
Ein 4-zeiliges 20-Spaltiges Dotmatrix Display ist ausreichend, um alle wesentlichen Parameter anzuzeigen und durch die Bedienung zu führen. Modern sind ja heutzutage OLED-Grafik-Displays. Die kosten aber nicht nur deutlich mehr, sondern erfordern auch einen Mikrocontroller mit viel RAM. Deshalb ist das Dotmatrixdisplay die bessere Wahl. Das Display hat eine Hintergrundbeleuchtung zur besseren Ablesbarkeit.

Tastatur 4x4
An professionellen Geräten liebe ich, dass man z.B. Frequenzen direkt eintippen kann. Dafür ist eine Zehnertastatur erforderlich. Meine Tastatur hat noch die Tasten A, B, C, D die ich zur Menüsteuerung verwende, und die #-Taste, mit der ich den Generatorausgang ein- und ausschalte.

Rotary-Encoder
Eine Tastatur ist gut, um eine bestimmte Frequenz einzustellen. Oft aber will man die Frequenz dann in festen Schritten verändern. Das geht mit einem Rotary-Encoder besser.




Vorab-Tests

Ich habe zum Test die Platine an einem auf 3,3V umgerüsteten USB4ALL betrieben, der sowohl die SPI-Signale wie auch die Betriebsspannung bereitstellte. Das Datenblatt zum Chip ist brauchbar, allerdings nimmt es den Nutzer nicht gerade an die Hand. Einige Feinheiten der Ansteuerung erschließen sich erst nach der ersten oder zweiten Trial-and Error-Runde.

Foto

Die nachfolgenden Bilder zeigen das Spektrum des Ausgsangssignals bei 3 GHz im INT-Mode und im FRAC-Mode. Zum Vergleich habe ich noch das Ausgangssignals eines professionellen Signalgenerators (Agilent 8648) danebengestellt.

Foto
Foto
Foto
Diagram
INT-Mode FRAC-Mode. Agilent 8648 zum Vergleich
Ausgangsleistung des ADF4351

Spektrum
Im INT-Mode lassen sich nur Frequenzen in einem bestimmten Raster ( das ist die Phase-Frequency-Detector = PFD-Frequenz z.B. 100 kHz oder 125 kHz) erzeugen. Nur für die Frequenzen dazwischen braucht man den FRAC-Mode.
Im INT-Mode sieht das Spektrum durchaus gut aus. Die beiden Störspitzen (jeweils 125 kHz zu beiden Seiten, PFD-Frequenz siehe unten) stammen aus der VCO-Regelung. Sie verschwinden, wenn man den 2:1-Vorteiler im ADF4351 abschaltet (keine Ahnung warum)

Generell sollte eine höhere PFD-Frequenz zu einer schnelleren VCO-Regelung und vermindertem Rauschen führen. Der Chip verträgt bis zu 32 MHz, und in einigen Modi sogar bis zu 90 MHz. Die Frequenzerzeugung erlaubt es aber maximal das Doppelte der Eingangs-Quarz-Frequenz als PFD-Frequenz zu erzeugen. Man könnte also die 25 MHz des verbauten Quarzes nutzen. Bevorzugt man eine externe Referenzfrequenz (typischer Weise 10 MHz), dann kommt man noch auf 20 MHz. Im INT-Mode können dann aber nur noch Vielfache dieser PFD-Frequenz erzeugt werden. Bei einer PFD-Frequenz von10 MHz sieht das Signal für mich gut aus, und diese lässt sich sowohl aus 10 MHz wie auch aus 25 MHz im ADF4351 erzeugen.

Im FRAC-Mode überzeugt das Signal weniger. Ein Signalgenerator mit diesem Chip sollte also in erster Linie den INT-Mode nutzen und auf den 2:1 Vorteiler verzichten. Wenn man den FRAC-Mode verwenden muss, dann ist eine hohe PFD-Frequenz um so wichtiger.

Leistung
Ich betrieb mein Board bei 3,2V. Dabei erreichte es aus den ersten Blick nicht ganz die angegebene Ausgangsleistung. Bei 3 GHz fehlte 1 dB, bei 1 GHz und 4 GHz fehlten über 4 dB. Das galt für alle eingestellten Ausgangsleistungswerte  von -4dBm bis +5dBm. Allerdings habe ich die Leistung auch nur an einem der beiden gegenphasigen Ausgänge gemessen, während am anderen eine Abschlusswiderstand angeschlossen war. Man kann zu den gemessenen Werten also noch mal 3dB zuschlagen, und dann ist alles im grünen Bereich. Im Durchschnitt stimmt die abgegebene Leistung also schon, nur schwankt sie leider um ±2dB über den gesamten Frequenzbereich.

Alles in allem hat mich der Test dazu ermutigt, aus diesem Board was Brauchbares zu basteln.



Funktionsprinzip des ADF4351

Der Chip enthält einen VCO (voltage controled oscillator), der im Bereich von 2,2 GHz bis 4,4 GHz abgestimmt werden kann. Dessen Frequenz wird durch einen 16-Bit-Frequenzteiler (INT) auf eine Phasenvergleichsschaltung gegeben. Dort wird die heruntergeteilte Frequenz mit der sogenannten PFD-Frequenz verglichen. Der VCO wird dann so lange verstimmt, bis beide Frequenzen gleich sind.

Die PFD-Frequenz wird aus der von außen eingespeisten Referenzfrequenz (z.B. Quarz) erzeugt. Dafür steht eine Kette aus einem abschaltbaren Frequenzverdoppler, einem 10-Bit Frequenzteiler (R) und einem abschaltbaren Frequenzhalbierer zur Verfügung.

Erst einmal zur PFD-Frequenz. Der VCO kann 4,4 GHz erzeugen, will man das ausnutzen, dann kann der 16-Bit-Frequenzteiler diesen Wert maximal um 65535 (16 Bit) herunterteilen. 4,4 GHz / 65535 =67,139 kHz
Folglich darf die damit zu vergleichende PFD-Frequenz nicht kleiner als 67 kHz sein.

Im zu bevorzugenden INT-Mode (kommt später) ist diese PFD-Frequenz gleichzeitig die Schrittweite, in der sich Frequenzen gut einstellen lassen. Ein einigermaßen "runder" Wert wäre also zu bevorzugen. Aus einer externen 10 MHz-Frequenz kann man einfach 100 kHz erzeugen: 10 MHz / 50 / 2 = 100 kHz Dazu stellt man den 10-Bit Frequenzteiler der Referenzfrequenz auf 50 und aktiviert den Frequenzhalbierer. Mit einem 25 MHz Quarz ergibt das:  25 MHz / 125 / 2 = 100 kHz

Die PFD-Frequenz bestimmt die Regelgeschwindigkeit der PLL und damit auch das Phasenrauschen. Aus dieser Sicht wäre eine möglichst hohe PFD wünschenswert.

FRAC-Mode
Ist die PFD-Frequenz z.B. mit 100 kHz festgelegt, dann lässt sich durch Ändern des 16-Bit-Frequenzteilers (INT) jedes Vielfache von 100 kHz einstellen (in den Grenzen 2,2 ... 4,4 GHz). Mit einem Frequenzteilerwert von INT=30000 ergäbe sich eine VCO-Frequenz von 30000 * 100 kHz = 3 GHz. Der nächste Wert (INT=30001) wäre 3,0001 GHz. Der ADF4351 erlaubt aber auch Zwischenwerte.



Eigentümlichkeiten des ADF4351
Hier sammle ich Eigentümlichkeiten, die mir beim ADF4351 aufgefallen sind.

Ist der Vorteiler im 4/5-Mode, dann ist der höchste funktionierende INT=32768. Höher INT-Werte müssen durch einen höheren DIV-Wert vermieden werden, oder man verwendet den 8/9-Mode des Vorteilers. Das widerspricht der Dokumentation.

Oberhalb von 3,6 GHz muss der 8/9-Mode des Vorteilers verwendet werden.

Es lassen sich Frequenzen von 35 MHz bis 4478 MHz erzeugen.

Das PLL-Lock-Signal am MUX-Ausgang ist High-active, genau wie am LD-Pin.

Wird der HF-Ausgang abgeschaltet, dann sinkt der Ausgangspegel um mindestens 35 dB ab, ist aber noch da. Das gilt vor allem im Bereich um 3 GHz:

Frequenz
200 MHz
400 MHz
700 MHz
1 GHz
2 GHz
3 GHz
4 GHz
Dämpung bei Output-Off
>60 dB
54 dB
50 dB
48 dB
43 dB
36 dB
47 dB



Überlegungen zum Bau



Signalpegel-Linearisierung

Die Ausgangsbeschaltung auf der ADF4351-Platine besteht aus einem 51 Ohm-Widerstand zur Betriebsspannung und einem Reihen-Keramikkondensator. Das wird vom Hersteller für breitbandigen Einsatz (und ein universeller Signalgenerator ist das ja) empfohlen.

Dabei soll die differenzielle Ausgangsleistung (also zwischen beiden Ausgangspins) in etwa den programmierten Werten (+5/+2/-1/-4 dBm) entsprechen. Um die kombinierte Leistung beider Pins zu nutzen, müsste man sie aber über ein Hybridkoppler zusammenfassen. Das ist nicht praktikabel, wenn es über ein weites Frequenzband arbeiten soll.
Ich nutze also nur einen Ausgang, und schließe den anderen mit einem Dummy-Load ab.

Das Diagramm zeigt die an einem Ausgang gemessene Leistung über den nutzbaren Frequenzbereich. Benutzt wurde ein Termokopplermesskopf, der unterhalb von 2,2 GHz auch die durch die Frequenzteilung entstehenden Harmonischen Signale mit-misst. Unterhalb von 2,2 GHz könnten die Messwerte also einen Hauch zu groß sein.

Die Ausgangsleistung schwankt ±2dB um den Mittelwert herum, und der Mittelwert liegt 3dB unter dem eingestellten Wert. Der Mittelwert ist an sich ok, da ja das zweite Pin nicht benutzt wird, und somit nur die Hälfte der Leistung verwendet wird, es fehlen also 3dB. Die Schwankung über den Frequenzbereich ist allerdings doppelt so groß, wie vom Hersteller angegeben.
Diagramm


Man kann aber eine Linearisierung der Ausgangsleistung erreichen, wenn man ihm einen elektronisch einstellbaren Abschwächer mit dem PE43702 nachschaltet.

Dessen Ansteuerung kann mit dem selben SPI-Interface erfolgen, das auch den ADF4351 steuert, man benötigt lediglich eine zusätzliche IO-Leitung, die den Ladeimpuls des Schieberegisters erzeugt. Der Betrieb von ADF4351 und PE43702 am gemeinsamen SPI-Interface eines USB4ALL wurde getestet.

Die nebenstehende Grafik zeigt die gemessene Grunddämpfung (Einstellung: 0dB) für verschiedene Eingangspegel von 500 MHz bis 4,5 GHz. (Mit +10dBm habe ich nur bis 3,2 GHz gemessen.)

Die von mir gemessene Einfügedämpfung des PE42702 änderte sich von 100 MHz bis zu 3 GHz nur um etwa 0,5 dB. Bei höheren Frequenzen hatte ich einige messtechnische Probleme, aber bis 4,5 GHz stellte ich nur ein weiteres halbes dB Dämpfung fest. Das ist für den geplanten Einsatzzweck völlig ausreichend.



Grafik


Dem Leistungsproblem kann man mit einem 20 dB Verstärker begegnen. Dessen Verstärkung/Gain verringert sich aber im Bereich von 2 bis 4 GHz auch um 5 dB (von 20 auf 15 dB), sein Frequenzgang ist also noch deutlich schlechter als der des ADF4351. Auch das muss wieder vom PE43702 ausgeglichen werden.

Die Grafik zeigt die gemessene Verstärkung für verschiedene Eingangsleistungen im Frequenzbereich bis 4,4 GHz. Sie macht auch klar, dass die Eingangsleistung des Verstärkers deutlich unter 0 dBm bleiben muss, um die Sättigung zu vermeiden (rote Linie). Hält man sich daran, dann ist die Verstärkung mit 17dB bei 4,4 GHz besser als vom Datenblatt versprochen.








Die maximale Ausgangsleistung, die von der Kette aus ADF4351, PE43702 und Verstärker im gesamten Bereich 2,2 ... 4,4 GHz immer sicher erreicht werden kann, ist +15 dBm. Der Wert auf den sich die Leistung in jedem Falle immer reduzieren lässt ist -20 dBm.
Diagramm



Umsetzung der Signalpegeleinstellung

Wie oben beschrieben, sind die Signalpegel, Dämpfungen  und Verstärkungen der drei Platinen frequenzabhängig. Das muss berücksichtigt werden, wenn man am Geräteausgang einen definierten Signalpegel einstellen will. Ich habe für die Frequenzen bis 4,5 GHz in Schritten von 500 MHz die Abweichungen der drei Platinen vom Idealwerte ausgemessen und in der Software hinterlegt. Dazu kommt jeweils noch ein Gerätekorrekturfaktor, der Kabel und Steckverbinder berücksichtigen soll.
Wird nun eine Frequenz und eine Sollsignalstärke am Gerät eingestellt, dann wird aus diesen Werten für jede Baugruppe ein Korrekturwert interpoliert und in der Berechnung der nötigen ADF4351-Ausgangsleistung sowie der optimalen PE43702-Dämpfung eingesetzt. Das Ergebnis ist ein Fehler von weniger als 1 dB bis hinauf zu 4,3GHz. In einigen Frequenzbereichen ist aber das 500 MHz-Raster einfach zu grob.

Für die Feinjustage habe ich deshalb dann noch einen "Kalibrier"-Korrekturwerte (ja, ich weiß, dass das keine echte Kalibrierung ist) im 200 MHz-Raster (200 MHz, 400 MHz, 600 MHz ...) implementiert, die der Benutzer mit Hilfe von Display und Tastatur frei einstellen kann. Dadurch lassen sich auch Unterschiede zwischen verschiedenen Platinenversionen oder Kabeln ausgleichen. Danach sind die Abweichungen in der Leistungseinstellung bei diesen Frequenzen kleiner als 0,2 dB, und dazwischen deutlich unter 1 dB.

Die nachfolgende Grafik zeigt den Frequenzgang (bei eingestellten 0dBm) out of the box in blau und nach der Feinkorrektur in rot.

Diagramm




Berechnungen

Um im ADF4351 eine bestimmte Frequenz einzustellen, muss man über die SPI-Schnittstelle des Chips sechs 32-Bit-Register beschreiben. Entscheidend sind dabei drei Werte (INT, MODO, FRAC) die in bestimmten Stellen dieser Register enthalten sind. Deren Berechnung erläutere ich hier.

input:
    Freq_Mhz     die Sollfrequenz, die erzeugt werden soll
    Quarz_Mhz    die Frequenz des verbauten Quarzes in MHz kann 10 oder 25 sein


// zuerst berechnet man RF_DIV (ganzzahlig)
// und merkt sich das Zwischenergebnis DIV_SET (ganzzahlig)
RF_DIV  := round( log2(2200 / Freq_MHz) + 0.5)
RF_DIV  := MAX( RF_DIV , 0)
RF_DIV  := MIN( RF_DIV , 8)
DIV_SET := RF_DIV
RF_DIV  := round(power(2, RF_DIV))


// T und D steuern den Frequenzhalbierer und den Verdoppler
// sie können 0 oder 1 sein
T := 1
D := 0


// nun lege ich einen passenden Wert für R fest, der muss zur Quarzfrequenz passen
/
/ wenn ein 25MHz-Quarz verwendet wird dann:
R         := 100
 
Quarz_MHz := 25

//wenn aber ein 10MHz-Quarz verwendet wird dann:
R         := 50
Quarz_MHz := 10


// nun bestimme ich den Anstand zwischen zwei Frequenzen im INT-Mode
Step_MHZ := ((1+D)/(R*(1+T))) * Quarz_MHz;                  // 25->0,02     10->0,005


// und nun folgen die ganzzahligen Parameter INT, MODO und FRAC
// dabei wird der Gleitkommawert INT_f ermittelt
INT_f := (Freq_Mhz / Step_MHz) * RF_DIV;
INT   := TRUNC(INT_f);
MODO  := 4000;
FRAC  := round( (INT_f - INT) * MODO);


// es erfolgt die Bestimmung der wirklich erzielten Ausgangsfrequenz
// die kann einen Hauch vom Sollwert abweichen, da die Frequenz in Stufen eingestellt wird
// den Wert kann man z.B. auf einem Display anzeigen
Fout  := Step_MHZ * ( INT + (FRAC / MODO)) * 1000 / RF_DIV;


// nun werden die sechs 32-Bit-Werte ermittelt,
// die dann per SPI in den Chip geschrieben werden müssen
adf[0] :=
(INT  shl 15) or (FRAC shl 3)
adf[1] :=
1 or (MODO shl 3)  or (1 shl 27)
adf[2] := 0x0C002E42 or
(R shl 14) or (T shl 24) or (D shl 25)
adf[3] := 0x00010033
adf[4] := 0x000C8024 or (1 shl 23) or
(DIV_SET shl 20)
adf[5] := 0x00580005


// falls FRAC zufällig 0 sein sollte, lässt sich noch was optimieren
if FRAC=0 then begin
  adf[2] := adf[2] or (1 shl 8)
  adf[3] := adf[3] or (1 shl 21) or
(1 shl 22)
end;


// P_SET ist die Ausgangsleistungsstufe von 0=-4dBm
; 1=-1dBm; 2=+2dBm; 3=+5dBm;
adf[4] := adf[4] or (P_SET shl 3)


//fertig, nun können adf[0] ... adf[5] in umgekehrter Reihenfolge den Chip geschrieben werden





Ergonomie

Je einfacher sich ein Gerät bedienen lässt, desto öfter verwendet man es auch.

Eingaben:
Ich habe es zu schätzen gelernt, wenn sich ein Wert (Frequenz, Leistung) mit einer Zifferntastatur einstellen lässt. Danach sollte er mit einem Rotary-Encoder (Drehsteller?) veränderbar sein.

Man benötigt also eine Tastatur mit 4x4 Tasten, die einen angenehmen Druckpunkt haben. Folientastaturen scheiden aus. Die Tastatur benötigt die Tasten mit den Ziffern "0" bis "9", den Dezimalpunkt, "+/-" und eine "MHz" und eine "dBm"-Taste. Damit lässt sich der Frequenzwert in Megaherz eintippen und mit der "MHz"-Taste bestätigen. Die Leistung lässt sich in dBm eintippen (dafür die +/- Taste) und mit Druck auf "dBm" bestätigen. Das summiert sich zu 14 Tasten. In der 4x4 Matrix bleiben noch zwei Tasten frei, für die sich aber sicherlich noch Funktionen finden lassen (INT-Mode, Menue ...)
Geeignete 4x4-Tastaturen sind 65mm hoch und breit

Dazu kommt dann noch der Rotary Encoder, der mit zwei Tasten ergänzt werden muss. Die beiden Tasten werden benötigt, um die Dezimalstelle auszuwählen, die der Rotary-Encoder erhöht oder vermindert. In der Einfachstversion dienen dazu die zwei übrigen Tasten der Tastatur. Mann kann die Tasten auch dadurch ersetzen, dass man einen Rotary-Encoder mit Tastfunktion einsetzt. Der Rotary Encoder nimmt eine Breite von ca 4 cm ein.

Anzeigen:
Die 4x4 Tastatur ist recht hoch, weshalb das Gehäuse auch hoch sein muss. Damit ist auf der Frontplatte ausreichend Platz für ein großes Display. Grafische Displays sehen zwar gut aus, belasten aber den Mikrocontroller stark. Auch benötigen sie viel RAM im Mikrocontroller. Deshalb tendiere ich zu einem LCD-Dotmatrix-Display mit 4 Zeile zu je 20 Zeichen. Hintergrundbeleuchtung ist ein Muss.

So ein Display ist etwa 10cm breit und 6cm hoch.

Ausgang:
Auch der Signalausgang muss auf der Frontplatte sein. Hier genügt ein SMA-Anschluss. Dieser sollte ganz links (oder ganz rechts) angeordnet sein. Darunter wäre noch Platz für den Netzschalter. Zum Ausgang gehört eine Taste, mit der sich der Ausgang einfach an- und abschalten lässt. Ob das eine separate Taste ist, oder Teil der Tastatur, ist egal.


Damit ergibt sich eine Frontplattenbreite (von links nach rechts) von 3cm (Netzschalter und Ausgang) + 10 cm (Display) + 6,5cm (Tastatur) + 4cm (Rotary Encoder) = 23,5cm. Die Höhe ist mindestens 7 cm.
Einigermaßen ästhetisch wird es bei 27cm Breite und 8 cm Höhe. Das nebenstehende Bild zeigt einen ersten Entwurf erstellt mit OpenSCAD und "The Ultimate box maker" von Heartman.

Leider ist dieses Gehäuse zu breit, als dass ich es mit meinem 3D-Drucker herstellen könnte. Deshalb habe ich mich dann für ein Würfelförmiges Gehäuse mit einer Kantenlänge von 15 cm entschieden. Dabei liegt nun das Display oberhalb der Tastatur. Rechts der Tastatur ist der Rotary-Encoder und links die HF-Ausgangsbuchse.
Gehäuse
Gehäuse



Stromversorgung
Ursprünglich hatte ich geplant, ein kleines 5V-Netzteil im Gehäuse einzubauen. (Das Gehäuse hat dafür auch noch Befestigungspunkte an der Rückwand.) Dann machte ich mir aber Sorgen um die Nebeneffekte eines Schaltnetzteils im Gerät, und speiste stattdessen das Gerät über die USB-Buchse der Steuerplatine mit 5V. Schwanken diese 5V, dann ändert sich auch die Ausgangsleistung leicht, da sich ja dann auch die Betriebsspannung des 20-dB-Verstärkers ändert.
 
Ich verwende am liebsten eine kleine Power-Bank. Die garantiert eine stabile Spannung, galvanische Trennung und ausreichende Störungsfreiheit. Das Ausgangssignal ändert sich bei mir je nach Ladungszustand um ca 0,1 dB, was man vernachlässigen kann.




Anzeige / Menü / Bedienkonzept

Es stehen 4 Zeilen mit jeweils 20 Zeichen zur Verfügung.

1. Zeile:
Frequenzanzeige. Die Frequenz ist der wichtigste Parameter und wird in der ersten Zeile prominent angezeigt. Der Übersichtlichkeit halber erfolgt das in der Form "4 321.987 654 MHz". Dafür werden 17 Stellen benötigt.

2. Zeile
Leistungsanzeige. Der zweitwichtigste Parameter ist die Leistung in dBm. Sie wird mit zwei Vorkommastellen, und zwei Nachkommastellen angezeigt. Dazu kommen noch Vorzeichen, Dezimalpunkt und die Einheit: "-10.50 dBm" Das macht zusammen 10 Stellen. Dadurch ist noch Platz für die Anzeige in Milliwatt oder Mikrowatt, die 6 Stellen benötigt (z.B. "234 uW"). Damit ist die zweite Zeile voll.

3. Zeile
Flags. Hier werden bestimmte Betriebszustände angezeigt:

4. Zeile
Menüführung. Hier wird die Bedeutung frei belegbarer Tasten A, B, C und D der Tastatur angezeigt.


Frequenz-Mode:
   4 321.654 987 MHz
  -
2.20 dBm  603 uW 
 
INT             OFF
 
Pow  MHz  kHz  QCal

Um eine Frequenz einzustellen, muss sich das Display im Frequenz-Mode befinden. Ist das nicht der Fall, drückt man Taste A "Frq".
Nun tippt man den Zahlenwert ein, und tippt abschließend auf "MHz" (Taste B) oder "kHz" (Taste C). Während des Eintippens wird die Zahl in der dritten Zeile angezeigt, danach wird die komplette 1. Zeile neu aufgebaut. Hat man sich vertippt, dann löscht "*" die letzte Ziffer.

Power-Mode:
   4 321.654 987 MHz
 
-2.20 dBm  603 uW
 
INT             OFF
 
Frq +dBm -dBm  PCal

Um die Leistung einzustellen, muss sich das Display im Power-Mode befinden. Ist das nicht der Fall, drückt man Taste A "Pow".
Nun tippt man den Zahlenwert ein, und tippt abschließend auf "+dBm" (Taste B) oder "-dBm" (Taste C). Während des Eintippens wird die Zahl in der dritten Zeile angezeigt, danach wird die komplette 2. Zeile neu aufgebaut. Hat man sich vertippt, dann löscht "*" die letzte Ziffer.


Immer gilt
Mit "#" wird die Ausgangsleistung an- und abgeschaltet. Im abgeschalteten Zustand sinkt der Ausgangspegel auf etwa -49dBm ab. Den aktuellen Zustand (ON / OFF) des Ausgangs sieht man am Ende der dritten Zeile.

Mit dem Rotary-Encoder lassen sich Frequenz und Leistung schnell und einfach ändern.
Durch Drücken des Encoders schaltet man zwischen Frequenz und Amplitude um, es wird jeweils ein blinkender Kursor unter einer der Dezimalstellen des MHz oder dBm Zahlenwerts sichtbar. Mit den beiden Tasten unterhalb des Encoders, kann man eine andere Dezimalstelle auswählen. Durch Drehen des Encoders wird dann diese Stelle schrittweise erhöht oder vermindert. Überschreitet man an dieser Stelle 9 oder unterschreitet 0, dann wird die nächsthöhere Stelle auch um 1 erhöht oder vermindert.


"Kalibrieren"

Durch Drücken von "Cal" wird in einen der beiden den Kalibriermoden geschaltet. War man vorher im Power-Mode, dann ist man nun im Power-Cal-Mode. War man im Frequenz-Mode, dann gelangt man in den Quarz-Cal-Mode.

Power-Cal-Mode:
   4 321.654 987 MHz
  -2.20 dBm  603 uW
 
INT  0          ON
 
Save  P+   P-  Back

In diesem Menü kann man die Ausgangsleistung korrigieren. Der Synthesizer, das Dämpfungsglied und der Verstärker haben frequenzabhängige Ausgangsleistung, Einfügedämpfung und Verstärkung. Dazu kommen dann noch frequenzabhängige interne Kabel. Für 10 Frequenzen habe ich die (natürlich für meine Baugruppen) ausgemessen und in der Software hinterlegt, für Frequenzen dazwischen wird interpoliert. Daraus ermittelt die Software dann die nötigen Einstellungen am Synthesizer und am Dämpfungsglied, um die jeweils eingestellte Ausgangsleistung auch möglichst genau auszugeben.
Falls die Werte nicht genau passen, kann man in diesem Menü noch eine weitere frequenzabhängigen Korrektur vornehmen. Dazu misst  man die Ausgangsleistung mit einem Leistungsmesser und verändert diese durch drücken von der Tasten C "P+" bzw D "P-" so lange, bis die Abweichung von der Sollleistung kleiner als 0,25 dB ist. Der Korrekturwert wird dabei zur Information in der dritten LCD-Zeile ausgegeben. Durch die Taste A "Save" wird der eingegebene Korrekturwert dauerhaft gespeichert. Ich empfehle diese Korrektur bei allen Vielfachen von 500 MHz durchzuführen.


Quarz-Cal-Mode:
   4 321.654 987 MHz
  -2.20 dBm  603 uW
 
INT 25 000 000  ON
 
Save +
MHz -MHz Back

In diesem Menü kann die Quarz-Frequenz eingeben. Das hat zwei Ziele. Zum einen kann man den ADF4351 mit Quarzen unterschiedlicher Frequenz oder auch mit einer externen Referenzfrequenz betreiben. Dann kann man hier diese Frequenz im Bereich von 9 MHz bis 101 MHz einstellen. Im Schritten von 1MHz geht das mit den Tasten B und C, in beliebigen Schritten mit dem Rotary-Encoder.
Zum Anderen ist kein Quarz unendlich genau. Eine leicht abweichende Quarzfrequenz lässt sich hier einstellen, und damit Frequenzfehler des Gerätes minimieren. Das hat allerdings Nebenwirkungen. Hat ein 25MHz-Quarz z.B. einen Frequenzfehler von +18ppm, dann kann man das kompensieren, indem man als Quarzfrequenz 25,000450 MHz eingibt. Damit ergibt sich als Raster der einstellbaren Frequenzen aber etwas krumme Werte. Deshalb ist es generell besser, den Quarz mit den richtigen Kondensatoren auf seine Sollfrequenz zu ziehen.
Die Eingabe der Frequenz erfolgt mit dem Rotary-Encoder, genauso, wie man es vom Frequenzmode für die Sollfrequenz gewohnt ist. Nur das Anzeige und Veränderung hier in der dritten Displayzeile angezeigt werden. Ein geänderter Wert wird im EEPROM gespeichert, und geht beim Ausschalten nicht verloren.


Experten-Mode: R-Einstellung
Dieses Menü ist nur für Interessierte, die sich intensiv mit dem ADF4351 beschäftigt haben.
Wird der Signalgenerator bei gedrücktem Rotary-Encoder eingeschaltet (also der USB-Stecker eingesteckt), kommt man in einen speziellen Mode zur Veränderung des Fpfd-Vorteilers "R". Fpfd ist die Regelfrequenz des Phasendetektors der PLL des ADF4351. Diese Frequenz ergibt sich aus dem Quotienten des Eingangsfrequenz des ADF4351 und dem Wert "R". Als Eingangsfrequenz verwende ich den 25 MHz-Quarz und R ist in der Grundeinstellung 1. Damit ergibt sich Fpfd = 25MHz/1 = 25MHz.
Die ADF4351-Platine ist für 25MHz ausgelegt, funktioniert erfahrungsgemäß aber in einem weiten Frequenzbereich für Fpfd. Generell gilt:
Es kann also berechtigte Gründe geben, R zu verändern, wenn man z.B. einen 100 MHz-Quarz einbaut, oder wenn man ein engeres Frequenzraster benötigt. Ein geänderter R-Wert wird im EEPROM gespeichert, und geht beim Ausschalten nicht verloren.



Mikrocontroller

Ich beschränke mich seit Ewigkeiten auf PIC-Mikrokontroller, aber da gibt es eine große Auswahl
Die Steuerung des ADF4351 sowie die Linearisierung des Frequenzgangs erfordert einige Berechnungen, die ich nicht in Assembler durchführen möchte. Dafür verwende ich lieber C, und damit kommen PIC12- oder PIC16-Typen nicht mehr in Frage. Als nächst-stärkere PIC-Familie bietet sich die PIC18-Familie an.

Für zukünftige Erweiterungen sollte der PIC ein USB-Interface unterstützen.

Die Kernkomponenten ADF4351 und PE4302 sind 3,3V-Typen, der PE4302 ist aber 5V-tolerant. LCDs gibt es für beide Spannungen, 5V wird aber bevorzugt. Damit fällt eine Festlegung auf eine bestimmte Betriebsspannung für den Controller nicht so schwer. Ich verwende einen 5V-Typ und muss nur die Signalleitungen für den ADF4351 anpassen.

An IO-Ports werden in etwa benötigt:
Da kommen etwa 21 ... 29 Pins zusammen. Auch wenn einige Pins mehrfach verwendet werden können, sorgt doch nur mindestens ein 40-Pin-PIC für eine entspannte Situation.

Kandidaten sind z.B.:
Ich habe mich für den PIC18F4550 entschieden er hat mehr Speicher als der PIC18F4455, was das Programmieren vereinfacht.




Projektstatus

Der Prototyp ist fertig.

Das Gehäuse ist jetzt ein Würfel mit 15 cm Kantenlänge, um im Limit meines 3D-Druckers zu bleiben. Am Gehäuseboden sind die ADF4351-Platine, die PE43702-Platine und der der 20 dB Verstärker plaziert. Die Steuerplatine steht hochkant an der rechten Seite.
Auf der Frontplatte ist nun das Display oberhalb der Tastatur angeordnet. Links von der Tastatur ist der SMA-Ausgang und rechts der Rotary Encoder.

Als Steuerplatine habe ich die 40-Pin-Version eines USB4All eingesetzt, allerdings ohne die USB4all-Firmware. Die Stromversorgung erfolgt deshalb z.Z. über den USB-Anschluss des USB4all-Boards. Der Steuer-PIC ist ein PIC18F4550.
Alle Bords werden mit 5V versorgt. Die Steuerleitungen des ADF4351 enthalten 10 kOhm Reihenwiderstände. Da die Signale auf der ADF4351-Platine mit 10 kOhm-Widerständen nach Masse verbunden sind, reduziert das die Ausgangspegel de PIC-Platine auf maximal 2,5V, was der ADF4351 verträgt.

Bei der Eingabe der Ausgangsleistung über die Tastatur musste ich mich etwas behelfen, da es keine '-'-Taste gibt. Ich gebe den gewünschten Wert nun in dBm ein (also 12 für 12dBm) und drücke dann "B" für positive dB-Werte (+12 dBm) und "C" für negative dB-Werte (-12dBm). Es können also nur ganzzahlige dB-Werte per Tastatur eingegeben werden. Der Controller versucht den besten passenden Wert einzustellen, und zeigt diesen dann in der zweiten LCD-Zeile an. Dahinter wird auch der Wert in Milliwatt bzw. Mikrowatt angezeigt. Auf die Eingabe in mW über die Tastatur habe ich verzichtet.

Über den Rotary Encoder kann die Leistung in 1 dB-Schritten oder 1/10 dB-Schritten verstellt werden. Die Frequenz kann mit dem Rotary Encoder in Schritten von 1 kHz bis zu 1 GHz verstellt werden.

Der Mikrokontroller ermittelt die Frequenz und Leistung, die dem gewünschten (per Keypad oder Rotary-Encoder) Werten am nächsten kommen, und  mit der Hardware einstellbar sind, programmiert ADF4351 und PE43702 entsprechend und zeigt diese Werte dann auch am Display an. Wenn man also z.B. die Leistung mit dem Rotary-Encoder in der 0,1dB-Einstellung um ein oder zwei Stufen verstellt, kann es sein, das gar nichts passiert, und bei der nächsten Stufe die angezeigte Leistung um 0,3dB springt. Das liegt daran, dass derPE43702 die Leistung nur in 0,25dB-Stufen einstellen kann.

Nach dem Einschalten (durch Einstecken des USB-Steckers), zeigt das Display für 3 Sekunden eine Meldung (Typ und Leistungsparameter) und stellt dann eine Frequenz von 1GHz bei einer Leistung von 0dBm ein. Der Ausgang ist noch abgeschaltet, und muss durch die Taste "#" aktiviert werden.




Downloads

  Prototyp:


zurück zu HF , zurück zur Elektronik , Homepage

Autor: sprut
geändert: 09.08.2020
erstellt: 16.02.2019