Inhaltsverzeichnis:

Funktionsgenerator: 12 Schritte (mit Bildern)
Funktionsgenerator: 12 Schritte (mit Bildern)

Video: Funktionsgenerator: 12 Schritte (mit Bildern)

Video: Funktionsgenerator: 12 Schritte (mit Bildern)
Video: Billig oder Preiswert? FY6800 60 MHz Funktionsgenerator: Test + Oszilloskop + Aufschrauben 2024, Juli
Anonim
Funktionsgenerator
Funktionsgenerator
Funktionsgenerator
Funktionsgenerator

Dieses anweisbare beschreibt das Design des Funktionsgenerators basierend auf der analogen integrierten Schaltung MAX038 von Maxims

Der Funktionsgenerator ist ein sehr nützliches Werkzeug für die Elektronik-Freaks. Es wird zum Abstimmen von Resonanzkreisen, zum Testen von Audio- und Videogeräten, zum Entwerfen von analogen Filtern und für viele andere verschiedene Zwecke benötigt.

Heute gibt es zwei Haupttypen von Funktionsgeneratoren; digital, (DSP basiert, DDS…) die immer häufiger verwendet werden und analog, das waren die Ursprünge.

Beide Arten haben ihre Vor- und Nachteile. Die digitalen Generatoren können Signale mit sehr stabiler Frequenz erzeugen, haben aber Probleme damit, sehr reine Sinussignale zu erzeugen (was für analoge kein Problem ist). Auch die hauptsächlich auf dem DDS-Ansatz basierenden Spreizfunktionsgeneratoren haben keinen so großen Frequenzerzeugungsbereich.

Ich wollte schon lange einen sinnvollen Funktionsgenerator entwerfen, der einige der Vorteile beider Generatortypen (analog und digital) irgendwie vereinen kann. Ich beschloss, das Design auf dem Maxim-Chip MAX038* zu basieren.

* Hinweis - dieser Chip wird von Maxim nicht mehr produziert und verkauft. Es ist veraltet. Es ist immer noch möglich, es bei eBay, Aliexpress und anderen Websites für elektronische Komponenten zu finden.

Es gibt auch andere analoge Funktionsgenerator-Chips (XR2206 von Exar, icl8038 von Intersil), aber ich hatte

ein MAX038 verfügbar, und ich habe ihn verwendet. Die digitalen Funktionen des Funktionsgenerators wurden von einem Atmega328-Chip ausgeführt. Seine Funktionen sind die folgenden:

  • steuert die Frequenzbereichsauswahl
  • steuert die Signalart (Sinus, Rechteck, Dreieck, Sägezahn)
  • misst die Amplitude des Signals
  • misst den DC-Offset
  • misst die Frequenz des Signals
  • misst den THD des Sinussignals im Audiobereich (dies muss noch umgesetzt werden)
  • zeigt all diese Informationen auf einem 16x2 Zeichen LCD-Display an.

Schritt 1: MAX038 Beschreibung

MAX038 Beschreibung
MAX038 Beschreibung

Das Datenblatt des MAX038 habe ich beigefügt. Dort sind die wichtigsten Chipparameter zu sehen:

♦ 0,1 Hz bis 20 MHz Betriebsfrequenzbereich

♦ Dreieck-, Sägezahn-, Sinus-, Rechteck- und Pulswellenformen

♦ Unabhängige Frequenz- und Duty-Cycle-Einstellungen

♦ 350 bis 1 Frequenz-Sweep-Bereich

♦ 15% bis 85% variabler Arbeitszyklus

♦ Niederohmiger Ausgangspuffer: 0.1Ω

♦ Niedrige Temperaturdrift von 200 ppm/°C

Eine weitere wichtige Anforderung ist die Notwendigkeit einer dualen Versorgung (±5V). Die Ausgangsamplitude ist fest (~ 2 VP-P mit 0 V DC Offset).

Auf Seite 8 des Datenblattes ist das Blockschaltbild des Chips zu sehen. Auf Seite 11 ist die einfachste Schaltung zu sehen, die zur Erzeugung von Sinussignalen verwendet werden kann. Diese Schaltung wurde als Grundlage für das Design des Funktionsgenerators verwendet.

Schritt 2: Die Schaltung …

Die Rennbahn …
Die Rennbahn …

Auf dem Bild ist die Schaltung des Funktionsgenerators dargestellt Ich habe dieses Bild mit höchstmöglicher Auflösung erstellt, um sicherzustellen, dass jeder.device-Wert richtig gelesen werden kann. Der Schaltplan sieht ziemlich komplex aus und zum besseren Verständnis werde ich seine Hauptteile separat erklären. Viele Leser könnten mir vorwerfen, dass die Schaltung zu redundant ist. Das ist wahr. Zunächst sieht man, dass es zwei MAX038-Chips enthält. Der Grund dafür ist, dass die Leiterplatte beide Gehäusetypen SO und DIP unterstützt. Die Redundanz zeigt sich auch in einigen Funktionen -

1) LEDs zeigen den aktuell aktiven Frequenzbereich an, er wird aber auch auf dem LCD angezeigt;

2) LEDs werden auch verwendet, um den Signaltyp anzuzeigen, aber auch das LCD zeigt diese Informationen an

Das Design ist auf diese Weise gemacht, um dem Benutzer mehr Flexibilität zu ermöglichen - auf Wunsch könnte er das LCD nicht verwenden oder kann einfach auf das Löten von LEDs verzichten. Ich habe sie gelötet, um die Funktionalität während der Designphasen debuggen zu können.

Es ist auch zu bemerken, dass ich viele Opamps verwende. Einige davon können problemlos weggelassen werden – insbesondere die Puffer. In der heutigen Zeit bieten die Opamps selbst große Redundanz - in einem Paket finden Sie 2, 4 sogar 8 separate Verstärker, und dies zu einem relativ niedrigen Preis. Warum sollte man sie nicht verwenden?

Redundant sind auch die Siebkondensatoren - jeder verwendete Analogchip besitzt eine eigene Kondensatorbank (Tantal + Keramikkondensatoren für beide Versorgungen). Einige davon können auch weggelassen werden.

Schritt 3: Schaltungserklärung - Netzteil (1)

Schaltungserklärung - Netzteil (1)
Schaltungserklärung - Netzteil (1)

Wie gesagt, dieser Generator benötigt eine doppelte Versorgung. Die positive Spannung wird durch die Verwendung des linearen Spannungsreglers 7805 erzeugt. Die negative Versorgung wird vom 7905-Chip erzeugt. Der mittlere Abgriffspunkt des 2x6V Transformators ist mit der gemeinsamen Masse der Platine verbunden. Die erzeugten Stromversorgungen - sowohl das Positive als auch das Negative - werden durch Unterlegkeile auf analog und digital getrennt. Zwei LEDs zeigen das Vorhandensein jeder Versorgung an.

Schritt 4: Schaltungserklärung - Frequenzbereichssteuerung (2)

Schaltungserklärung - Frequenzbereichssteuerung (2)
Schaltungserklärung - Frequenzbereichssteuerung (2)

Um einen großen Frequenzbereich abzudecken, wird eine Mehrfachkondensatorbank verwendet. Die Kondensatoren haben unterschiedliche Werte und definieren unterschiedliche Frequenzunterbereiche. Nur einer dieser Kondensatoren wird während der Arbeit verwendet - seine Bodenplatte wird durch einen MOS-Transistorschalter geerdet. Welche Kondensator-Bodenplatte geerdet werden soll, wird vom Atmega328 durch die Verwendung des Demultiplexer-Chips 74HC238 gesteuert. Als MOS-Schalter habe ich BSS123-Transistoren verwendet. Die Hauptanforderung für diesen Schalter besteht darin, einen niedrigen Ron und eine möglichst geringe Drainkapazität zu haben. Die digitale Steuerung der Kondensatorbank kann entfallen - die Platine enthält Löcher zum Anlöten der Drähte für den mechanischen Drehschalter.

Schritt 5: Schaltungserklärung - die Frequenzanpassung (3)

Schaltungserklärung - die Frequenzanpassung (3)
Schaltungserklärung - die Frequenzanpassung (3)

Auf dem Bild sind die Frequenz- und Duty-Cycle-Steuerungsschaltung gezeigt. Dort habe ich den Standard-Operationsverstärker LM358 (Doppelverstärker in einem Paket) verwendet. Ich habe auch zwei 10K-Potentiometer verwendet.

Der MAX038-Chip erzeugt eine interne Spannungsreferenz von 2,5 V, die normalerweise als Referenz für alle Einstellungen verwendet wird.

Diese Spannung wird am invertierenden Eingang von IC8a angelegt und erzeugt eine negative Spannungsreferenz, die für den DADJ (Duty Cycle Adjustment) verwendet wird. Beide Spannungen werden am Potentiometer für den DADJ angelegt, dessen mittlerer Abgriff gepuffert und an den DADJ-Pin des MAX038-Chips angelegt wird. Der Jumper JP5 kann verwendet werden, um die DADJ-Funktion zu deaktivieren, wenn er mit Masse verbunden ist. Die "Kurs"-Frequenzsteuerung erfolgt durch Ändern des Stroms, der in MAX038 "IIN"-Pin aufgenommen / bezogen wird. Dieser Strom wird durch den Widerstand R41 und die Ausgangsspannung des Operationsverstärkers definiert, die den mittleren Abgriff des Kursfrequenzsteuerungspotentiometers puffert. All dies kann durch ein einzelnes Potentiometer (in Reostat-Verbindung) zwischen den Pins REF und IIN MAX038 ersetzt werden.

Schritt 6: Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)

Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)
Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)
Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)
Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)
Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)
Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)
Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)
Schaltungserklärung - Amplitudensteuerung, SYNC-Signalerzeugung… (4)

Wie im Datenblatt beschrieben, hat das Ausgangssignal des MAX038 eine Amplitude von ~1 V bei einer Gleichspannung gleich dem Erdpotential.

Ich wollte die Möglichkeit haben, die Signalamplitude zu steuern und den DC-Offset selbst definieren zu können. Als zusätzliches Feature wollte ich ein SYNC-Signal mit CMOS-Pegeln parallel zum Ausgangssignal haben. Standardmäßig erzeugt der MAX038-Chip ein solches Signal, aber im Datenblatt habe ich gelesen, dass, wenn diese Funktion aktiviert ist (was bedeutet - DV+-Pin an 5V angeschlossen), einige Spitzen (Rauschen) im analogen Ausgangssignal beobachtet werden können es so sauber wie möglich und aus diesem Grund habe ich das SYNC-Signal extern erzeugt. Die Platine ist so ausgeführt, dass der DV+ Pin problemlos mit der Hauptversorgung gebrückt werden kann. Der SYNC-Pin wird auf den BNC-Anschluss geführt - es müssen nur 50 Ohm Widerstand angelötet werden. In diesem Fall kann die SYNC-Signalerzeugungsschaltung weggelassen werden. Wie Sie sehen, verwende ich hier auch Doppelpotentiometer, die jedoch nicht parallel geschaltet sind. Der Grund dafür ist - ich messe die Amplitude relativ. Die Spannung am Mittelpunkt eines Potentiometers wird vom Atmega328 ADC erfasst und die Signalamplitude basierend auf diesem Wert berechnet. Natürlich ist diese Methode nicht sehr genau (sie beruht auf der Abstimmung beider Potentiometerabschnitte, was nicht immer vorkommt), aber für meine Anwendungen reicht sie aus. In dieser Schaltung arbeitet IC2A als Spannungspuffer. IC4A auch. Der Operationsverstärker IC2B arbeitet als Summierverstärker - er bildet das Ausgangssignal des Funktionsgenerators als Summe der Offsetspannung und des Hauptsignals mit angepasster Amplitude. Der Spannungsteiler R15. R17 erzeugt ein geeignetes Spannungssignal zur Messung des DC-Hauptsignal-Offsets. Es wird vom Atmega328 ADC erkannt. Der Operationsverstärker IC4B arbeitet als Komparator - er steuert den Inverter der SYNC-Generation, der durch die beiden MOS-Transistoren (BSS123 und BSS84) realisiert wird. Der U6 (THS4281 - Texas Instruments) verschiebt das vom MAX038 DC erzeugte Ausgangssignal um 2,5 V und verstärkt es um das 1,5-fache. Das so generierte Signal wird vom AVR-ADC erfasst und mit dem FFT-Algorithmus weiterverarbeitet. In diesem Teil habe ich hochwertige Rail-to-Rail-Opamps mit 130 MHz Bandbreite (TI - LMH6619) verwendet.

Um leicht zu verstehen, wie genau die SYNC-Signalerzeugung funktioniert, füge ich einige Bilder von LTSpice-Simulationen der Schaltung bei. Auf dem dritten Bild: das blaue Signal ist die Offsetspannung (Eingang des IC2B). Das grüne ist das Ausgangssignal mit angepasster Amplitude. Die rote ist das Ausgangssignal des Funktionsgenerators, die cyanfarbene Kurve ist das SYNC-Signal.

Schritt 7: PCB-Design

PCB-Design
PCB-Design

Ich habe "Eagle" für das Design der Platine verwendet. Ich habe die Platinen bei "PCBway" bestellt. Sie brauchten nur vier Tage, um die Bretter zu produzieren und eine Woche, um sie zu liefern. Ihre Qualität ist hoch, und der Preis ist extrem niedrig. Ich habe nur 13 USD für 10 Leiterplatten bezahlt!

Außerdem konnte ich ohne Preiserhöhung auch andersfarbige Platinen bestellen. Ich habe gelbe gewählt:-).

Ich hänge die Gerber-Dateien nach den Designregeln von "PCBway" an.

Schritt 8: Löten

Image
Image
Löten
Löten
Löten
Löten

Zuerst habe ich die Stromversorgungsschaltkreise gelötet.

Nach dem Testen des Versorgungsblocks habe ich den Atmega328-Chip mit seinen unterstützenden Geräten gelötet: Quarz, Kondensatoren, Filterkappen und den ISP-Anschluss. Wie Sie sehen, habe ich einen Jumper in der Zuleitung des AVR-Chips. Ich trenne es, wenn ich den Chip über den ISP programmiere. Ich verwende dafür den USBtiny-Programmierer.

Als nächsten Schritt habe ich den Demux-Chip 74HC238 gelötet, die LEDs zeigen den Frequenzbereich an. Ich habe ein kleines Arduino-Programm in den Atmega-Chip geladen, das das Multiplexing testete. (siehe Video unter dem Link oben)

Schritt 9: Löten…

Löten…
Löten…
Löten…
Löten…
Löten…
Löten…

Als nächsten Schritt lötete ich die im DC-Modus arbeitenden Opamps (LM358) und die Frequenz- und DADJ-Einstellpotentiometer und überprüfte alle ihre Funktionen.

Weiterhin habe ich die BSS123 Schalter, die frequenzbestimmenden Kondensatoren und den MAX039 Chip gelötet. Ich habe den Funktionsgenerator getestet, der das Signal am nativen Chip-Signalausgang untersucht. (Sie können mein altes sowjetisches, Baujahr 1986, noch funktionierendes Oszilloskop in Aktion sehen:-))

Schritt 10: Mehr Löten…

Mehr Löten…
Mehr Löten…
Mehr Löten…
Mehr Löten…
Mehr Löten…
Mehr Löten…

Danach habe ich die Buchse für das LCD-Display gelötet und mit der "Hello world"-Skizze getestet.

Ich lötete die anderen verbleibenden Opamps, Kondensatoren, Potentiometer und die BNC-Anschlüsse.

Schritt 11: Software

Image
Image
Software
Software

Zum Erstellen der Atmega328-Firmware habe ich die Arduino IDE verwendet.

Für die Frequenzmessung habe ich die Bibliothek "FreqCounter" verwendet. Die Skizzendatei und die verwendete Bibliothek stehen zum Download bereit. Ich habe spezielle Symbole erstellt, um den aktuell verwendeten Modus (Sinus, Rechteck, Dreieck) darzustellen.

Auf dem obigen Bild sind die auf dem LCD angezeigten Informationen zu sehen:

  • Frequenz F=xxxxxxxx in Hz
  • Frequenzbereich Rx
  • Amplitude in mV A=xxxx
  • Offset in mV 0=xxxx
  • Art des Signals x

Der Funktionsgenerator hat auf der Vorderseite auf der linken Seite zwei Druckknöpfe - sie dienen der Änderung des Frequenzbereichs (Step Up -Step Down). Rechts davon befindet sich der Schiebeschalter zur Steuerung des Modus, dahinter von links nach rechts das Potentiometer zur Steuerung der Frequenz (Gang, Fein, DADJ), Amplitude und des Offsets. In der Nähe des Offset-Einstellpotentiometers befindet sich der Schalter, der verwendet wird, um zwischen dem fest auf 2,5 V DC eingestellten Offset und dem abgestimmten zu kommutieren.

Ich habe einen kleinen Fehler im Code "Generator.ino" in der ZIP-Datei gefunden - die Symbole für Sinus- und Dreieckswellenformen wurden vertauscht. In der hier angehängten Einzeldatei "Generator.ino" ist der Fehler korrigiert.

Schritt 12: Zu tun …

Image
Image

Als letzten Schritt beabsichtige ich, ein zusätzliches Feature zu implementieren - die Messung des THD des Audiofrequenz-Sinussignals in Echtzeit mit FFT. Dies ist erforderlich, da das Tastverhältnis des Sinussignals von 50% abweichen kann, was durch interne Chip-Fehlanpassungen und andere Gründe verursacht werden kann und harmonische Verzerrungen erzeugen könnte. Das Tastverhältnis kann mit dem Potentiometer eingestellt werden, aber ohne das Signal am Oszilloskop oder Spektrumanalysator zu beobachten, ist es unmöglich, seine Form fein zu trimmen. Eine Berechnung des THD basierend auf dem FFT-Algorithmus könnte das Problem lösen. Das Ergebnis der THD-Berechnungen wird auf dem LCD oben rechts im leeren Bereich angezeigt.

Auf dem Video ist das Spektrum des vom MAX038 erzeugten Sinussignals zu sehen. Der Spektrumanalysator basiert auf dem Arduino UNO-Board + 2,4 TFT-Shield. Der Spektrumanalysator verwendet die von Anatoly Kuzmenko entwickelte SpltRadex Arduino-Bibliothek, um FFT in Echtzeit durchzuführen.

Ich habe mich immer noch nicht entschieden - diese Bibliothek zu verwenden oder die von den Musiclabs erstellte FHT-Bibliothek zu verwenden.

Ich beabsichtige, die Informationen aus den Frequenzmessermessungen zu verwenden, um das richtige Abtastfenster zu berechnen und die Verwendung zusätzlicher Fenster während der FFT-Berechnungen auszusetzen. Ich muss nur etwas Freizeit finden, um dies zu erreichen. Ich hoffe auf baldige Ergebnisse….

Empfohlen: