Ich habe in den letzten Tagen ein paar Fragen zu diesem Projekt gestellt, aber ich kann nicht alles zusammenfassen.
Ich habe ein Elektretmikrofon an einen Operationsverstärker angeschlossen und die Ausgabe an meinen Arduino-Mikrocontroller gesendet. Der ADC im Mikrocontroller wandelt einen Bereich von 0 bis 5 vV in eine 10-Bit-Zahl (0 bis 1023) um.
Ich habe 3 verschiedene Amp Chips ausprobiert:
- LM386 - Ich habe das Feedback bekommen, dass dieser Chip für diesen Zweck nicht gut war, da er nicht opamp ist und nicht wie erwartet richtig funktioniert.
- LM358 - funktioniert
- UA741 - funktioniert, verstärkt mehr als LM358
Ich habe dieses Schema genau befolgt (außer dass ich mit Widerstandswerten rumgespielt habe, um eine gute Verstärkung zu erzielen): Ich habe 50 kOhm für R5 und 10 Ohm für R2 verwendet.
Das Problem ist, dass die Ausgabe der beiden letzteren Chips nicht "sauber" ist. Das analogRead () auf dem Arduino liest immer einen Wert ungleich Null, auch wenn ich im Mikrofon kein Rauschen mache. Der Messwert reagiert richtig, wenn ich Geräusche mache, aber der Wert "Null" ist ungleich Null. Manchmal flackert der "Null" -Wert sogar, wodurch der Messwert die ganze Zeit unterbrochen wird. Hoffentlich ergab das Sinn.
Können Sie mir helfen, das zu klären?
Genauso unwichtig, zusätzliche Informationen: Ich versuche, irgendwann so etwas zu machen .
quelle
Antworten:
Den Ausgangskondensator loswerden. Diese Schaltung sollte wahrscheinlich ein Signal um Null herum erzeugen, daher ist der Kondensator dazu da, den 1/2 Vdd-Offset zu blockieren. Der Mikrocontroller möchte jedoch, dass das Signal um 1/2 Vdd zentriert ist. Entfernen Sie also einfach den Kondensator.
Mikrofone brauchen viel Gewinn. Elektrete können empfindlich sein, aber Sie benötigen möglicherweise immer noch eine Spannungsverstärkung von 1000. Die Verstärkung in Ihrer Schaltung ist das Verhältnis von R5 zu R2, dies funktioniert jedoch nur innerhalb der Grenzen dessen, was der Operationsverstärker kann.
Die Werte, die Sie oben erwähnt haben, ergeben einen Gewinn von 5000. Das ist viel mehr, als Sie von einer einzelnen Opamp-Stufe erwarten sollten. Die Offset-Spannung wird nicht nur mit dieser Verstärkung multipliziert, sondern der Operationsverstärker kann dies auch nicht über den gesamten Frequenzbereich liefern. Bei einer Verstärkungsbandbreite von 1 MHz erhalten Sie diese Verstärkung nur etwas unter 200 Hz. Sogar ein Eingangsversatz von 1 mV wird nach einer Verstärkung von 5000 zu 5 V.
R2 ist auch die Impedanz, die das Mikrofon nach dem Eingangskondensator sieht. Sie müssen etwas größer sein als die Impedanz des Mikrofons mit dem Pullup und dem Eingangskondensator bei der niedrigsten interessierenden Frequenz. 10 Ω sind dafür viel zu klein. 10 kΩ wären ein besserer Wert.
Probieren Sie zunächst zwei Stufen mit einem Gewinn von etwa 30 aus und finden Sie heraus, wohin das führt. Dies ist ein Gewinn, den es über vernünftige Frequenzen hinweg bewältigen kann, wobei genügend Headroom verbleibt, damit das Feedback funktioniert. Sie müssen die beiden Stufen auch kapazitiv koppeln, damit sich die Eingangsoffsetspannung nicht in allen Stufen ansammelt.
Bearbeiten: Schaltung hinzugefügt
Ich hatte letzte Nacht keine Zeit, eine Schaltung zu zeichnen, als ich die Antwort oben schrieb. Hier ist eine Schaltung, die es tun sollte:
Dies hat eine Spannungsverstärkung von ungefähr 1000, was für ein vernünftiges Elektretmikrofon ausreichend sein sollte. Ich mag ein bisschen zu viel sein, aber es ist einfach, eine gewisse Dämpfung hinzuzufügen.
Die Topologie unterscheidet sich eher von Ihrer Schaltung. Das Wichtigste ist, dass nicht versucht wird, den gesamten Gewinn in einer Stufe zu erzielen. Jede Stufe hat eine Verstärkung von ungefähr 31. Das lässt genügend Gain Headroom bei der maximalen Audiofrequenz von 20 kHz für die Rückkopplung, so dass die Verstärkung über den Audiofrequenzbereich hinweg gut vorhersehbar und flach ist, da der MCP6022 eine typische Gain-Bandbreite hat Produkt von 10 MHz. Der begrenzende Faktor wird höchstwahrscheinlich das Mikrofon sein.
Im Gegensatz zu dem, was ich zuvor gesagt habe, müssen die beiden Stufen nicht kapazitiv gekoppelt werden, um zu verhindern, dass sich die Offset-Spannung zusammen mit der Verstärkung ansammelt. Das liegt daran, dass in dieser Schaltung jede Stufe nur eine Gleichstromverstärkung von 1 hat, so dass der endgültige Versatz nur das Doppelte des Opamp-Versatzes beträgt. Diese Operationsverstärker haben nur einen Versatz von 500 µV, so dass der endgültige Versatz aufgrund der Operationsverstärker nur 1 mV beträgt. Aufgrund der Nichtübereinstimmung von R3 und R4 wird es mehr geben. In jedem Fall ist der Ausgangsgleichstrom nahe genug, um die Versorgung zu halbieren, damit er nicht auf sinnvolle Weise in den A / D-Bereich gelangt.
Die Gleichstromverstärkung von 1 pro Stufe wird erreicht, indem der Rückkopplungsteilerpfad kapazitiv mit Masse gekoppelt wird. Der Kondensator sperrt Gleichstrom, sodass jede Stufe nur ein Gleichstromfolger ist. Die volle AC-Verstärkung wird realisiert, wenn die Impedanz des Kondensators (C3 in der ersten Stufe) im Vergleich zum unteren Teilerwiderstand (R7 in der ersten Stufe) klein wird. Dies beginnt bei ungefähr 16 Hz. Ein Nachteil dieses Ansatzes ist, dass die Zeitkonstante zum Einschwingen C3 mal R7 + R5 ist, nicht nur R7. Dieser Schaltkreis benötigt nach dem Einschalten einige Sekunden, um sich zu stabilisieren.
quelle
Wie Sie sagen, liegt der digitale Wert zwischen 0 und 1023. Die Mitte dieses Bereichs ist nicht 0, sondern 512 (was einer Spannung von etwa 2,5 entspricht). Für die Stille sollten Sie so etwas in der Mitte des Bereichs sehen. Muss nicht genau 512 sein, aber es sollte nah sein. Dies wird als "DC-Offset" bezeichnet. Das Signal wird nach oben verschoben und um 2,5 V zentriert.
Wenn Sie 2 V messen und ADC-Werte um 400 sehen, funktioniert es im Grunde gut.
Die Schallwellen gehen von negativem zu positivem Druck über. Wenn der Mittelpunkt 0 wäre und das Signal nur zwischen 0 und 1023 gemessen werden könnte, würden die Unterdruckwerte (-1023) abgeschnitten.
Außerdem wird es aufgrund des Grundrauschens des ADC immer ein wenig schwanken. (Und es wird immer ein Geräusch im Raum geben, egal wie leise Sie sind.)
quelle
Können Sie das Datenblatt auf diesem Mikrofon veröffentlichen? Es gibt keinen Grund, warum Sie mit einem Elektretmikrofon eine Verstärkung von 5000 benötigen sollten, es sei denn, Sie haben ein nacktes Gerät ohne internen FET. In diesem Fall muss der Vorverstärker anders aussehen.
Außerdem ist die Schaltung, die Sie verwendet haben, nicht besonders geeignet, um als Vorverstärker für ein Elektretmikrofon verwendet zu werden.
Ich würde empfehlen:
R5 / R4 stellen die Verstärkung ein und können eingestellt werden, ohne mit der Eingangsimpedanz der Schaltung zu verschrauben. R3 kann von 2k -> 10k ish sein. 10k kann die Verzerrungsleistung verbessern. Wenn Sie dies zu niedrig einstellen, sollten Sie die Werte für R1 und R2 überdenken, um die Eingangsimpedanz festzulegen.
Es ist auch sehr wichtig, dass die Stromversorgung ausreichend entkoppelt ist, da alle Geräusche in das Mikrofon gelangen.
Wie in den anderen Antworten erwähnt, beträgt Ihr "Null" -Punkt ~ 512, wenn Sie den ADC lesen, und schwankt ein wenig, egal was Sie tun.
Wenn Ihr Ziel das Blinken von Lichtern als Reaktion auf den Pegel ist, sollten Sie mit einem Arduino ohnehin keine sofortigen Messwerte erfassen, da ich bezweifle, dass Sie in der Lage sind, schnell genug zu sampeln, damit es gut reagiert. Führen Sie stattdessen eine Spitzen- oder Durchschnittspegelerkennung im analogen Bereich durch und stellen Sie die Mittelungsperiode proportional zu Ihrer Abtastrate ein.
EDIT: Mehr dazu mit einem Peakdetektor
Das Problem, das Sie hier haben werden, ist, dass das Arduino eine relativ begrenzte Abtastrate hat. Ich denke, Ihr Maximum wird bei etwa 10 kHz liegen, was bedeutet, dass Sie nur ein maximales 5-kHz-Audiosignal auflösen können. Das bedeutet, dass der Arduino nur sehr wenig tut, außer den ADC auszuführen. Wenn Sie echte Arbeit erledigen müssen (und etwas tun müssen, um den Pegel zu erreichen), ist die Abtastrate niedriger.
Denken Sie daran, dass Sie diskrete Samples des Rohsignals nehmen. Nur weil Sie eine Sinuswelle mit vollem Bereich in den ADC einspeisen, bedeutet dies nicht, dass Sie keine Werte von 0 vom ADC erhalten. Sie erhalten Samples an verschiedenen Punkten der Welle . Bei echter Musik ist das resultierende Signal recht komplex und Sie haben überall Samples.
Wenn Sie nur den Pegel des Eingangssignals messen möchten und keine digitale Darstellung des Signals benötigen, können Sie nach diesem Vorverstärker einen einfachen Spitzendetektor verwenden.
Dadurch wird Ihr Audiosignal in eine Spannung umgewandelt, die den Spitzenpegel darstellt. Wenn Sie diese Spannung mit dem ADC messen, erhalten Sie sofort einen Wert, der den Signalpegel zum Zeitpunkt der Messung darstellt. Sie werden immer noch ein bisschen wackeln müssen, da der Sound eine komplexe, immer variierende Wellenform ist, aber dies sollte in der Software einfach zu handhaben sein.
Ein Peakdetektor ohne Hold ist eigentlich nur ein Gleichrichter mit einem Filter am Ausgang. In diesem Fall müssen wir mit Signalen mit niedrigem Pegel umgehen und die Genauigkeit aufrechterhalten, damit wir ein wenig mehr tun müssen als für Ihre durchschnittliche Gleichrichterschaltung. Diese Schaltkreisfamilie wird als "Präzisionsgleichrichter" bezeichnet.
Es gibt ungefähr eine Milliarde verschiedene Möglichkeiten, dies zu tun, aber ich würde mich für diese Schaltung entscheiden. Sie scheint am besten zu funktionieren, wenn Sie eine einzige Versorgung verwenden. Dies würde nach der bereits besprochenen Vorverstärkerschaltung gehen und der Eingang könnte wechselstromgekoppelt sein oder nicht, obwohl er mit einer einzigen Versorgung betrieben wird, funktioniert er auch mit negativen Eingangsspannungen einwandfrei, solange Sie die verfügbaren Spitzenwerte nicht überschreiten. Spannungsspitze von den Operationsverstärkern.
OP1 wirkt als (nahezu) ideale Diode, die beim Gleichrichten den üblichen Spannungsabfall an der Diode umgeht. Fast jede kleine Signaldiode funktioniert für D1, etwas mit einem geringeren Spannungsabfall in Durchlassrichtung würde die Genauigkeit erhöhen, aber ich bezweifle, dass dies für Ihre Verwendung von Bedeutung ist.
C1 und R4 fungieren als Tiefpassfilter, um die Ausgabe zu glätten. Sie können mit ihren Werten spielen, um die Leistung an das anzupassen, was Sie versuchen (und Ihre Abtastrate).
Sie können wahrscheinlich das gleiche Operationsverstärkermodell verwenden, das Sie im Vorverstärker verwenden, aber Rail-to-Rail und hohe Anstiegsrate sind ideal für diese Schaltung. Wenn Sie ein Stabilitätsproblem haben, erhöhen Sie R1, R2 und R3 auf 100 kOhm.
quelle