Forum: Mikrocontroller und Digitale Elektronik Schalldruckpegel ermitteln mit Arduino?


von Denni D. (delphi)


Lesenswert?

Hi,

fällt jemanden ein fertiges Bauteil ein mit dem ich den aktuell 
vorherrschenden Schalldruckpegel in dB(A) in den Arduino bekomme? 
Vorzugsweise I²C oder per ADC.

Die ersten Versuche mit Elektretmikro und MPC3008 waren nicht wirklich 
erfolgreich, die Werte vom ADC geben nicht die Lautstärke wieder... 
schwankt sehr stark. Ich tippe mal drauf ich brauche noch irgend einen 
Verstärker für das Mikro und ggf. etwas Mathefoo um die Peaks 
rauszurechnen?

von THOR (Gast)


Lesenswert?

Nötiger Frequenzbereich?

Falls 0-15kHz ausreichen:

Lautsprecher an ADC anschließen, samplen, MATLAB (das ist der 
Fachbegriff für Mathefoo).

Beachte, dass gefühlte Lautheit Frequenzabhängig ist. Ein 3kHz Sinus 
hört sich mindestens doppelt so laut an wie ein 50Hz Brummen gleicher 
Amplitude.

von Denni D. (delphi)


Lesenswert?

THOR schrieb:
> Nötiger Frequenzbereich?
>
> Falls 0-15kHz ausreichen:
>
> Lautsprecher an ADC anschließen, samplen, MATLAB (das ist der
> Fachbegriff für Mathefoo).
>
> Beachte, dass gefühlte Lautheit Frequenzabhängig ist. Ein 3kHz Sinus
> hört sich mindestens doppelt so laut an wie ein 50Hz Brummen gleicher
> Amplitude.

Der Frequenzbereich passt, sollte halt alles von der stillen Blumenwiese 
(etwa 40dB?) bis zum Presslufthammer abgedeckt werden können.

Matlab bedingt doch aber wieder einen 2. Rechner + Rechenleistung?
Wäre Vorteilhaft wenn der Arduino das alles selbst hinkriegen würde.
Ich dachte jetzt eher dran einen Spannungspegel zu messen und den Wert 
dann anhand einer Schalldrucktabelle umzurechnen. Kommt da nicht aufs 
Dezibel an, aber so +-5dB wäre an Genauigkeit schon schön.

Oder gibt es fertige (und günstige) kompakte Schalldruckpegelmesser die 
I2C oder so haben?

Mir ist nicht so ganz klar ob das hier brauchbare Werte liefert:

https://learn.adafruit.com/adafruit-microphone-amplifier-breakout/measuring-sound-levels

: Bearbeitet durch User
von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Denni D. schrieb:
> Die ersten Versuche mit Elektretmikro und MPC3008 waren nicht wirklich
> erfolgreich, die Werte vom ADC geben nicht die Lautstärke wieder...
> schwankt sehr stark. Ich tippe mal drauf ich brauche noch irgend einen

 Selbstverständlich schwankt das, es gibt keinen Ton ohne Frequenz.
 So etwas kann man nur mit Drucksensor messen.

 Entweder nur die Peak Werte nehmen oder Durchschnitt über einen
 gewissen Zeitraum ausrechnen.

von THOR (Gast)


Lesenswert?

Denni D. schrieb:
> Der Frequenzbereich passt, sollte halt alles von der stillen Blumenwiese
> (etwa 40dB?) bis zum Presslufthammer abgedeckt werden können.

Nen AAF brauchst du zwingend, die Oberwellen vom Presslufthammer werden 
dann weggefiltert. Aber die tragen auch kaum zum Schalldruckpegel bei.

Denni D. schrieb:
> Matlab bedingt doch aber wieder einen 2. Rechner + Rechenleistung?
> Wäre Vorteilhaft wenn der Arduino das alles selbst hinkriegen würde.

Bis 20kHz kann ein Atmega noch selbst samplen und nen simplen FIR 
darstellen. Da kommts ein bischen auf deine Anforderungen an und deine 
MATLAB/Programmierkünste.
Programmierung vermutlich in nacktem C ohne Arduino wegen Overhead.

Denni D. schrieb:
> Ich dachte jetzt eher dran einen Spannungspegel zu messen und den Wert
> dann anhand einer Schalldrucktabelle umzurechnen. Kommt da nicht aufs
> Dezibel an, aber so +-5dB wäre an Genauigkeit schon schön.

Spannungspegel und Schalldruckpegel haben mit sehr geringer 
Wahrscheinlichkeit einen linearen Zusammenhang. Könntest du das Gerät 
kalibrieren?

Denni D. schrieb:
> Oder gibt es fertige (und günstige) kompakte Schalldruckpegelmesser die
> I2C oder so haben?

Jo, so VU-Meter Sachen. OPV + Hüllkurvendemodulator. Inwiefern die 
Peak-Amplitude der Spannung Rückschlüsse über den Schalldruckpegel 
liefern kann weiss ich nicht.
Da der Schalldruckpegel als Eingangsgröße den Effektivwert des 
Schalldrucks hat, funktioniert das bestimmt nur bei reinem Sinuston und 
Technobässen ausreichend gut.

Denni D. schrieb:
> Mir ist nicht so ganz klar ob das hier brauchbare Werte liefert:
>
> 
https://learn.adafruit.com/adafruit-microphone-amplifier-breakout/measuring-sound-levels

Naja. Bei der Samplingrate eher nicht. Aber die Software kannst du ja 
anpassen. Aber das Ding ist halt auch nicht viel: Mikrophon, Verstärker.

Arduino ist halt oft Blinki-Bunti Spielerei. Sachen fürs Auge. 
Messtechnik bekommst du bei Adafruit nicht.

von Denni D. (delphi)


Lesenswert?

Marc V. schrieb:

>  Selbstverständlich schwankt das, es gibt keinen Ton ohne Frequenz.
>  So etwas kann man nur mit Drucksensor messen.

Es schwankte auch bei Testtönen, da hätte ich halbwegs konstante Werte 
erwartet... nunja.

>  Entweder nur die Peak Werte nehmen oder Durchschnitt über einen
>  gewissen Zeitraum ausrechnen.

Und wie? Ich nehme mal an es ist schlauer das analog zu bauen und dann 
erst in den ADC einzuspeisen?






THOR schrieb:
> Nen AAF brauchst du zwingend, die Oberwellen vom Presslufthammer werden
> dann weggefiltert. Aber die tragen auch kaum zum Schalldruckpegel bei.

AAF?

> Bis 20kHz kann ein Atmega noch selbst samplen und nen simplen FIR
> darstellen. Da kommts ein bischen auf deine Anforderungen an und deine
> MATLAB/Programmierkünste.
> Programmierung vermutlich in nacktem C ohne Arduino wegen Overhead.

Programmierkünst? Ich? Gar keine. :) Und nun?

Klingt für mich so als sollte die Schaltung das Signal schon als 
Durchschnittswert liefern damit der ADC nur noch die generelle Stärke 
messen muss?

> Spannungspegel und Schalldruckpegel haben mit sehr geringer
> Wahrscheinlichkeit einen linearen Zusammenhang. Könntest du das Gerät
> kalibrieren?

Keine Ahnung. Auf Ebay und Amazon verramschen die für 10-20€ 
Schallpegelmessgeräte. Ob die gut genug sind? Wie testet man das 
ansonsten?
Sinuston auf die Boxen und dann Messgerät + Selbstbausensor messen 
lassen und gucken dass man es angleicht?

> Jo, so VU-Meter Sachen. OPV + Hüllkurvendemodulator. Inwiefern die
> Peak-Amplitude der Spannung Rückschlüsse über den Schalldruckpegel
> liefern kann weiss ich nicht.
> Da der Schalldruckpegel als Eingangsgröße den Effektivwert des
> Schalldrucks hat, funktioniert das bestimmt nur bei reinem Sinuston und
> Technobässen ausreichend gut.

Hilft also nicht?

> Naja. Bei der Samplingrate eher nicht. Aber die Software kannst du ja
> anpassen. Aber das Ding ist halt auch nicht viel: Mikrophon, Verstärker.

Anpassen ist gut wenn ich keine AHnung von nichts habe. ;)

von THOR (Gast)


Lesenswert?

Denni D. schrieb:
> Anpassen ist gut wenn ich keine AHnung von nichts habe. ;)

Für absolut alles was du in deinem Leben tun willst, ist das eine sehr 
schlechte Vorraussetzung.

Vorschlag: Du baust den Adafruit Bausatz nach, passt ihn an deine 
Wünsche an und entweder reicht das oder nicht. In beiden Fällen hast du 
dich von deiner selbstverschuldeten Unmündigkeit befreit, ggf. auch 
Lehrgeld bezahlt.

Denni D. schrieb:
> Sinuston auf die Boxen und dann Messgerät + Selbstbausensor messen
> lassen und gucken dass man es angleicht?

Ja, das ist die Definition von Kalibrierung. Bis auf den Sinuston, da 
ist der Effektivwert ja denkbar einfach. Mehrere überlagerte Sinustöne 
mit Rauschen, da wirds spannend.
Es gibt auch Musik die super als Testsignal geeignet ist: Iron Maiden 
Solos, King of my castle. Auf letzteres kannste sogar ein Oszi triggern 
:P

So Messgeräte (also Gute jetzt) gibts in der Veranstaltungstechnik. Geh 
mal auf ein Festival und frag die Jungs am Soundturm. Stadtverwaltungen 
werden sowas auch haben, wenn du da jemand kennst...

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

https://www.elv.de/multifunktions-umweltmessgeraet.html
"Schallpegel bis 130 dB, Messcharakteristik A, fast (an die 
Hörpsychologie angepasste Frequenzkurve, erlaubt auch das Erfassen 
kurzer Pegelspitzen)"
54,95€ mit RS232-Schnittstelle, wäre auch eine Möglichkeit.

Für dB-lineare Darstellung gibt es die True-RMS-ICs von Analog.com, 
AD536/636 und andere, teilweise schon mit dB-Ausgang.

von René H. (Gast)


Lesenswert?

Denni D. schrieb:
> AAF?

Anti-Aliasing Filter

Grüsse,
René

von Sebastian L. (sebastian_l72)


Lesenswert?

Denni D. schrieb:
> Hi,
>
> fällt jemanden ein fertiges Bauteil ein mit dem ich den aktuell
> vorherrschenden Schalldruckpegel in dB(A) in den Arduino bekomme?
Spielzeug, Werkzeug oder Messzeug?

In der Kategorie Messzeug:
https://www.bksv.com/~/media/literature/Catalogue/bf0236.ashx?la=en

von Denni D. (delphi)


Lesenswert?

So, ein paar Tage krank gewesen und trotzdem noch nicht weiter. :)

Sebastian: ich finde da jetzt aber auch irgendwie nichts an kleinen 
Bauteilen dass mir hinten ein serielles Signal mit dem dBA-Wert 
ausspuckt, oder bin ich blind?

Was ich jetzt aktuell hier liegen habe: ein Elektretmikro, einen MCP3008 
8-Kanal 10-Bit ADC, irgend ein OpAmp (MCP oder so, muss ich nachsehen), 
diverse Widerstände und Kondensatoren.

Braucht es da jetzt noch was an Antialaisingfilter vor dem 
Digitalisieren um den Pegel zu mitteln oder geht das auch so?

Ich hab parallel auch zwei China-Pegelmesser die beide dBA messen 
besorgt. Leider erkenne ich laut Datenblätter bei denen auch keine 
Möglichkeit irgend ein Datensignal abzugreifen. Scheinbar machen die 
Microcontroller genau den Job, den ich für meinen Arduino vorgesehen 
habe:

http://i.imgur.com/qq50XTN.jpg
http://i.imgur.com/szOt3SH.jpg

von Wolfgang (Gast)


Lesenswert?

Denni D. schrieb:
> Der Frequenzbereich passt, sollte halt alles von der stillen Blumenwiese
> (etwa 40dB?) bis zum Presslufthammer abgedeckt werden können.

Denni D. schrieb:

> Was ich jetzt aktuell hier liegen habe: ein Elektretmikro, einen MCP3008
> 8-Kanal 10-Bit ADC, irgend ein OpAmp (MCP oder so, muss ich nachsehen),
> diverse Widerstände und Kondensatoren.
>
> Braucht es da jetzt noch was an Antialaisingfilter vor dem
> Digitalisieren um den Pegel zu mitteln oder geht das auch so?

Wenn dein Presslufthammer nicht hundert Meter entfernt stehen soll, 
rechne dir mal aus, welche Dynamik dein ADC hat und auf welche Dynamik 
es dein Signal bringt. Das könnte als direkte, lineare Messung zumindest 
knapp werden, ganz abgesehen von den Anforderungen an Mikrophon nebst 
Vorverstärker.

von R. F. (rfr)


Lesenswert?

Du kannst den Schalldruck nur als Wert bei einer bestimmten Frequenz 
messen. Diese A-Kurve dus der dB-Norm  gibt den Empfindlichkeitsverlauf 
des menschlichen OHres wieder.

: Bearbeitet durch User
von Denni D. (delphi)


Lesenswert?

Wolfgang schrieb:

> Wenn dein Presslufthammer nicht hundert Meter entfernt stehen soll,

Die nächste Schallquelle wird wohl so 3-4m weg sein, die lauteste wohl 
so 15m (zumindest das, was im Nahbereich so passiert)

> rechne dir mal aus, welche Dynamik dein ADC hat und auf welche Dynamik
> es dein Signal bringt. Das könnte als direkte, lineare Messung zumindest
> knapp werden, ganz abgesehen von den Anforderungen an Mikrophon nebst
> Vorverstärker.

Linear messen (also von 1-1023 vom ADC) scheint hier ja keine plausiblen 
Ergebnisse zu geben. Ich habe schon Codebeispiele für Arduino und dBA 
gefunden, allerdings basieren die auf einem anderen MCP mit 12bit. 
Bringt Extra-Auflösung bei der Thematik was?

Magst du mir erklären wie ich ausrechne welche Dynamik ich mit Mikro + 
Verstärker wohl erreiche?

Ich habe das Mikro:

http://www.produktinfo.conrad.com/datenblaetter/300000-324999/301990-da-01-en-MIKROFONKAPSEL_EM3.pdf

Als Mikroverstärker hab ich u.a. dies hier als Anhalspunkt:
http://davidegironi.blogspot.de/2014/02/a-simple-sound-pressure-level-meter-spl.html#.WOBq6lXyhhE

Allerdings weiß ich nicht wie ich die Signalverarbeitung die dort in 
Processing passiert in den Arduino kriege...


R. F. schrieb:
> Du kannst den Schalldruck nur als Wert bei einer bestimmten Frequenz
> messen. Diese A-Kurve dus der dB-Norm  gibt den Empfindlichkeitsverlauf
> des menschlichen OHres wieder.

Darum geht es doch, soll ja gemessen werden ob es für Menschen zu laut 
ist. :) Ich hab hier zwei Pegelmesser, die benutzen auch nur 
Microcontroller + ADC, aber nirgendwo lässt sich da ein fertiges Signal 
abgreifen. Bei dem einen wird das LCD direkt vom Microcontroller 
angesteuert, beim anderen ein Displaytreiber, Nutzdaten bekomme ich da 
aber so leider nicht raus.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Denni D. schrieb:
> Linear messen (also von 1-1023 vom ADC) scheint hier ja keine plausiblen
> Ergebnisse zu geben.

Du wirst aber damit leben müssen, das logarithmische Verstärker 
heutzutage eher Nischenprodukte sind. Da SPL aber ein logarithmisches 
Mass für das Verhältnis zweier Schalldrücke ist, musst du irgendwo in 
deiner Signalkette den Logarithmus bilden. Ob das aber vor dem ADC, im 
ADC oder während der Berechnung des SPL passiert, ist für das Ergebnis 
egal.

Kurz: Wenn du von "Graswachsen" bis "Presslufthammer-in-3m" alles 
erfassen möchtest, müssen Mikrophon, Vorverstärker, ADC und 
Berechnungsalgorithmus eine entsprechende Dynamik besitzen.

R. F. schrieb:
> Du kannst den Schalldruck nur als Wert bei einer bestimmten Frequenz
> messen. Diese A-Kurve dus der dB-Norm  gibt den Empfindlichkeitsverlauf
> des menschlichen OHres wieder.

Der Schalldruckpegel hat mit der A-Kurve für den Empfindlichkeitsverlauf 
des menschlichen Ohres erstmal wenig zu tun, außer dass bei der 
Festlegung des Referenzwertes für 0dB zu 20µPa die Idee war, hier den 
Schalldruckpegel zu verwenden, der der Hörschwelle bei 1kHz entspicht 
(was aber nicht ganz gelungen ist).

Da die gewünschte Einheit der Messgröße "dB(A)" sein soll, geht es bei 
den Messungen anscheinend nicht um den gemessenen Schalldruckpegel, 
sondern um den bewerteter Schalldruckpegel. Der Schalldruckpegel muss 
also frequenzaufgelöst gemessen werden und mit der gewünschten 
Bewertungskurve gewichtet werden.
https://de.wikipedia.org/wiki/Frequenzbewertung

von Michael B. (laberkopp)


Lesenswert?

Denni D. schrieb:
> Bringt Extra-Auflösung bei der Thematik was?

Sind dir nicht mal die Grundzüge dessen bekannt, was du messen willst ?

dB ist eine logarithmische Kurve, +20 ist jeweils eine ver-10-fachung.

dB(A) gar eine frequenzgefilterte.

Du siehst das kommerzielle Gerät, erkennst daß dort einige Bauteile drin 
verbaut sind, und glaubst, FÜR DICH gäbe es das auch in einfacher ? 
Warum denkst du hat der Hersteller die Bauteile eingebaut, weil er sie 
übrig hatte ? Oder nicht vielleicht doch weil sie zu einer billigen aber 
korrekten Lösung des Problem nötig waren.

Dein Mikro liefert eine Spannung von 1.8mV Spitze-Spitze bei 94dB (SPL) 
bei 1kHz. Das 10-fache bei 114dB und 1/10 bei 74dB. Wenn du einen 10 bit 
A/D-Wandler einsetzt, wäre nicht mehr als ein 50dB Bereich anzeigbar. 
Das ist wohl nicht ganz so schlimm, da das miese Mikro auch bloss 40dB 
Rauschabstand hat. Was mir beim Mikro fehlt, ist eine Angabe welchen 
maximalen Schalldruckpegel es denn noch linear verarbeiten kann.

http://www.sengpielaudio.com/Rechner-db-volt.htm
http://www.sengpielaudio.com/Rechner-schallpegel.htm

Es gibt jetzt die Möglichkeit, das Mikrosignal bloss zu verstärken und 
von einem SCHNELLEN A/D-Wandler (über 100ksps) zu erfassen, dann digital 
im uC nach A-Kurve zu filtern und Spitzenwert zu bilden,

oder die A-Bewertung http://sound.whsites.net/project17.htm und 
Spitzenwertgleichrichtung http://sound.whsites.net/project60.htm (Figure 
4) extern mit OpAmps vorzunehmen bevor man das Ergebnis langsamer 
digitalisiert.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

THOR schrieb:
> Denni D. schrieb:
>> Sinuston auf die Boxen und dann Messgerät + Selbstbausensor messen
>> lassen und gucken dass man es angleicht?
>
> Ja, das ist die Definition von Kalibrierung.

Da täuscht du dich. Eine Kalibrierung erfasst erstmal nur die 
Abweichungen gegenüber einem Normal.

von Sebastian L. (sebastian_l72)


Lesenswert?

Denni D. schrieb:
> Sebastian: ich finde da jetzt aber auch irgendwie nichts an kleinen
> Bauteilen dass mir hinten ein serielles Signal mit dem dBA-Wert
> ausspuckt, oder bin ich blind?

Brüel & Kjær macht Messzeug. Da gibt es Komponenten. 
Mikrofonkapsel-Mikrofonverstärker-Transducer und Kalibrator deren 
Zusammensetzung auf die Anwendung abgestimmt werden. Rechne damit dass 
du für jedes Teil einen 4stelligen EUR Betrag bezahlen sollst. Die Kabel 
um es zu verbinden ca. einen kleinen schlagen noch einmal mit einem 
3-stelligen EUR Betrag zu Buche.

Eierlegende Wollmilchsäue haben die aber auch:
https://bksv.com/en/products/sound-and-vibration-meters/sound-level-meters-and-vibration-meters
Aber bitte nicht das Kalibrierwerkzeug vergessen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.