www.wernerhirsch.de
Elektronikprojekte

Frequenzzähler / DDS Signalgenerator

- Frequenzzähler 0,25Hz bis ca. 80MHz - 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. 82 EUR

Einführung/Voraussetzungen

Das hier beschriebene Gerät beinhaltet die Funktion eines Frequenzzählers mit einem Messbereich von 0,25Hz bis ca. 80MHz (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,C11,C12) verwendet. Das Programm wird mittels der Datei “ FZ_DDS_P16F876A_V3.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 “ FZ_DDS_P16F876A_V3.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 13 (RC2) des Mikrocontrollers. Für die Frequenz- und Periodenmessung wird die Frequenz im ersten Schritt grob über 2msek 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 32. Nach Auswertung der Grobmessung erfolgt die eigentliche Frequenzmessung über 1sek mit folgenden Vorteilerfaktoren: Grobmessung: >64MHz 32-64MHz 16-32MHz 8-16MHz 4-8MHz 2-4MHz <2MHz Vorteilerfaktor: 64 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 RC2 synchronisiert und über ca. 1s die positiven Flanken gezählt. Nach Ablauf der Sekunde wird bei der nächsten positiven Flanke an Pin RC2 der Timer1 ausgelesen. 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 RC2 aufsummiert, wenn Pin25 (RB4) Low ist. Geht RB4 auf High, wird die Zählung gestoppt. Beim nächsten Low von RB4 wird der Zähler auf 0 gesetzt und die Zählung gestartet. RB4 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 RC2 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. Für analoge und TTL Eingangssignale sind Eingangsstufen mit dem 2-fach High Speed Komparator TLV3502 vorgesehen. Analoge Eingangssignale gelangen über Buchse SV6, C17, R16,R17 und R18, bzw. bei Frequenzen >ca. 160kHz über C18/R17/R18 an den invertierenden Eingang (Pin2) von IC5A. Die Widerstände R16/R17/R18 dienen dabei in Verbindung mit D3/D4 dem Schutz des Eingangs vor Überspannungen. Bei Eingangssignalen bis +/-2,5V beträgt der Eingangswiderstand ca. 1MΩ (R19). Bei größeren Eingangssignalen werden diese durch die Dioden D3/D4 begrenzt und der Strom gegen Masse bzw. die positive Versorgungsspannung abgeleitet. Über R20 wird der Arbeitspunkt von V+/2 = 2,5V an Pin 2 eingestellt (V+ = positive Versorgungsspannung, V+ = 5V). Der nichtinvertierende Eingang (Pin1) wird ebenfalls auf V+/2 über den Spannungsteiler R23/R24 eingestellt. Der TLV3502 hat eine interne Hysterese von 6mV. Das ist in der Regel zu wenig, da schon geringes Rauschen des Eingangssignals die Messung verfälschen würde. Deshalb wird die Hysterese durch den Rückkoppelwiderstand R25 auf ca. 48mV erhöht. Die Hysterese berechnet sich zu: H = To - Tu + 0,006V Mit: H = Hysterese, To = obere Triggerspannung, Tu = untere Triggerspannung To = V+ / ( 1 + 1 / ( Ru/Rr + Ru/Ro )) Tu = V+ / ( 1 + Ro/Rr + Ro/Ru ) Mit: Ro = oberer Widerstand des Spannungsteilers Ru = unterer Widerstand des Spannungsteilers Rr = Rückkoppelwiderstand Der 10pf Kondensator C19 ist optional und reduziert die Schwingneigung bei offenem Messeingang und geringer Hysterese. Ich benötige ihn nicht. Das TTL Signal gelangt über Buchse SV7, R28 und R29 an den invertierenden Eingang (Pin4) von IC5B . R28 und R29 in Verbindung mit D5/D6 schützen IC5B vor Überspannungen. Auch hier liegt der nichtinvertierende Eingang (Pin3) an einem Spannungsteiler (R30/R31) mit Rückkoppelwiderstand (R32). Die obere Triggerschwelle beträgt 1,91V, die untere Triggerschwelle 1,73V, sodass auch noch Signalpegel von ca. 3,3V gemessen werden können. Für Eingangssignale >ca. 30MHz ist ein Vorteilereingang 64:1 mit dem IC U813BS (IC4) vorgesehen. Das Eingangssignal gelangt über Buchse SV5,C13, R14 und C14 an den Eingang (Pin6) von IC4. R14 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. Für die Messung wird RB0 (IC2) auf Low gelegt. Wenn der Vorteiler Eingang nicht verwendet wird, geht RB0 (IC2) auf High, dadurch wird das Signal weitestgehend abgeschaltet. Die nebenstehende Grafik zeigt die Eingangsempfindlichkeit der Eingänge in Abhängigkeit von der Frequenz. Die Bedienung des Frequenzzählers und DDS Signalgenerators erfolgt über die Bedientaster Ta1-Ta6. Die Taster liegen an den Pins 22 (RB1) bis 27 (RB6). RB1-RB6 sind als Eingänge geschaltet und werden durch interne Pull-Up Widerstände auf High gehalten. Wird ein Taster gedrückt, wird der entsprechende Eingang auf Masse gezogen. Für den VCO Betrieb des DDS Generators (VCO = Voltage Controlled Oscillator ) wird an Pin2 (RA0) des PIC die Spannung am Schleifer des Potentiometers P1 mit 10 Bit Auflösung gemessen und gemäß Menüeinstellungen als Frequenz am DDS Generator ausgegeben. Zur Glättung wird der Mittelwert aus 16 Einzelmessungen gebildet, bevor die Messung intern weiterverarbeitet wird. Über die Steckverbindung SV1 wird die DDS Signalgeneratorplatine angeschlossen. Neben der +/-5V Versorgungsspannung beinhaltet die Verbindung die Chip Select Signale des DDS Chips (IC7), des DAC (Digital Analog Converter, IC10) und des Schieberegisters (IC12), sowie deren serielle Ansteuerung (CLK/DAT). Zusätzlich werden für IC13 (TTL Ausgang) eigene Versorgungsspannungen, ein Ein/Aus Signal und das DDS Signal mit TTL Pegel zur Frequenzmessung übertragen (siehe auch Abschnitt "DDS Signalgenerator"). Als Display können in der Regel die meisten LCD Displays mit 2x16 Zeichen und 8 Bit Ansteuerung verwendet werden, ggf. muss das Platinenlayout angepasst werden. In dem ausgeführten Gerät wurde das LCD Displays LCD 162C LED von Reichelt verwendet. Die LCD Displays benötigen eine Spannung Vo zur Kontrasteinstellung von ca. 0,3 Volt, die über R11 eingestellt wird (für die Inbetriebnahme auf 0,0 Volt einstellen und dann verändern bis der Kontrast optimal ist). Für die LED Beleuchtung wird ein Vorwiderstand R12 benötigt, der je nach LCD Typ und gewünschter Helligkeit zwischen ca. 33 Ohm und 1 kOhm betragen kann. Die an das Display zu sendenden 8 Bit Daten werden seriell vom PIC über Pin 17 und 18 (17 = clock, 18 = data) an das Schieberegister 74HC164 (IC3) übertragen und dort parallel ausgegeben. Mit der negativen Flanke an Pin 15 des PIC (Display: Pin Enable) werden die parallelen Daten DB0-DB7 in das Display geladen. Über Pin 16 des PIC (Display: Pin RS) wird festgelegt ob die Daten einer Adresse oder einem Zeichen entsprechen.

Stromversorgung

Die Schaltung benötigt eine symmetrische Versorgungsspannung von +/-5V. In der gezeigten Schaltung wird aus der Eingangsspannung von 12-18V eine Spannung von 10V erzeugt und diese dann in 2x5V aufgeteilt, wobei die Mittenspannung auf Masse gelegt wird. IC1B arbeitet in Verbindung mit T1 als Spannungsregler mit ZD2 als Referenzspannungsquelle. Die benötigten 10V werden mittels R3 eingestellt. ZD1 begrenzt die maximale Ausgangsspannung auf ca.11,3V und dient als "Notbremse" für den Fall einer zu hohen Eingangsspannung. Wer mit höheren Eingangsspannungen als 18V arbeiten möchte sollte R1 vergrößern. IC1A regelt in Verbindung mit T2 und T3 die gesplitteten 10V, sodass bezogen auf Masse die benötigten +/-5V entstehen. T1-T3 sollten isoliert auf einem kleinen Kühlblech montiert werden. Der Stromverbrauch der Schaltung liegt bei ca. 140 mA (ohne Last). Natürlich können auch andere Methoden zur Stromversorgung verwendet werden, soweit diese eine stabile +/-5V Versorgung mit geringer Restwelligkeit sicherstellen.
Frequenzzähler / DDS Signalgenerator