www.wernerhirsch.de Elektronikprojekte Home Elektronikprojekte Sonstiges Kontakt/Copyright/Haftung

Frequenzzähler / DDS Signalgenerator

- Frequenzzähler 0,25Hz bis ca. 50MHz - optional bis 1GHz (bei HF-gerechtem Aufbau) - DDS-Signalgenerator 0,1Hz bis maximal 12,5MHz mit AD9833 - Signalformen Sinus, Dreieck, Rechteck und TTL-Ausgang - VCO-/Wobbel/Burst Funktion - Materialkosten ca. 80 EUR

Einführung/Voraussetzungen

Das hier beschriebene Gerät beinhaltet die Funktion eines Frequenzzählers mit einem Messbereich  von 0,25Hz bis ca. 50MHz (optional bei HF-gerechtem Aufbau bis 1GHz) und eines DDS-Signalgenerators (Sinus, Dreieck, Rechteck) von ca. 0,1Hz bis maximal 12,5MHz. Für den Frequenzzähler bzw. die Steuerung des DDS-Signalgenerators wird ein Mikrocontroller PIC16F876A verwendet, der mit der weiter unten aufgeführten HEX-Datei programmiert werden muss. Ist kein geeignetes Programmiergerät vorhanden, kann ein einfaches Gerät  (JDM-Programmer) selbst gebaut werden. Voraussetzung hierfür ist ein PC mit "echter" 9-poliger RS232 Schnittstelle (USB auf RS232 Adapter funktionieren in der Regel nicht). Für den DDS-Signalgenerator wird der Chip AD9833 verwendet, der leider nur als SMD Version im MSOP10 Gehäuse mit einem Pin Abstand von nur 0,5mm verfügbar ist. Ich habe den Chip auf eine Adapterplatine gelötet um auf das 2,54mm Raster der von mir verwendeten Streifenrasterplatinen zu kommen. Für das Löten des Chips sind eine ruhige Hand, gute Augen (ggf. eine gute Lupe mit 3-5 facher Vergrößerung), viel Licht und ein Lötkolben mit feiner Spitze erforderlich. Wer das Löten des Chips vermeiden möchte, kann sich ggf. eine Generatorplatine über Ebay aus China bestellen, auf der neben dem  AD9833 auch der benötigte 25MHz Oszillator sitzt. Ob die Platinen was taugen kann ich nicht beurteilen.

Beschreibung der Schaltung

Die Elektronik besteht im Wesentlichen aus dem Frequenzzähler mit 4-Kanal Eingangswahl (TTL, Analog, DDS und Vorteiler), Eingangssignalkonditionierung, Eingabetaster und Display, dem Stromversorgungsteil und dem DDS Signalgenerator.

Frequenzzähler

Für den Frequenzzähler und die Steuerung des DDS Signalgenerators wird ein Mikrocontroller PIC16F876A (IC2) mit 16MHz Quarzoszillator (Q1,C12,C13) verwendet. Das Programm wird mittels der Datei  “Frequenzzaehler_P16F876A_V2.hex“  in den Mikrocontroller geladen. Die Datei befindet sich in dem Download Ordner am Ende der Seite. Wer noch Änderungen am Programm vornehmen möchte, findet in dem Ordner auch die Assembler-Datei  “Frequenzzaehler_P16F876A_V2.asm“. Über die 5-polige Stiftleiste SV2 kann der PIC im eingebauten Zustand in der Schaltung programmiert werden (ICSP = In Circuit Serial Programming), ich empfehle jedoch die Programmierung im Programmiergerät ( z.B. JDM Programmer ). Für ICSP muss die Schaltung mit Spannung versorgt sein. Wenn auf die ICSP Option verzichtet wird, kann SV2 entfallen. Das zu messende Eingangssignal liegt an den Pins 6 (RA4) und 21 (RB0) des Mikrocontrollers. Für die Frequenz- und Periodenmessung wird die Frequenz im ersten Schritt grob über 1msek an Pin RA4 gemessen. Intern kann der PIC nur Frequenzen bis ca. 2,4MHz zählen, die Frequenz an RA4 kann jedoch vor dem eigentlichen Zählvorgang intern vorgeteilt werden, sodass wesentlich höhere Frequenzen gemessen werden können. Die Grobmessung erfolgt mit einem Vorteilerfaktor von 16. Nach Auswertung der Grobmessung erfolgt die eigentliche Frequenzmessung über 1sek mit  folgenden Vorteilerfaktoren: Grobmessung: >32MHz   16-32MHz   8-16MHz    4-8MHz    2-4MHz    <2MHz Vorteilerfaktor:       32 16         8    4         2              1 Die Frequenzmessung hat eine Genauigkeit von ca. 2ppm für Frequenzen >1MHz, bei 100kHz beträgt die Genauigkeit ca. 20 ppm. Ergibt die Grobmessung eine Frequenz kleiner ca.100-120kHz wird eine kombinierte Frequenz-/Periodenmessung durchgeführt. Hierfür wird der interne Timer1 mit der positiven Flanke des Eingangssignals an Pin RB0 synchronisiert und über ca. 1s die positiven Flanken gezählt. Nach Ablauf der Sekunde wird bei der nächsten positiven Flanke an Pin RB0 der Timer1 gestoppt. Somit erhält man für eine genaue Anzahl n positiver Flanken die Zeit t mit einer Genauigkeit von ca. 2ppm und damit auch die Frequenz (f=n/t) bzw. die Periode (p=t/n) nach der Division mit einer Genauigkeit von ca.2ppm. Wird nach ca. 4,2 Sekunden (entspricht 0,24Hz) keine positive Flanke detektiert, wird die Messung abgebrochen. Je nach gewähltem Messmodus wird die Frequenz in Periode (p=1/f) bzw. Periode in Frequenz (f=1/p) umgerechnet. Die Anzeige auf dem Display erfolgt jeweils mit 7 Stellen, das ist etwas mehr als die Grundgenauigkeit der Messung. Der interne Vorteilerfaktor sowie der gewählte Messeingang werden in der unteren linken Ecke des Displays angezeigt, bei Wahl des DDS Eingangs zusätzlich die Signalform und der Signalpegel. In der Betriebsart “Zähler“ werden die positiven Flanken an RB0 aufsummiert, wenn Pin28 (RB7) Low ist. Geht RB7 auf High, wird die Zählung gestoppt. Beim nächsten Low von RB7 wird der Zähler auf 0 gesetzt und die Zählung gestartet. RB7 wird normalerweise durch einen internen Pull-up Widerstand auf High gehalten und kann durch einen Schließer Kontakt oder einen npn Transistor auf Low gezogen werden. Die maximale Zählfrequenz an RB0 beträgt ca. 70kHz. Über den 8-Kanal Datenmultiplexer 74HC151 (IC8) kann einer von 4 vorgesehenen Messeingängen zum PIC durchgeschaltet werden. Die Adressierung erfolgt über ein 3-Bit Wort an den Pins 11 bis 9. Für die 4 Eingänge werden nur die Bits 0 und 1 (Pins 11+10) benötigt, daher ist Bit 2 fest als 0 verdrahtet, d.h. Pin 9 liegt auf Masse. Das TTL Signal gelangt über Buchse SV7, R36 und R37 an Pin 1 des 6-fach Schmitt Trigger 74HC14 (IC7). R36 und R37 in Verbindung mit D13/D14 schützen IC7 vor Überspannungen. Der 74HC14 hat eine Hysterese von typ. 1V. Die positive Schwellenspannung beträgt ca. 2,6V und die negative Schwellenspannung ca. 1,6V, sodass auch noch Signalpegel von ca. 3,3V gemessen werden können. Für analoge Eingangssignale ist ein 2-stufiger Vorverstärker mit den HF-OpAmps AD8055 vorgesehen. Das Eingangssignal gelangt über Buchse SV6, C17, R17 und R18, bzw. bei Frequenzen >ca. 70kHz über C18/R18 an den nichtinvertierenden Eingang (Pin3) von IC5. Die Widerstände R17/R18 dienen dabei in Verbindung mit D3/D4, ZD3/ZD4, C19/C20 und R19/R20 dem Schutz des Eingangs vor Überspannungen. In der gewählten Konfiguration darf die Spannung an Pin 3 maximal +/-4,5V betragen, damit die zulässige Differenzspannung der Eingänge (Pins 2+3) von +/-2,5V nicht überschritten wird. Der Eingangswiderstand ist mit R21 auf 100kOhm festgelegt. Parallel zu R21 liegt C21 zur Vermeidung von Schwingungen. R22/R23 dienen der Offsetkorrektur des OpAmp Ausgangs. Die Verstärkung der 1.Stufe ist 4,7-fach bei Eingangssignalen <ca. 250mVpp und wird bestimmt durch R24/R25. Bei größeren Eingangssignalen wird die Verstärkung durch die antiparallelen Dioden D5/D6 reduziert. Dieses schützt die Eingänge (Pins 2+3) vor zu hohen Differenzspannungen. Das Ausgangssignal wird über R26 und D7/D8 auf ca. 1,4Vpp begrenzt und geht auf den nichtinvertierenden Eingang der 2.Stufe (IC6, Pin3). Die Verstärkung beträgt ebenfalls 4,7-fach, d.h. die Gesamtverstärkung bei kleinen Signalpegeln ist 22-fach. Damit wird die Hysterese des nachgeschalteten Schmitt Trigger (IC7) von typ. 1V  bei Eingangssignalen >ca. 45mVpp überschritten. Bei höheren Frequenzen verschlechtert sich die Empfindlichkeit (siehe Grafik). Das Ausgangssignal von IC6  wird mittels R29 und D9-D12 auf ca. 3Vpp begrenzt. Über C28/C29 und R34 gelangt das Signal an den Eingang Pin3 des Schmitt Trigger (IC7). Mit R33 wird das Signal auf den mittleren Pegel der Schwellenspannungen von IC7 eingestellt. Der mittlere Pegel beträgt ca. 2,1V ( 1,6V/2 + 2,6V/2 = 2,1V ). Für  Eingangssignale >ca. 30MHz ist ein Vorteilereingang 64:1 mit dem IC U813BS (IC4) vorgesehen. Das Eingangssignal gelangt über Buchse SV8, R15 und C14 an den Eingang (Pin6) von IC4. R15 in Verbindung mit D1/D2 dient dem Schutz des Eingangs vor Überspannungen. Das Ausgangssignal mit 1/64stel der Eingangsfrequenz liegt an Pin 3 und wird über L1 an die Basis von T4 geführt und auf TTL Pegel verstärkt. Bei Eingangssignalen < ca. 20MHz schwingt der Ausgang undefiniert. Erst bei Frequenzen oberhalb von ca. 20MHz ist eine Messung möglich, wobei sich die Eingangsempfindlichkeit mit steigender Frequenz verbessert.
Frequenzzähler / DDS Signalgenerator