Wie liest man ein Audiosignal mit ATMega328?

Ich habe versucht, den ATMega328 ADC-Port A0 zu verwenden, um ein Signal zu lesen. Als Hardware habe ich verwendet:

Das Signal, das ich bekommen habe, scheint nur der positive Teil einer Sinuswelle zu sein. Ist es möglich, dass dieses Setup nicht für Audioaufnahmen geeignet ist? Was muss ich ändern?

Wow, sie verkaufen DIY-Elektronikkomponenten, ohne Ihnen auch nur den Schaltplan zu geben. Seed Studio ist scheiße.
Falscher Name: Einverstanden
@Fake kennst du eine bessere Alternative?
@Jader Es hängt alles davon ab, wie viel Arbeit Sie erledigen möchten. Hier sind einige Optionen: sparkfun.com/commerce/product_info.php?products_id=8635 sparkfun.com/commerce/product_info.php?products_id=8872
@Jader Dias - Ja, ein Steckbrett und ein Operationsverstärker.
Das Mikrofon ist zumindest "sehr sensibel"...
@endolith Ich habe es gekauft und es ist nicht so vernünftig, lol

Antworten (3)

Lassen Sie mich sehen, ob ich einen Stich ausführen kann, ohne jemals eines dieser Teile verwendet zu haben. Hast du zufällig Zugang zu einem Mikroskop? Wenn ja, sollten Sie Ihr Signal überprüfen, bevor Sie mit dem Bau beginnen.

Höchstwahrscheinlich gibt Ihr Mikrofon / Verstärker eine Welle aus, die um 0 V zentriert ist, was bedeutet, dass Sie + und - Spannungen haben. Stellen Sie sich eine Sinuswelle vor, die zwischen -1 V und 1 V schwankt. Damit Ihr Mikro dies verwenden kann, müssen Sie einen DC-Offset hinzufügen, sodass Ihre negativste Spannung etwas über 0 V liegt und Ihre positivste Spannung etwas unter dem Maximum liegt, das Ihr Mikro lesen kann (wahrscheinlich etwa 5 V).

Ohne Ihre Komponenten genauer zu untersuchen, ist es schwierig, Ihnen genau zu sagen, was Sie tun müssen, um Ihren DC-Offset zu erhalten, aber vielleicht bringt Sie dies in die richtige Richtung.

Withoutwird ohne Leerzeichen geschrieben
Für dich korrigiert.

Haben Sie am Eingang einen DC-Sperr- / Vorspannungskondensator?

Analogeingang mit DC-Sperrkondensator

Die Kombination von C mit R legt die niedrigste Frequenz fest, die zum ADC durchgelassen werden kann. DC (die ultimative Niederfrequenz) wird blockiert, während AC durchgelassen wird. In diesem Fall wäre die Grenzfrequenz 1 Hz , was für Audio ausreichend niedrig ist.

Die DC-Vorspannung wird von etwas in der Mitte des ADC-Bereichs mit geringem Rauschen bereitgestellt. Zum Beispiel:

DC-Vorspannungsquelle

Dies würde 2,5 V bei Gleichstrom erzeugen, aber der Wechselstrom ist durch den Kondensator eng mit Masse gekoppelt, sodass alle Schwankungen in der Versorgung herausgefiltert werden. Ein größerer Kondensator würde das Rauschen bei niedrigeren Frequenzen verbessern.

(Ursprünglich habe ich dieses Bild verlinkt , aber das würde nur funktionieren, wenn Ihre 5-V-Versorgung rauschfrei ist.)

Guter Schaltplan ... Ich werde es überprüfen.
Was macht das genau? C1 muss die DC-Komponente des Signals blockieren, aber warum ist das notwendig? Bias das Paar R1/R2 dann das Signal so vor, dass 0 V 2,5 wird?
@blalor genau genommen werden 0 V nicht zu 2,5 V. Die allgemeine Regel ist, dass die DC-Komponente des Signals 2,5 V wird
@blalor Wenn Sie dort einen unendlich großen Kondensator einbauen könnten, würden Sie sehen, dass Ihr gesamtes Signal verschoben wird, um um 0 V zentriert zu sein. Daher wird der DC-Offset entfernt. Dies ist eine gängige Methode, um sicherzustellen, dass keine Schaltung einen unerwünschten Offset hinzufügt. R1 und R2 fügen in diesem Fall dann einfach einen bekannten DC-Offset für ADC-Zwecke hinzu. Da wir keine unendlich großen Obergrenzen haben können, begnügen wir uns mit kleineren Obergrenzen, die dazu führen, dass einige der niedrigen Frequenzen abgeschnitten werden.
Unendlich große Kappen würden sowieso ewig brauchen, um sich auf die Vorspannung aufzuladen.
@endolith eh, nur diese kleinen Probleme.
@endolith Ich mag wirklich, wie du mit Wolframalpha verlinkt hast, ich denke, das ist eine großartige Idee, um den Leuten zu zeigen, was die Mathematik dahinter steckt.
Das mache ich oft. Ich liebe Dinge wie Google Calculator, Alpha und Qalculate, die Freiformberechnungen mit Einheiten und allem machen können.
@endolith woher kommt dieser Schaltplan?
Nur eine Google-Bildersuche, aber jetzt kann ich es nicht finden.
@Jader: Es war von hier sites.google.com/site/ki4mcw/Home/arduino-tnc , aber es ist eigentlich keine gute Schaltung. Ich werde es neu zeichnen.
@endolith Ich habe Ihre Schaltung montiert und sie hat den digitalen Wert der DC-Komponente auf 688 (in einer 10-Bit-Skala) festgelegt. Das Ideal wäre 512, aber 688 ist viel besser als das, was ich vorher hatte (0). Dann wurde mir klar, dass das Mikro allein nicht ausreicht, um das zu ändern. Also füge ich der Schaltung einen Amp-Op hinzu
Um 512 zu erhalten, ändern Sie den oberen Widerstand auf etwa 16,8 K. :D Das Mikrofon ändert den Wert überhaupt nicht? In diesem Fall benötigen Sie ja eine gewisse Verstärkung durch einen Operationsverstärker. Sie müssen diese Vorspannungsschaltung jedoch immer noch irgendwo verwenden.

Die Lösung ist die Verwendung eines Amp-Op

Stifte

In einer Schaltung wie dieser:

Schaltkreis

Sie können es mit dem Java Circuit Simulator simulieren, wo Sie den folgenden Code importieren können:

$ 1 5.0E-6 10.20027730826997 57 5.0 50
g 240 240 240 288 0
r 240 112 240 160 0 47000.0
r 240 192 240 240 0 47000.0
R 240 112 240 80 0 0 40.0 5.0 0.0 0.0 0.5
r 272 384 336 384 0 1000.0
R 176 384 144 384 0 1 40.0 0.5 0.0 0.0 0.5
w 176 384 192 384 0
c 192 384 256 384 0 1.0000000000000001E-7 -2.9572014071857935
c 192 176 192 240 0 1.0000000000000001E-7 2.5000000000001608
w 192 240 240 240 0
w 256 384 272 384 0
w 336 384 336 192 0
r 416 240 512 240 0 100000.0
w 512 240 512 176 0
w 192 176 240 192 0
w 416 240 416 192 0
w 240 192 240 160 0
a 416 176 512 176 1 5.0 0.0 1000000.0
w 416 160 240 160 0
w 336 192 416 192 0
o 13 64 0 35 20.0 9.765625E-5 0 -1

Die Verstärkung ist proportional zum Verhältnis zwischen dem Widerstand des 100k-Widerstands und dem 1k-Widerstand.