Benutzer-Werkzeuge

Webseiten-Werkzeuge


arduino:spektrumanalysator

Dies ist eine alte Version des Dokuments!


Spektrumanalysator mit NeoPixeln

Momentan baue ich einen Audio Spectrum Analyzer auf Basis eines Teensy 3.6 und den Audio Adaptor Board. Das Ergebnis der Fast-Fourier-Analyse wird auf zwei NeoPixel-Streifen dargestellt.

Funktionen:

  • Analoger Signaleingang
  • Berechnet eine Fast-Fourier-Analyse für den rechten und linken Audiokanal
  • Stellt das Spektrum eines Stereoaudiosignals auf zwei NeoPixel-Streifen dar (ein Streifen pro Kanal)
  • Die Eingangsempfindlichkeit wird automatisch eingestellt
  • Die Anzahl der Bänder kann eingestellt werden
  • Es kann eingestellt werden, auf welcher Seite der rechte und linke Kanal angezeigt wird (für Überkopfmontage)
  • Es kann eingestellt werden, ob das tiefste Band für den linken Kanal links oder rechts auf dem NeoPixel-Streifen dargestellt wird

Elektrischer Aufbau

Das Audioadapter-Board hat leider keinen digitalen Audioeingang. Daher muss ich das vom Computer kommende digitale Audiosignal zunächst in ein analoges Signal umwandeln.

Für die Stromversorgung wird ein Pololu Step-Up-Stept-Down-Regler mit einer Eingangsspannung zwischen 2,9 und 30 Volt und einer Ausgangsspannung von 5 Volt verwendet. Ein Spannungsregler ist nicht unbedingt notwendig, ich baue jedoch in alle Elektronikprojekte einen Spannungsregler ein, um die empfindliche Elektronik vor Überspannung und Verpolung abzusichern. Die Wahl fiel auf diesen Spannungsregler, weil ich dadurch sehr flexibel bin. Insbesondere kann ich den Spektrumanalysator auch über einen USB-Port mit Strom versorgen. Der Anschluss des Spektrumanalysators an einen USB-Port und der maximale Ausgangsstrom dieses Spannungsreglers von 2 Ampere ist nur auf den ersten Blick problematisch: Zwar können die 84 NeoPixel maximal 5 Ampere ziehen, was sowohl einen USB-Port als auch den Spannungsregler überlasten würde, da ich im Code die Maximale Helligkeit der NeoPixel auf 25 Prozent reduziert habe, liegt der tatsächliche Maximalstrom aber weit unter dem theoretischen. Im Testaufbau habe ich die beiden NeoPixel-Streifen über den USB-Anschluss des Teensy betrieben und nie mehr als 70 Milliampere gemessen. Daher stellt die Spannungsversorgung über einen USB-Port und die Verwendung des ausgewählten Spannungsreglers kein Problem dar. Der Vorteil liegt darin, dass ich den Spektrumamalysator, den Splitter für das optische Audiosignal und den D/A-Wandler über einen passiven USB-Hub an einem geschalteten USB-Port des Computers betreiben kann, so dass die gesamte Elektronik mit dem Computer ein- und ausgeschaltet werden kann.

Bedienungsanleitung

Der Spektrumanalysator kann über einen Drehencoder konfiguriert werden. Da der Spektrumanalysator über kein Display verfügt, wird die Menüstruktur auf den NeoPixel-Streifen dargestellt.

Das Menüsystem wird durch einfaches Drücken des Drehencoders aufgerufen. Die Menüauswahl hat sechs Untermenüs, die durch einen spezifischen Farbcode auf dem NeoPixel-Streifen für den rechten Kanal dargestellt werden. Der linke Kanal zeigt immer die Spektrumanalyse mit den aktuellen Einstellungen an, damit die vorgenommenen Einstellung unmittelbar überprüft werden können. In der Menüauswahl Durch drehen des Drehencoders wird zwischen den Untermenüs gewechselt. Durch einfaches Drücken des Tasters wird das aktuelle Untermenü ausgewählt. Mit dem Drehencoder kann die gewünschte Einstellung vorgenommen werden. Durch längeres Drücken wird zurück in die Untermenüauswahl gewechslet. Durch nochmaliges längeres Drücken wird das Menü verlassen und die vorgenommenen Einstellungen in das EEPROM geschrieben.

  • Rot: Anzeigemodi
  • Cyan: Ausrichtung der Bänder des linken Kanals (tiefe Frequenzen links bzw. rechts)
  • Grün: Automatische Pegelanpassung
  • Magenta:
  • Blau:
  • Gelb:

Erste Menüebene: Anzeigemodi

Zweite Menüebene: Kanaleinstellungen

Gehäuse

NeoPixel-Matrix

Beispiel von GreatScott

Bibliotheken

Elektronik

OLED-Display

Auf einem OLED-Display soll eine Menüstruktur abgebildet werden. Wie bei meinem Flaschenkühler wird ein Display von Adafruit verwendet. Das Display funktioniert mit der Library von Adafruit, die aber sehr langsam ist und die Verwendung des Displays stark einschränkt. Eine vielversprechende Alternative ist die optimierte Bibliothek von kirberich, die aber nur funktioniert, wenn der Teensy mit 72 MHz läuft (https://forum.pjrc.com/threads/40462-Teensy3-5-and-SSD1351-128x128-OLEDsiehe dazu auch diese Diskussion). Es muss also eine andere Alternative her …

  • Die Bibliothek SSD13XX funktioniert auch nicht. Bei 96 MHz wird etwas angezeigt, was Testgrafiken sein könnten, aber alles wird falsch angezeigt.

Links:

Das OLED-Display wird an den folgenden Pins angeschlossen:

Teensy 3.6      Adafruit OLED Breakout Board
GND             GND (G)
3,3 V           VIN (+)
14 (SCK0)       SCLK (CL)
7 (MOSI0)       MOSI (SI)
20 (CS0)        DC
21 (CS0)        OLEDCS (OC) CS
8               RST (R)

Dreh-Encoder

Einstellungen können über zwei Dreh-Encoder mit zusätzlicher Tastfunktion vorgenommen werden.

Umschalten des Eingangssignals

Der Spektrumanalysator kann aus drei Signalquellen gespeist werden:

  1. digital (optisch/coaxial)
  2. analog (Cinch)
  3. analog (Klinke)

Mit dem Dreh-Encoder 1 kann zwischen den Signalquellen umgeschaltet werden. Das Schalten geschieht mit bistabilen Relais (Datenblatt). Die Spulen der Relais werden mit einem ULN2803A (Datenblatt) geschaltet. Das Signal des Teensy 3.6 wird mit einem 74HCT245 (Datenblatt) auf 5 Volt gebracht.

Interessante Links:

Programmversionen

Unten sind verschiedene Programmversionen verlinkt. Jede Programmversion bindet neue Funktionen ein und korrigiert Fehler in älteren Versionen.

arduino/spektrumanalysator.1545213638.txt.gz · Zuletzt geändert: 18.05.2023 09:06 (Externe Bearbeitung)