ich möchte mit dem Analog MEMS Mikrofon ICS-40180 Musik über ein Mikrocontroller aufnehmen. Das verwendete Board hat schon einen OpAmp344 drauf. Ist also ein fertiges Board. Der Mikrocontroller hat einen 12Bit ADC. Und eine Analoge Referenzspannung von 3.3V. Die Abtastrate ist einstellbar. Das Aufnehmen funktioniert soweit ohne Probleme. Ich möchte gerne im Detail folgende Abläufe verstehen, mit dem Hintergrund diese neuen Erkenntnisse mit in das Projekt einzubauen.
Ich möchte gerne diese Angaben verstehen.
dB ist für mich soweit klar. Kann ich mit 20*log10(value/maxValue) ausrechnen. Ich glaube das verwirrende daran ist einfach, das diese ganze dB Werte halt relative sind.
Ich möchte dennoch die Spannung, die aus dem Mikrofon kommt, richtig mit den Größen von dem Datenblatt verrechnen. Damit ich folgende Werte erhalte:
dB SPL
dbV
dBm
Diese Werte sollen mit Samples vom ADC ausgerechnet werden.
Das MEMS Mikrofon hat folgende Leistungen:
1
Sensitivity bei 1kHz, 94dB SPL: -38dBV
2
SNR bei bei 20Hz bis 20kHz A-weighed: 65dBA
3
Equivalent Input Noise (EIN) bei bei 20Hz bis 20kHz A-weighed: 29dBA SPL
4
....
Das MEMS Mikrofon hat einen Output:
1
Output Impedance: 350 Ohm
2
Output DC Offset: 0.7 Volt
3
Maximum Output Voltage bei 124dB SPL input: 0.398V RMS
4
Noise Floor bei 20Hz bis 20kHz A-weighed,rms: -103dBV
Der Hersteller des Boards mit dem OpAmp schreib aber:
1
OPA344 output impedance: 600 Ohm
2
Output DC Offset: 1/2VCC
3
Output Voltage: 200mVpp
4
Output Power: 40mW
Bei einem 65dBA SNR wie rechne ich zurück, damit ich weiß, wie hoch die Spannung bei einer bestimmten Frequenz ist, bei absoluter Stille im Raum? Denn das dBA bedeutet ja, das tiefe Frequenzen anders gewichtet werden.
Wenn die Samples aufgenommen wurde sind. Sind die ADC-Werte zwischen 0 und 4095. Danach wird der DC Offset entfernt und die ADC-Werte sind danach von -2048 bis 2047. Das Spectrum wird dann mit einer FFT berechnet. Das bedeutet, ich weiß danach, wie hoch die Spannung der einzelnen Frequenzen ist. Kann ich mit diesen Information eine Umrechnung nach dBA und nach dBA SPL machen?
Im Anhang befindet sich das Datenblatt des Mikrofons.
Die Website ist: https://www.sparkfun.com/products/18011
Im Anhang befindet sich auch die dB A B C Berechnung der Bewertungskurven.
Um Audio zu digitalisieren sollte man besser einen Sigma-Delta ADC nehmen.
Meine persönliche Empfehlung wenn du unbedingt ein Mic an einen low-cost MCU mit definiertem SNR brauchst:
Nimm ein PDM Mikrofon. Letztens wurde da sogar eines mit über 72dB SNR vorgestellt.
Selbst wenn man kein extra PDM oder I2S Interface hat, kann man die im Regelfall auch mit einer kontinuierlich laufenden SPI samplen.
Bei z.B. 100dB SPL wären es (linear betrachtet) -32dBV. Dass das Mikrofon in weiten Grenzen linear arbeitet, sieht man dann bei 124dB SPL, da ist der Ausgangspegel nämlich bei:
Und eine Analoge Referenzspannung von 3.3V.
Output Voltage: 200mVpp
sind die ADC-Werte zwischen 0 und 4095
Überleg dir deine Werte nochmal etwas genauer.
Deine vollen 12Bit bekommst du nur wenn das Eingangssignal den vollen
Spannungsbereich auch ausnutzt.
Habe das Signal vom Mikrofon mit einem Oszilloskop und Vcc von 3.3V vom Labornetzteil mir angeschaut. Und festgestellt, dass die vollen 3.3Vpp genutzt werden. Das kommt denn aber vom OpAmp? Das sind die Output DC Offset: 1/2VCC ? Und das bedeutet, das ich nicht die vollen 12Bit von meinen ADC nutzen kann?
Das sind die Output DC Offset: 1/2VCC ? Und das bedeutet, das ich nicht
die vollen 12Bit von meinen ADC nutzen kann?
Und natürlich muss dieser OP VCC/2 = 1,65V als "Nullspannung" ausgeben, denn dann kann von dort aus symmetrisch -1,65V und +1,65V ausgeben und bleibt damit voll im Eingangsbereich des unipolaren ADC von 0..3,3V. Du hast dann also mit dem ADC-Wert 0x000 die maximal "niedrigste" Audiospannung (=1,65V-1,65V) und bei 0xFFF die maximal höchste (=1,65V+1,65V).
Es ist keine Schande, da ruhig mal eine Nacht drüber nachzudenken. Irgendwann fällt der Groschen...
Es ist keine Schande, da ruhig mal eine Nacht drüber nachzudenken.
Irgendwann fällt der Groschen
Mit deiner ausführlichen Erklärung ist der Groschen wieder etwas weiter gefallen.
Irgendwie jede Stunde befindet
sich ein Signal auf der 230V Zuleitung???
Um die Spannungsversorgung vom uC auszuschließen habe ich auch das
Mikrofon mit einem Labornetzteil betrieben. Das Signal ist dort deutlich
geschwächt aber vorhanden.
Anbei die Bilder vom Spectrum und das wav file. Die Aufnahme wenn das
Signal weg ist, spare ich euch, denn da ist kein Rauschen etc...
Bei einem 65dBA SNR wie rechne ich zurück, damit ich weiß, wie hoch die
Spannung bei einer bestimmten Frequenz ist, bei absoluter Stille im
Raum? Denn das dBA bedeutet ja, das tiefe Frequenzen anders gewichtet
werden.
Die Gewichtung ist nicht das einzige Problem, sondern auch dass es keine Angabe vom Rauschen über Frequenz gibt. Es kann nämlich gut sein dass das Mikrofon bei höheren Frequenzen deutlich stärker oder auch weniger stark rauscht wie bei niedrigen Frequenzen. Dafür gibt es aber eine einfache Lösung, nämlich einfach die Platine mit Platine dick in Dämmwolle einwickeln und dann gucken was an Ausgangssignal rauskommt.
Kann ich mit diesen Information eine Umrechnung nach dBA und nach dBA
SPL machen?
Die Umrechnung von Spannung nach dBV kannst du dir aus dem obigen Link ableiten, 0dBV wären 132dB SPL bei 1kHz. Bei anderen Frequenzen musst du den Typical Frequency Response mit einrechnen. Der zeigt bei 40Hz z.B. -5dB, sprich das Ausgangssignal ist 5dB geringer als bei 1kHz. 0dBv bei 40Hz wären also 137dB SPL.
Bei einem 65dBA SNR wie rechne ich zurück, damit ich weiß, wie hoch
die Spannung bei einer bestimmten Frequenz ist, bei absoluter Stille im
Raum? Denn das dBA bedeutet ja, das tiefe Frequenzen anders gewichtet
werden.
Bei absoluter Stille ist der Wert für "Noise Floor" vom Mikrofon ausschlaggebend für das Ausgangssignal bzw. "Equivalent Input Noise" wenn man wissen will welchem Schallpegel das Rauschen entspricht. Ist leider nur ein Wert A-weighted angegeben, wie sich das Rauschen genau im Frequenzbereich verteilt ist nicht weiter spezifiziert.
Für das Signal am ADC muss man natürlich noch den Verstärker dazwischen einrechnen. Welcher Verstärkungsfaktor das ist kann man aus den Angaben nicht erkennen weil nicht angegeben ist auf welchen Schallpegel sich der Wert "Output Voltage: 200mVpp" bezieht. Eventuell kann man den Schaltplan verstehen (ist ja nicht so komplex mit einem einzigen OP) und die Widerstandswerte mit einer Lupe ablesen.
Und natürlich muss dieser OP VCC/2 = 1,65V als "Nullspannung" ausgeben,
denn dann kann von dort aus symmetrisch -1,65V und +1,65V ausgeben und
bleibt damit voll im Eingangsbereich des unipolaren ADC von 0..3,3V. Du
hast dann also mit dem ADC-Wert 0x000 die maximal "niedrigste"
Audiospannung (=1,65V-1,65V) und bei 0xFFF die maximal höchste
(=1,65V+1,65V).
Dazu habe ich noch eine Frage.
Wenn ich die Abtastwerte umrechnen möchte nach dB.
Habe ich das bis jetzt wie folgt gemacht:
Nach dem Entfernen des DC-Offsets
Jeden Sample ins Quadrat genommen
Diese Aufsummiert bis Anzahl x erreicht
Durch Anzahl x geteilt
Wurzel gezogen
Dieses Ergebnis habe ich dann mit der Formel:
20*log10(Ergebnis / 4096)
Ist das überhaupt korrekt? Weil mein Ergebnis kann ja nur 0 bis 2048 sein. Ich schaue dann ja nur auf den Effektive Wert.
Müsste ich dann nicht noch das Ergebnis mal Wurzel2 um die Spitzenspannung zu kommen und dann noch mal 2 um auf die Spitzenspitzenspannung zu kommen und dieses Ergebnis in dB umwandeln?
Dafür gibt es aber eine
einfache Lösung, nämlich einfach die Platine mit Platine dick in
Dämmwolle einwickeln und dann gucken was an Ausgangssignal rauskommt.
Kannst du dafür eine passende USB Soundkarte empfehlen?
Ich habe eine Behringer UCA202. Und damit geht das wohl nicht, denn ich habe bei einem leisen Raum kein Pegel. Und ich denke, das die Soundkarte das Rauschen unterdrückt.
Ich möchte kein Messinstrument bauen. Ich möchte mich mit der Thematik befassen. Und finde das Thema interessant.
Wenn ich mit der USB Soundkarte über das MEMS Mikrofon Töne aufnehme. Dann mit z.b audacity ein spektrum mir anzeigen lasse. Kann ich diese dB Werte zurück in Spitzenspannung transferieren?
Hier: Beitrag "Re: Analog MEMS Mikrofon am Mikrocontroller"
wäre so ein Bild von einem Spectrum mit der USB Soundkarte und dem MEMS Mikrofon erstellt.
Als Beispiel nehmen wir mal das erste Bild MEMS_am_uC_RMS_-22.65.
Bei ca. 42Hz einen Pegel von -45dB. Kann ich das zurück rechnen in Spannung?
Für das Signal am ADC muss man natürlich noch den Verstärker dazwischen
einrechnen. Welcher Verstärkungsfaktor das ist kann man aus den Angaben
nicht erkennen weil nicht angegeben ist auf welchen Schallpegel sich der
Wert "Output Voltage: 200mVpp" bezieht. Eventuell kann man den
Schaltplan verstehen (ist ja nicht so komplex mit einem einzigen OP) und
die Widerstandswerte mit einer Lupe ablesen.
Muss man nicht, bei 94dB SPL @1kHz kommen -38dBV raus.
Kannst du dafür eine passende USB Soundkarte empfehlen?
Ich habe eine Behringer UCA202. Und damit geht das wohl nicht, denn ich
habe bei einem leisen Raum kein Pegel. Und ich denke, das die Soundkarte
das Rauschen unterdrückt.
Ich denke nicht dass dem so ist. Mit der Behringer sollte das Rauschen messbar sein, einen Filter hat sie definitiv nicht. Hast du die Platine dabei mit Spannung versorgt? Am Ausgang kommt natürlich nur was raus wenn der OPV Saft bekommt.
Kann ich diese dB Werte zurück in Spitzenspannung transferieren?
Die sicherste Aussage erhälst du indem du die Soundkarte "kalibrierst", z.B. indem du 1V mit 1kHz einspeist und dir anguckst was audacity dabei anzeigt. Alternativ kannst du auch mit den Datenblattangaben arbeiten, dort steht dass das Max. input level bei 2 dBV liegt, was in Audacity 0dB entsprechen müsste.
Die sicherste Aussage erhälst du indem du die Soundkarte "kalibrierst",
z.B. indem du 1V mit 1kHz einspeist und dir anguckst was audacity dabei
anzeigt.
Das ist schnell gemacht. Amplitude ist 1Vpp und Frequenz ist 1kHz.
Anbei das Bild vom Spektrum.
Das ist schnell gemacht. Amplitude ist 1Vpp und Frequenz ist 1kHz.
Anbei das Bild vom Spektrum.
also -11dB in Audacity bei -9dBV am Eingang, was zur Annahme passt dass 0dB in Audacity 2dBV entspricht. Du kannst dementsprechend vom Wert in Audacity 2dB abziehen und hast dann dBV.
Für das Signal am ADC muss man natürlich noch den Verstärker dazwischen
einrechnen. Welcher Verstärkungsfaktor das ist kann man aus den Angaben
nicht erkennen weil nicht angegeben ist auf welchen Schallpegel sich der
Wert "Output Voltage: 200mVpp" bezieht. Eventuell kann man den
Schaltplan verstehen (ist ja nicht so komplex mit einem einzigen OP) und
die Widerstandswerte mit einer Lupe ablesen.
Muss man nicht, bei 94dB SPL @1kHz kommen -38dBV raus.
Das ist der Wert vom Mikrofon selbst aus dem Datenblatt. Aber immerhin gibt es auf der Sparkfun-Seite auch einen Schaltplan und da ist ein Gain von 64 angegeben, was auch ganz gut mit den Widerständen (300k/4.7k) zusammenpasst.
Für das Signal am Ausgang muss man also einfach die Angaben aus dem Mikrofon-Datenblatt mit 64 multiplizieren (bzw. 36 dB addieren), irgendwo geht der Verstärker aber natürlich in die Sättigung und ab einem gewissen Schallpegel wird es nichtlinear.
Bei 94 dB SPL hätte man z.B. -38 dBV am Mikrofon, +36 dB Verstärkung macht das -2dBV, also 0.8V RMS, sollte (bei 3.3V) noch halbwegs passen, ist ja ein Rail2Rail Operationsverstärker.
Das ist der Wert vom Mikrofon selbst aus dem Datenblatt.
Das Datenblatt bezieht sich auf die Platine mit Mikrofon und OPV. Dementsprechend sollte das 64x-Gain bei den Spannungswerten bereits berücksichtigt sein.
Das Datenblatt bezieht sich auf die Platine mit Mikrofon und OPV.
Dementsprechend sollte das 64x-Gain bei den Spannungswerten bereits
berücksichtigt sein.
Nein, zumindest die angehängte Datei "DS-000021-v1.22.pdf" ist einfach nur das Datenblatt zu dem ICS-40180 Mikrofon, inklusive SMD-Footprint und allem, das Dokument ist definitiv nur für das Mikrofon und nicht die Sparkfun-Platine. Von Sparkfun gibt es noch etwas zusätzliche Dokumentation zu der Platine, z.B. den Schaltplan.
Bei 94 dB SPL hätte man z.B. -38 dBV am Mikrofon, +36 dB Verstärkung
macht das -2dBV, also 0.8V RMS, sollte (bei 3.3V) noch halbwegs passen,
ist ja ein Rail2Rail Operationsverstärker.
Wenn Audacity also bei 1kHz 0dB zeigt, was 2dBV entspricht, hat man 98dB SPL am Mikrofon. Bei 40Hz und 0dB in Audacity hat man 103dB SPL am Mikrofon.
Wieso produziert deine Anordnung soviel DC-Offset?
Ich habe das gerade auch in einem deiner anderen Beiträge gelesen, wo du die violetten Bilder gepostet hast. Mikrofone sollten doch keinen Offset intus haben. Spätestens bei AC-Koppelung ist doch Schluss mit DC(???)
Als Beispiel nehmen wir mal das erste Bild MEMS_am_uC_RMS_-22.65.
Bei ca. 42Hz einen Pegel von -45dB. Kann ich das zurück rechnen in
Spannung?
Sind also -43dBV und damit 20mVss.
Bei 1kHz würde das 98dB SPL bei Vollaussteuerung (0dB in Audacity) - 45dB = 53dB SPL entsprechen. Bezieht man dann noch den Frequenzgang vom Mikrofon mit ein, landet man bei 42Hz bei ungefähr 58dB SPL.
Habe das mit dem Rechner mal nachgerechnet und wollte dich fragen.
Warum hast du die -38dBV bei dem ersten Rechner von links eingesetzt. Dort soll doch dBu eingesetzt werden. Hat das eine Grund oder hast du dich vertan?
Einmal direkt an 3.3V am Mikrocontroller. Und einmal 3.3V vom Labornetzteil.
ABER JETZT kommt das ABER. Ich denke das ist kein Störgeräusch aus dem Netz. Das habe ich gedacht, weil es nicht immer da war. Jetzt habe ich das MEMS Mikrofon mal am Labornetzteil mit 2.5V betrieben und siehe da, kein Störsignal mehr. Warum ist das so? Anbei 2 Bilder. Einmal mit 2.5V und einmal mit 2.6V. Genau ab 2.6V entsteht das Störgeräusch und wird pro 0.1V immer lauter.
"Equivalent Input Noise"
wenn man wissen will welchem Schallpegel das Rauschen entspricht.
Der wäre bei diesem Mikrofon bei 29dBA SPL.
Als Beispiel nehmen wir die Frequenz 1kHz. 94dBA SPL bei -38dBV.
Weil dies laut Datenblatt so definiert ist. Und weil laut Figure 7 dbA SPL und dBV linear verläuft, das eins zu eins hoch und runter rechnen.
Also sind bei 29dBA SPL sind dann bei 1Khz -103dbV?
Dann ist der Rauschteppich so breit wo er sich auch befindet?
Mhh könnte dazu jemand noch was schreiben, damit das klarer wird?
Für das Signal am Ausgang muss man also einfach die Angaben aus dem
Mikrofon-Datenblatt mit 64 multiplizieren (bzw. 36 dB addieren)
Vielen Dank für diese Info. Ich würde damit es zur keiner Verwirrung kommt die Daten aus dem Datenblatt ohne diesen Verstärker zu dimensionieren.
Trotzdem meine Frage. Wenn der GAIN auf 64 eingestellt ist. Müssen dann alle Werte um den Faktor 64 multipliziert werden? Und wie kommst du auf die 36dB addieren? Weil 20*log10(1/2^6) = -36dB entspricht? Weil der Nenner um 64x größer wird?
also -11dB in Audacity bei -9dBV am Eingang, was zur Annahme passt dass
0dB in Audacity 2dBV entspricht. Du kannst dementsprechend vom Wert in
Audacity 2dB abziehen und hast dann dBV.
Danke ich musste ein paar mal nachrechnen, da mich diese negativen Werte etwas verrückt gemacht haben.
Bei 1kHz würde das 98dB SPL bei Vollaussteuerung (0dB in Audacity) -
45dB = 53dB SPL entsprechen. Bezieht man dann noch den Frequenzgang vom
Mikrofon mit ein, landet man bei 42Hz bei ungefähr 58dB SPL.
Okay da der extra OpAmp da nun mit drin ist im Schaltkreis, muss der dort mit einbezogen werden? Weil ich konnte jetzt nicht ganz nachvollziehen, woher die Werte kommen. Könnt ihr da bitte nochmal näher drauf eingehen?
Das Audiospektrum hat kein wirkliches unteres Ende ... Es wird von der Technik, von derem Marketing auferlegt.
Musik und Audio sind nur zufaellig beisammen, es gibt auch technische Anwendungen mit mikrophonen, ohne Musik..
Die Frage ist auch, welche Stoerungen kommen wann rein. Ein schwacher Seitenwind ans Mikro erzeugt Signale unter 100Hz.