Arduino Due Arbiträrer Wellenformgenerator – Leistungsstark, Mehrfrequenz, Linux/Windows-kompatibel
Komponenten und Zubehör
| Komponente | Menge |
|---|---|
| Arduino Due | 1 |
Über das Projekt
Allgemeine Beschreibung
Läuft jetzt auch unter Linux sowie Windows
Analoge Wellenform max. Frequenz: 100 kHz. Rechteckwelle max. Frequenz: 42 MHz.
Tastverhältnis (Duty Cycle) einstellbar von nahezu 0 % bis 100 %
Sehr einfach aufzubauen – siehe Installation unten.
Dies ist ein zweiteiliges Projekt: Das Arduino Due Board selbst und eine Controller-GUI für den PC. Das Arduino Board kann jedoch auch eigenständig mit Potentiometern, Schaltern und LEDs betrieben werden.
Keine zusätzliche Schaltung nötig, obwohl ein optionaler Ausgangsschutzschaltkreis angeboten wird, der das Arduino Board vor versehentlichem Anschluss der Ausgänge an Spannungen bis ca. ±30 V schützen sollte (evtl. sogar mehr).
Mit der Controller-GUI auf dem PC können beliebige Wellenformen gezeichnet, bearbeitet, gespeichert, geöffnet und via USB automatisch an den Arduino Due übertragen werden. Eine umfassende Hilfedatei ist enthalten.
Eine „Stufige Wellenform“ (Stepped Wave)-Funktion ermöglicht die einfache Erzeugung beliebig vieler scharfer (ein Sample breiter) Stufen in der Wellenform. Zusätzlich kann die Ausgabe auf Sinus-, Dreiecks- oder Sägezahnwelle umgeschaltet werden.
Gleichzeitig wird eine Rechteckwelle erzeugt, die entweder synchronisiert oder völlig unabhängig laufen kann. Die Wellen können über Frequenz oder Periode gesteuert werden. Das Tastverhältnis lässt sich von nahezu 0 % bis 100 % einstellen. Oder die Pulsbreite kann konstant gehalten werden (innerhalb der Periodengrenzen).
Die neuen Einstellungen können direkt über die PC-Tastatur oder das Programm-Tastenfeld eingegeben werden. Durch Drücken von „MODE“ wird eine gleitende Einstellung ermöglicht.
Ein Exakter Modus (Exact Mode) für die analoge Welle vermeidet die normalerweise mit Direct Digital Synthesis (DDS) verbundenen „Frequenzstufen“. Dies ermöglicht präzisere Frequenzen, indem auf Frequenzen *zwischen* diesen Stufen zugegriffen wird – die Ausgabe ist im Exact Mode keine Division der Arduino-Taktfrequenz mehr.
Ein (logarithmischer) Frequenz-Sweep für eine oder beide Wellen ist enthalten, sowie ein Timer mit positiver oder negativer Arduino-Ausgabe.
Spezifikationen
Analoge Welle:
- Auflösung: 12 Bit mit bis zu 4096 Wegpunkten (Waypoints)
- Frequenzbereich: 0,05 mHz (20.000 s) bis 100 kHz
- Abtastrate (über 1 kHz mit DMA): Bis zu 1,6 MHz
- Abtastrate (bis 1 kHz): 400 kHz
- Abtastrate im Exact Mode (beliebige Frequenz): 400 kHz
- Minimale Pulsbreite (halber Wellenzyklus):
- Bei 0 % Tastverhältnis: ~350 ns bei beliebiger Frequenz
- Bei 0,01 % Tastverhältnis: Bis zu 2,5–25 µs (ca.)
- – Falls Frequenz > 1 kHz UND Exact Mode oder Sync aktiv: sonst 350 ns
Rechteckwelle:
- Frequenzbereich: 0,05 mHz (20.000 s) bis 42 MHz
- Minimale Pulsbreite:
- Synchronisiert: [0,05 mHz bis 100 kHz] – Bei 0 %: 48 ns; bei 0,01 %: 2,5–25 µs
- Nicht synchronisiert: [0,093 mHz (10.737 s) bis 42 MHz]
- 12 ns von 1,3 kHz bis 42 MHz (PWM)
- 24 ns von 650 Hz bis 1,29999 kHz (PWM)
- 48 ns von 325 Hz bis 649,99999 Hz (PWM)
- 96 ns von 163 Hz bis 324,99999 Hz (PWM)
- Unter 163 Hz (Interrupt): Bei 0 %: 96 ns; bei 0,01 %: 5 µs
Installation
Das GUI-Programm
Das GUI-Programm für Ihren PC ist „portabel“ und muss nicht installiert werden.
- Windows: Entpacken Sie die
.zip-Datei in einen Ordner Ihrer Wahl und erstellen Sie eine Verknüpfung zur.exe-Datei. Hinweis: Die DateiDueAWGController-Win64.zipist für 64-Bit-Systeme gedacht, aber die32.zip-Datei funktioniert oft zuverlässiger, da sie Java eingebettet hat. - Linux: Entpacken Sie die
DueAWGController-LinuxXX.zipin einen Ordner, doppelklicken Sie aufDueAWGControllerLinuxoder fügen Sie es zum Systemmenü hinzu.- Möglicherweise müssen Sie OpenJDK 8 (Java 8) installieren (Debian, Ubuntu, etc.):
sudo apt-get install openjdk-8-jre(Neuere Versionen funktionieren eventuell nicht.) - Sie benötigen evtl. USB-Zugriffsrechte:
sudo usermod -a -G dialout $USER
- Möglicherweise müssen Sie OpenJDK 8 (Java 8) installieren (Debian, Ubuntu, etc.):
- Zwei „arm“-Dateien für Raspberry Pi etc. sind enthalten, wurden aber nicht getestet. Bitte Rückmeldung geben, falls sie funktionieren.
Der Arduino Sketch
Benötigt keine speziellen Bibliotheken – nur die normale Arduino IDE zum Hochladen des Sketches auf den Due. Sofern der PC den Arduino Due erkannt hat (was Voraussetzung für den Upload ist), sollte das GUI-Programm den Arduino beim Start automatisch finden und verbinden – keine manuelle COM-Port-Einstellung nötig. Falls die automatische Erkennung fehlschlägt, ist manuelle Auswahl möglich.
Im Ordner „Arbitrary Waves“ liegen einige Beispiel-Wellendateien (zum Ausprobieren). Neben dem GUI-Programm kann der Wellenformgenerator auch über den Arduino Serial Monitor (115200 Baud) gesteuert werden – Tippen Sie ? für Hilfe.
Alternativ kann die Steuerung über Potentiometer, Schalter & LEDs erfolgen – die Pin-Belegungen stehen am Anfang des Arduino-Sketches.
Wellen-Ausgangs-Pins: Verbinden Sie Arduino Pins 3 und 7 miteinander (Brücke), oder bei äußerster Vorsicht einen niederohmigen Widerstand (47–100 Ω). Rechteckwellen-Ausgang: Pin 7. Analoger Ausgang: DAC0.
Code
WICHTIG: Klicken Sie NICHT auf „Download as zip“.
Zum Herunterladen der Dateien klicken Sie auf „Read More“ unten. HINWEIS: „Download as zip“ lädt nur eine Readme-Datei herunter.
https://github.com/Bruce-Evans/ArduinoDueArbitraryWaveformGeneratorAndController
Schaltpläne
Diese Schaltung kann komplett weggelassen werden. Falls verwendet, sollte sie den Arduino vor versehentlichem Anschluss der Ausgänge an Spannungen bis mindestens ±25 V schützen, ohne die Anstiegs- und Abfallzeiten nennenswert zu erhöhen. D2 und D3 müssen hochstromfähige, schnelle Erholungsdioden sein – Schottky-Dioden waren zu langsam. Die Sicherungen (F1 und F2) können Polyfuses sein.
Herstellungsprozess
- Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
- FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
- DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
- Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
- Touchscreen-Tic-Tac-Toe auf Arduino Due bauen
- JX Wave Generator – Arduino-kompatibler DDS-Oszillator mit OLED-Display
- Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
- Optimierte Stromversorgungslösungen für Arduino-Projekte
- Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
- Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung