Inhaltsverzeichnis:

Signalgenerator AD9833 - Gunook
Signalgenerator AD9833 - Gunook

Video: Signalgenerator AD9833 - Gunook

Video: Signalgenerator AD9833 - Gunook
Video: AD9833 Programmable Waveform Generator 2024, Juli
Anonim
Signalgenerator AD9833
Signalgenerator AD9833
Signalgenerator AD9833
Signalgenerator AD9833

Ein Signalgenerator ist ein sehr nützliches Testgerät. Dieser verwendet ein AD9833-Modul und einen Arduino Nano - das ist alles, nicht einmal eine Platine. Optional können Sie ein OLED-Display hinzufügen. Der AD9833 kann Sinus-, Dreieck- und Rechteckwellen von 0,1 Hz bis 12,5 MHz erzeugen - die Software in diesem Projekt ist auf 1 Hz bis 100 kHz beschränkt.

Es gab andere Instructables mit einem Arduino und einem AD9833, hier und hier. Dies ist einfacher und kann als Sweep-Generator verwendet werden. Sweep-Generatoren helfen beim Testen des Frequenzgangs von Filtern, Verstärkern usw. Im Gegensatz zu den anderen Instructables-Designs enthält dies keinen Verstärker oder Amplitudenregler, aber Sie können sie hinzufügen, wenn Sie möchten.

Schritt 1: Einfachster Signalgenerator

Einfachster Signalgenerator
Einfachster Signalgenerator
Einfachster Signalgenerator
Einfachster Signalgenerator
Einfachster Signalgenerator
Einfachster Signalgenerator
Einfachster Signalgenerator
Einfachster Signalgenerator

Für den einfachsten Signalgenerator löten Sie einfach das AD9833-Modul auf die Rückseite des Arduino Nano. Es wird keine Leiterplatte benötigt.

Das von mir gewählte AD9833-Modul ist diesem ähnlich. Ich sage nicht, dass dies der beste oder billigste Anbieter ist, aber Sie sollten einen kaufen, der wie dieses Foto (oder das Foto oben) aussieht.

Die Verbindungen zwischen den Modulen sind:

  • Grundstücke miteinander verbunden
  • D2 = FSync
  • D3 = Klk
  • D4 = Daten
  • D6 = Vcc von AD9833

Der AD9833 wird über den Datenpin D6 des Arduino mit Strom versorgt - der Arduino kann ausreichend Strom liefern. Ich habe einen 100n-Entkopplungskondensator hinzugefügt, weil ich dachte, ich "sollte", aber ich konnte keinen Unterschied feststellen - auf der AD9833-Modulplatine befindet sich bereits ein Entkopplungskondensator.

Wenn Sie ausgefallen sind, machen Sie sich vielleicht Sorgen über "analoge Erde" oder "digitale Erde", aber wenn Sie ausgefallen wären, würden Sie mehr als 4 € ausgeben.

Der einfachste Signalgenerator wird über ein USB-Kabel von einem PC aus gesteuert und mit Strom versorgt. Der USB emuliert einen seriellen Port mit 115200bps (8-Bit, keine Parität). Die Befehle sind:

  • '0'..'9': Stelle in "min"-Frequenz-Array verschieben
  • 'S': Frequenz AD9833 einstellen und Sinuswelle erzeugen
  • 'T': Frequenz einstellen und Dreieckwelle erzeugen
  • 'Q': Frequenz einstellen und Rechteckwelle erzeugen
  • 'R': Zurücksetzen des AD9833
  • 'M': Kopieren Sie das "min"-Frequenz-Array in das "max"-Array
  • 'G': Sweep von "min" zu "max" über 1 Sekunde
  • 'H': Sweep von "min" zu "max" über 5 Sekunden
  • 'I': Sweep von "min" zu "max" über 20 Sekunden

Das Arduino-Programm enthält zwei 6-stellige Arrays "min" und "max. Wenn Sie eine Ziffer übertragen, wird diese in das Array "min" verschoben. Wenn Sie ein 'S' senden, werden die Zeichen des "min"-Arrays in a umgewandelt longint-Frequenz und an den AD9833 gesendet. Also den String senden

002500S

stellt den Ausgang des AD9833 auf eine 2500Hz-Sinuswelle ein. Sie müssen immer alle 6 Ziffern senden. Die minimale Frequenz ist 000001 und die maximale Frequenz ist 999999.

Wenn Sie ein 'M' senden, wird das Array "min" in das Array "max" kopiert. Wenn Sie ein 'H' senden, gibt der AD9833 über 5 Sekunden hinweg wiederholt eine allmählich ansteigende Frequenz aus. Es beginnt mit der "min"-Frequenz und 5 Sekunden später ist die "max"-Frequenz. So

020000M000100SH

Sweeps von 100Hz bis 20kHz. Die Frequenzänderung ist logarithmisch, so dass nach 1 Sekunde die Frequenz 288 Hz beträgt, nach 2 Sekunden 833 Hz, dann 2402, 6931 und 20000. Die Frequenz wird jede Millisekunde geändert.

Die Schleife stoppt, wenn das Arduino ein anderes Zeichen empfängt. Achten Sie also darauf, den Befehl nicht gefolgt von Wagenrücklauf oder Zeilenvorschub zu senden. Dieses zusätzliche Zeichen würde die Schleife beenden. Wenn Sie den Serial Monitor verwenden, gibt es unten rechts eine Box, die zum Beispiel "Both NL & CR" sagen könnte, die (glaube ich) Zeichen nach Ihrem Befehl sendet. Setzen Sie es auf "Kein Zeilenende".

Sie können das Windows EXE-Programm unten herunterladen, das die erforderlichen Befehle sendet, oder Sie können Ihre eigenen schreiben. Die Arduino INO-Datei ist auch hier.

Schritt 2: OLED hinzufügen

OLED hinzufügen
OLED hinzufügen
OLED hinzufügen
OLED hinzufügen
OLED hinzufügen
OLED hinzufügen

Wenn man eine OLED und zwei Tasten hinzufügt, kann der Signalgenerator auch ohne PC alleine arbeiten.

Diejenigen von Ihnen, die mein Oszilloskop Instructable gelesen haben, werden die Ähnlichkeit erkennen. Das Modul AD9833 kann zu meinem Oszilloskop hinzugefügt werden, um ein "Oszilloskop und Signalgenerator in einer Streichholzschachtel" zu erstellen.

Das Display ist ein 1,3-Zoll-OLED mit 3,3 V, das von einem SH1106-Chip über einen I2C-Bus gesteuert wird.

Suchen Sie bei eBay nach 1,3" OLED. Ich möchte keinen bestimmten Verkäufer empfehlen, da Links schnell veraltet sind. Wählen Sie einen aus, der wie dieses Foto aussieht, "I2C" oder "IIC" sagt und vier Pins mit der Bezeichnung VDD GND SCL SDA hat (Einige Displays scheinen die Pins in einer anderen Reihenfolge zu haben. Überprüfen Sie sie. Der richtige Name für die Uhr von I2C ist "SCL", aber bei eBay können die Boards wie meine auf dem Foto mit "SCK" beschriftet werden.)

Eine ausführlichere Beschreibung der OLED-Bibliothek befindet sich in meinem Oszilloskop Instructable in Schritt 8. Sie sollten die Treiberbibliothek SimpleSH1106.zip herunterladen und installieren, die sich in Schritt 8 befindet. (Ich möchte hier keine weitere Kopie hochladen und muss zwei Kopien beibehalten.)

Die INO-Datei kann unten heruntergeladen werden. Die für die OLED verwendeten Pinnummern werden um Zeile 70 deklariert. Wenn Sie mein "Oscilloscope and Signal Generator in a Matchbox" gebaut haben und diese INO-Datei damit testen möchten, werden alternative Pinnummern über ein #define aktiviert.

Ich habe ein Stripboard-Layout für die Schaltung gezeigt. Es gibt zwei Stripboards – eines für den Nano und das AD9833 und eines für das Display. Sie sollten ein Sandwich bilden. Die Platinen werden von der Bestückungsseite dargestellt. Feine flexible Drähte verbinden die beiden Platinen. Befestigen Sie die Platinen zusammen mit angelöteten Abstandshaltern. In meinem Diagramm ist das Kupfer des Stripboards in Cyan dargestellt. Rote Linien sind Drahtverbindungen auf dem Stripboard oder flexible Drähte, die die Boards miteinander verbinden. Ich habe die Strom- und "Signalleitungen" nicht gezeigt.

Das AD9833-Modul wird auf der Kupferseite des Stripboards gelötet - auf der gegenüberliegenden Seite des Nano. Lötstifte auf die Kupferstreifen stecken, dann den AD9833 darauf setzen und anlöten.

Das Display zeigt entweder eine einzelne Frequenz oder die "Min"- und "Max"-Frequenzen an.

Es gibt zwei Drucktasten: eine "Horizontal"-Taste zum Auswählen einer Ziffer der Frequenzen und eine "Vertikal"-Taste zum Ändern dieser Ziffer.

Ich versorge den Signalgenerator von der Schaltung, die ich entwickle - ich habe immer 5V an meinem Arbeitsplatz zur Verfügung.

Schritt 3: Zukünftige Entwicklungen

Zukünftige Entwicklungen
Zukünftige Entwicklungen

Könnte es batteriebetrieben sein? Ja, fügen Sie einfach einen 9V PP3 hinzu, der mit dem RAW-Pin des Nano verbunden ist. Es verwendet normalerweise 20 mA.

Könnte es mit einer einzigen Lithiumzelle betrieben werden? Ich sehe nicht, warum nicht. Sie sollten das OLED Vdd und seinen Pull-Up-Widerstand an die 3,7-V-Batterie anschließen (ich bezweifle, dass der 3,3-V-Ausgang des Arduino richtig funktionieren würde).

Ein Wobbelgenerator ist beim Testen des Frequenzgangs eines Filters nützlicher, wenn Sie Amplitude über Frequenz grafisch darstellen können. Die Messung der Amplitude eines Signals ist schwierig - Sie müssen den Abfall Ihres Hüllkurvendetektors gegen die Welligkeit für niedrige Frequenzen und die Reaktionszeit für hohe Frequenzen abwägen. Nachdem Sie Ihren Amplitudendetektor gebaut haben, können Sie seinen Ausgang in den ADC des Arduino des "Simplest Signal Generator" einspeisen und dann das Ergebnis zusammen mit der aktuellen Frequenz an den PC senden.

Diese Seite ist ein nützlicher Ausgangspunkt oder suchen Sie bei Google nach "Hüllkurvendetektor" oder "Spitzendetektor". In der oben vorgeschlagenen Schaltung würden Sie die Signalfrequenz einstellen, warten, bis sie sich stabilisiert, den Arduino A0-Pin auf den digitalen Low-Ausgang einstellen, auf die Entladung von C warten, A0 auf den Eingang einstellen, warten und dann mit dem ADC messen. Lass mich wissen, wie es dir geht.