Handhabung von Audiosignalen auf einem 5-V-ADC

Vor einigen Tagen habe ich ein gemultiplextes 3x8-LED-Raster basierend auf dem Arduino RGB Controller erstellt. In meinem Fall verwende ich nicht RGB, sondern Reihe1, Reihe2 und Reihe3. Ich habe zwar schon einige nette Animationen gemacht, bin aber mit dem Ergebnis nicht wirklich zufrieden. Die Matrix ist 1m x 2,8m groß, ich plane, sie über eine Art "Heimmusikstudio" zu hängen. Wie Sie wissen, ist die Visualisierung von Audiomaterial cool! Die statischen Animationen auf dieser LED-Matrix wären also nutzlos, wenn sie nicht dem Beat folgen würden. Ich muss einen Spektrumanalysator hinzufügen. Glücklicherweise sind alle analogen Ein- und Ausgänge kostenlos nutzbar. Ein weiterer Punkt, der dieses Raster perfekt für einen 8-Kanal-Spektrumanalysator macht, ist die Tatsache, dass ich PWM auf den 3 Zeilen verwenden darf. Das bedeutet, ich habe ein theoretisches Spektrumraster von 256*3 x 8. Natürlich ist die Kurve von 0-100% der Helligkeit der LED nicht linear, das kann mit einer einfachen Exponentialfunktion gelöst werden.

Lassen Sie mich Ihnen zunächst noch einmal sagen, dass ich kein Elektroniker bin und mein Bestes tue, um Dinge selbst zu verstehen, aber in diesem Fall bin ich nicht in der Lage, es richtig zu machen. Mein einziges Messsystem ist ein sehr langsam begrenztes Multimeter. Ich habe vor einigen Monaten auch ein Arduino kaputt gemacht, also verbinde ich nicht nur Sachen.

Kann das Arduino einen Spektrumanalysator mit nur einem Pin erstellen?

Ja! FHT

Und so fing ich an, darüber zu lesen

  1. Ich muss das Audiosignal irgendwie auf 0-5V umwandeln
  2. Ich muss die Daten auf dem ADC0 (linker Audiokanal) lesen und etwas rechnen und an die LEDs senden.

Ich hänge bei Punkt 1 fest.

Der maximale Kopfhörerausgang jedes Audiogeräts wird verschoben, daher brauche ich ein Potentiometer. Die Audiospannung beträgt niedrige Milliampere, aber meistens auch niedrigere Spannung.

Aus den verschiedenen Schaltungen habe ich die folgende ausgewählt. Bevor ich es mit dem Arduino verbunden habe, habe ich einen Summer verwendet, um zu testen, ob ich etwas herausbekomme. Ja, aber ich bekomme Ton, wenn ich GND mit Signal (Buchse in) invertiere, und ich bekomme auch Ton, wenn ich die Polarität des Kondensators C1 umkehre. Es gibt auch keine Art von Schutz in dieser Schaltung, ich stecke fest.

Anm.: Ich habe auch verschiedene andere Schaltungen getestet und immer die gleichen Ergebnisse erhalten, nur dass hier das Potentiometer keine Wirkung hat.

Geben Sie hier die Bildbeschreibung ein

Ergebnis:

Bei einem einfachen analogen Lesen bekomme ich immer 0 (NULL).

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Als ich mehr über das Problem las, fand ich viele Beiträge, die Operationsverstärker verwenden. Da mein örtlicher Elektronikkomponentenladen nur eine begrenzte Anzahl von ICs hat, kaufe ich manchmal zufällige ICs, wenn sie mit Arduino und anderen Mikrocontrollern kompatibel sind. Und ich rette auch alte Sachen. Hier ist eine Liste von Komponenten, die ich verwenden könnte.

  1. MC1458 DUAL Allzweck-Operationsverstärker
  2. TDA2822M DUAL Niederspannungs-Leistungsverstärker
  3. UA741CN Allzweck-Einfach-Operationsverstärker
  4. AD7395 Dualer 12-/10-Bit-DAC mit seriellem Eingang

Da ich kein Oszilloskop und andere professionelle Geräte zum Messen des elektronischen Stroms habe, hoffe ich, dass Sie mir zeigen können, wie ich ein Audiosignal richtig an den ADC meines Mikrocontrollers anschließe .

Bedenken Sie, dass ich nichts weiß. Eine komplexe Erklärung ohne Schaltplan würde nicht helfen, das Problem für mich und wahrscheinlich viele andere Leute zu lösen.

Die Frage:

Wie schließe ich eine Standard-Kopfhörerbuchse (MP3-Player) / ein Audioausgangskabel RICHTIG an den Pin eines 0-5-V-Analog-Digital-Wandler-Mikrocontrollers an?

Hauptprobleme:

  1. Mit den getesteten online verfügbaren Schaltungen bekomme ich keine Messwerte von Analog Pin 0. Analog Pin 0 funktioniert einwandfrei (nur getestetes Potentiometer).
  2. Jetzt möchte ich nichts an die Pins des MC anschließen, ohne sicher zu sein, dass ich 0-5 V mit der richtigen Amperezahl ausgebe.

Extra:

  1. Ich weiß nicht, warum ich immer 0 von Arduino lese, auch wenn ich den Summer hören kann?
  2. Ich habe nie einen Operationsverstärker verwendet, also weiß ich nicht, was ein invertierender Eingang und ein nicht invertierender Eingang ist?
  3. Was macht der C1-Kondensator und warum funktioniert er, wenn ich die Polarität umkehre? (Summer)
  4. Umgekehrte Audiokabel-Pins erzeugen auch bei einem Summer den gleichen Ton, warum?
  5. Ich teste auf einem Arduino-Mikro, aber die letzte Zeile würde auf einem Arduino-Mikro verwendet werden, nicht sicher, ob es relevant ist.

BEARBEITEN 1

Dies verwendet den gleichen Operationsverstärker, den ich habe

Lärm kann schrecklich sein!

https://bochovj.wordpress.com/2013/06/23/sound-analysis-in-arduino/ https://bochovj.files.wordpress.com/2013/06/circuitschematics.png

BEARBEITEN 2

Arduino Prescaler: bis 19kHz, nicht 17 was ich in den Kommentaren geschrieben habe.

http://apcmag.com/arduino-project-audio-spectrum-analyser.htm/

Aber indem wir den 128-Prescaler auf 32 herunterdrehen, erhöhen wir jetzt die Abtastrate um den gleichen Faktor auf bis zu 38,4 kHz. Nochmals dank Nyquist erhalten wir eine Audiobandbreite von 19,2 kHz, was nahe genug an der 20-kHz-Perfektion liegt.

BEARBEITEN 3

schematisch

Simulieren Sie diese Schaltung

Kennen Sie MSGEQ7 ? Wäre das nützlich?
Ich denke, es würde mit meinem Setup nicht funktionieren ... das LED-Gitter verwendet bereits fast alle Pins. das msgeq7 braucht mehr pins.. dann bräuchte ich einen externen multiplexer ic... mit FHT brauche ich nur einen pin und habe ein Array, das softwareseitig einsatzbereit ist.. das erlaubt mir, alles so anzuzeigen, wie ich es will Die lokale Elektroversorgung ist sehr begrenzt ... ich glaube, sie haben kein msgeq7 ...
Auch am Ende ist der FHT-Weg präziser als der MSGEQ7, da er bis zu 256 Bänder gegenüber 7 zulässt. Alles in einem Stift.
Haben Sie also berechnet, wie schnell Sie Ihren ADC abtasten müssen, um alle gewünschten Frequenzen aufzulösen? Was ist die Taktrate und die minimale ADC-Einschwingzeit? Unterstützt all dies Ihre Anforderungen?
Ich habe gelesen, dass die Beispiele bei 38 kHz abtasten und das wären bis zu 17 kHz in 256 Bändern. wenn es das ist, was du meinst ... aber bis ich kein richtiges analoges Lesen bekomme, kann ich nicht weitermachen.
aber ja ... auf dem Arduino habe ich den Timer1 Prescaler bereits auf 1 gesetzt, um die flimmerfreien LEDs zu erreichen ... also bin ich mir jetzt nicht 100% sicher, ob das Hinzufügen der FHT-Berechnung zum Code das LED-Multiplexing verlangsamen würde. .aber das kommt später ... jetzt muss ich mein Arduino dazu bringen, das Audio-In-Signal richtig zu lesen
vielleicht ist das arduino micro anders als das arduino uno? ... ich teste auf arduino micro ... der endgültige code wird auf ein arduino uno gesetzt.
Es kommt auf den Mikroprozessor an, nicht auf das Entwicklungsboard. Überprüfen Sie die Spezifikationen für den Atmel-Chip, den der Uno verwendet, und überprüfen Sie auch den Kristall. Das sollte Ihnen sagen, wie schnell Sie verarbeiten können. Ich vermute sehr, dass FHT eine spürbare Verzögerung einführen wird.
Ja, ich denke, beides funktioniert ... bestenfalls nicht, aber es funktioniert. Uno funktioniert, micro> uno funktioniert wahrscheinlich auch ... der Prozessor ist fast der gleiche Arduinos verwendet 8/16-MHz-Kristalle ... uno & micro 16 MHz ... Das Problem ist die Schaltung. Kein Signal, kein Test.
In meinem Beispiel brauche ich 8 Bänder mit jeweils 4 oder mehr möglichen Werten ... also nicht viel. ich kann die fht auf 32 einstellen oder wahrscheinlich auch auf 16 oder 8.... das sollte die verzögerung verringern
Aber ja, Leute, die bereits mit viel mehr Bands, LEDs und was auch immer auf Arduino getestet wurden, und es funktioniert ... also denke ich nicht, dass es unmöglich ist. Sie alle verwenden eine kommerzielle LED-Matrix ... ich möchte meine eigene verwenden.
es heißt, der prescaler ist auf 32 eingestellt .... atm mein led-multiplexing ist auf 1 eingestellt ... aber ich muss es mindestens auf 8 halten. das könnte ein problem sein, wenn der fht nicht in der lage ist, gleichmäßig zu arbeiten höhere Frequenz

Antworten (1)

Dies sollte das tun, was Sie verlangen - es nimmt das Audio auf (AC-gekoppelt) und verstärkt es (invertiert, aber das spielt keine Rolle) mit einer variablen Verstärkung von bis zu etwa 5,5 (verwenden Sie R1, um die Verstärkung anzupassen). Es spannt auch das Signal in der Mitte auf etwa 2,5 V (analogRead = 512 auf dem Arduino).

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Bitte beachten Sie jedoch die anderen Kommentare hier bezüglich der Abtastraten und des Verarbeitungsaufwands, der erforderlich ist, um das gewünschte Ergebnis zu erzielen. Tauschen Sie den Operationsverstärker auch nicht ohne Nachdenken aus - dieser Teil ist für Rail-to-Rail-Ein- und Ausgänge ausgelegt, was Sie benötigen, um den vollen Eingangsbereich des ADC des Arduino zu nutzen.

Meine Lieferung für Shure hat diesen opa344 nicht ... kann ich das gleiche mit den ICs machen, die ich aufgelistet habe? UA741CN, MC1458?
Nein - Sie benötigen einen Operationsverstärker mit einem Ausgang, der sehr nahe an seinen Spannungsschienen schwingen kann - bekannt als Rail-to-Rail-Ausgangs-Operationsverstärker (RRO oder manchmal R / RO). Keiner der von Ihnen aufgelisteten Operationsverstärker ist geeignet. Aber das von mir vorgeschlagene ist von CPC, Farnell, Mouser, Digikey, RS erhältlich, ist kostengünstig und wird in einem DIP-Paket für einfaches Prototyping geliefert.
Und diese Widerstandskondensator-Mischlösung (wo ich die Schaltpläne gepostet habe) ... warum funktioniert das nicht auf meinem Arduino-Mikro?
Das eine Schema, das Sie inline haben, sollte teilweise funktioniert haben, allerdings nicht mit einem vollen Hub von 0 bis 5 V, da keine Verstärkung vorhanden ist (und tatsächlich eine Dämpfung vorhanden ist, die nicht hilft). Sie sollten 512 (oder so ungefähr) so ziemlich die ganze Zeit gelesen haben, mit kleinen Abweichungen nach oben und unten. Sie hätten jedoch sicherstellen müssen, dass der Audio-Masseeingang mit der Arduino-Masse verbunden war - dies ist in Ihrem Schaltplan nicht sehr klar.
Ich konnte keine richtige Audiobuchse finden, ... jedenfalls gibt es eine Leitung, die von einem der Audioeingänge (-) ausgeht, durch einige Kappen und Widerstände verläuft und in die Arduino-Masse (GND) geht.
Sie müssen auch die Audiomasse direkt mit der Arduino-Masse verbinden, da die Schaltung sonst keine Eingangsreferenz hat
das Audio - ist mit Masse verbunden. Der Boden ist das einzige, was mit allen Komponenten geteilt werden muss ... also ja. GND ist verbunden. Wenn Sie mir sagen, wo ich die Dreiecke finde, die den Boden darstellen, zeichne ich die Schaltpläne neu ... wenn Sie Dreiecke bevorzugen
Dreiecke hinzugefügt
Ausgezeichnet - wie gesagt, das hätte Ihnen Messwerte um 512 geben sollen, aber ohne Verstärkung, also ohne vollen 0-5-V-Ausschlag.
lesbar ?? praktikabel ... ich meine, würde es ausreichen, um das Balkendiagramm aufleuchten zu lassen ... auf nicht superpräzise Weise? Anscheinend bekomme ich keine 512 Messwerte ...
Es ist ein bisschen marginal - der Gleichtakt-Eingangsspannungsbereich erstreckt sich nur bis zu 3,7 V bei 5 V Vcc - und 2,5 V + um 1 V Leitungsspitze = 3,5 V, was für meinen Geschmack zu nah ist.
Ist es auch im opa344 ein Problem, wenn es die 5,5 Volt eines Mikrocontrollers berührt, da sie nur maximal 5 Volt zulassen? -und über den ts942in, wenn ich eine 2. Stromversorgung von 7-8 Volt hinzufüge?
Übrigens habe ich es bereits mit der ic-losen Version zum Laufen gebracht ... die Reichweite ist sehr gering ... das Rauschen geht bis zu 120 von 1024 ... und die Menge beträgt nur etwa 10-20 ... ich bekomme bereits eine schöne Animation
Ich weiß nicht, wo sich die 5,5 V auf Ihrem Mikrocontroller befinden würden - normalerweise laufen sie mit 5 V. Ja, das alternative Teil funktioniert mit einem zweiten Netzteil von 7-8 V, aber Sie müssen dann den Ausgang auf maximal 5 V begrenzen, um das Mikro zu schützen. Ich würde wirklich empfehlen, mit dem opa344 zu gehen.
geht der opa auf 5,5v? Ich habe auch professionelles DJ-Equipment ... und die Kopfhörerausgabe kann sehr hoch sein ... und deshalb denke ich, den opa344 oder was auch immer zu maximieren
Wie könnte es sein, wenn es mit 5 V betrieben wird und ein lineares Gerät ist? Die maximale Ausgangsspannung darf die Schienenspannung eines normalen Operationsverstärkers nicht überschreiten.
ah sicher richtig ... Entschuldigung. wenn ich dem opa max 5v gebe bekomme ich max 5v raus