Forum: Mikrocontroller und Digitale Elektronik Auswertung eines PDM Signals um die Lautstärke zu messen


von Krung P. (krung)


Angehängte Dateien:

Lesenswert?

Hallo,

wir sind ganz neu hier und für alle Ratschläge dankbar :)

Für ein Projekt sollen wir ein Lautstärkemessgerät implementieren.
Wir benutzen das Stellaris Board EK-LM328962 der Firma Texas 
Instruments. Wir haben als Mikrofon das Knowles SPM0423 gewählt, welches 
ein PDM  (Pulse-density modulation) Ausgang besitzt.

Beim PDM Signal ist die Dauer des Pulses immer konstant. Je größer das 
zu konvertierende Eingangssignal (hier bei uns Lautstärke), desto mehr 
Pulse konstanter Dauer werden pro Zeiteinheit erzeugt und dadurch können 
wir die genaue Lautstärke berechnen. Siehe 
Pulse-density_modulation_1_period.gif

Wir haben soweit auch schon ein Schaltplan entworfen und bereits 
realisiert.

Am Data Ausgang des Mikrofons haben wir per Oszilloskop bereits 
Änderungen bei Geräuschen feststellen können. Genauer genommen haben wir 
ins Mikro reingepustet und am Oszilloskop ergaben sich mehr bzw. ein 
längerer High Pegel als bei Umgebungslautstärke.

Nun ist die Frage, wie genau wir dieses Signal am Board in Lautstärke 
(dB) umrechnen.

Für jegliche Hilfe und konstruktive Kritik sind wir sehr dankbar.

von Christian B. (casandro)


Lesenswert?

Also

a) dB ist ein Verhältnismaß es gibt den Faktor zwischen 2 Leistungen an. 
Deshalb gibt es bei den Schallpegeln bestimmte Normwerte zu denen man 
die relativ misst. Streng genommen brauchst Du dafür ein Kalibriertes 
Mikrofon.

b) "Lautstärke" ist nicht definiert. Das gibts als Messgröße nicht. Es 
gibt die Lautheit in Sone, die die wahrgenommene Lautheit bewertet sowie 
Schallpegel welche die Leistung des Signales wiedergeben. Dazwischen 
sind noch bewertete Schallpegel welche vor die Bestimmung der Leistung 
noch einen Filter schalten.

Falls der Aufgabensteller Dir a) und b) nicht beantworten kann, dann 
würde ich den simpelsten Weg gehen und einfach die Spitzenwerte 
innerhalb eines Zeitrahmens bestimmen. Rechne das PDM-Signal zunächst in 
ein PCM-Signal um (tiefpassfiltern) und greife Dir dann Zeitbereiche 
raus in denen Du den höchsten und den niedrigsten Wert bestimmst. Die 
Differenz ist ungefähr proportional zur Wurzel der Leistung.

Willst Du mehr machen, quadriere jeden Abtastwert und addiere die 
Ergebnisse. Dieser Wert ist genau proportional zur Leistung.

von Anselm 6. (anselm68)


Lesenswert?

Wenn es nicht vorkommen kann dass ein dauerhaftes High am ausgang 
vorhanden ist, dann kannst du auch einfach mit einem counter die Pulse 
per Zeiteinheit messen. (Diese Info sollte im Dateblatt stehen))
Ich vermute dass es genau aus diesem Grund diese PDM gibt, denn bei 
einer PWM wäre der Aufwand es digital oder sogar analog zu machen 
erheblich größer.


Gruß
Anselm

von A. F. (chefdesigner)


Lesenswert?

Krung Phax schrieb:
> Beim PDM Signal ist die Dauer des Pulses immer konstant.
Meinem Verständnis nach ist dem NICHT so. Die Pulswechselfrequenz ist 
abhängig von der Steilheit des Eingangsignals und bei Regelung bzw 
Betrachtung des physikalischen Ausgangs auch von dem der Belastung. Dann 
gab es da noch eine Totzeit, Überlappung und Schaltverluste.

von Krung P. (krung)


Lesenswert?

@casandro

Wir haben nun das Signal zu einem PCM gewandelet und lesen das Signal 
mit einem ADC aus. Die Werte schwanken zwischen stillen Raum (1.5V) und 
max. Lautstärke (3.0V).
Wir könnten jetzt in einem bestimmten Zeitbereich Minima und Maxima 
suchen und diese subtrahieren. Jedoch wissen wir nicht, was wir genau 
damit anfangen sollen. Was ist das dann für eine Leistung, die wir da 
bekommen? Kannst du dann auch den 2. Vorschlag von dir erklären mit dem 
quadrieren?

von Krung P. (krung)


Lesenswert?

Christian Berger schrieb:

Wir haben nun das Signal zu einem PCM gewandelet und lesen das Signal
mit einem ADC aus. Die Werte schwanken zwischen stillen Raum (1.5V) und
max. Lautstärke (3.0V). Wir wollen die Lautstärke in dB ausgeben und 
haben auch ein Schalldruckpegelmessgerät.
>
> Falls der Aufgabensteller Dir a) und b) nicht beantworten kann, dann
> würde ich den simpelsten Weg gehen und einfach die Spitzenwerte
> innerhalb eines Zeitrahmens bestimmen. Rechne das PDM-Signal zunächst in
> ein PCM-Signal um (tiefpassfiltern) und greife Dir dann Zeitbereiche
> raus in denen Du den höchsten und den niedrigsten Wert bestimmst. Die
> Differenz ist ungefähr proportional zur Wurzel der Leistung.

Wir haben nun das Signal zu einem PCM gewandelet und lesen das Signal
mit einem ADC aus. Die Werte schwanken zwischen stillen Raum (1.5V) und
max. Lautstärke (3.0V).

>
> Willst Du mehr machen, quadriere jeden Abtastwert und addiere die
> Ergebnisse. Dieser Wert ist genau proportional zur Leistung.

Kannst du dann auch den 2. Vorschlag von dir erklären mit dem
quadrieren?

: Bearbeitet durch User
von Christian B. (casandro)


Lesenswert?

Also wenn ihr das Signal jetzt als PCM vorliegen habt müsst ihr 
folgendes machen:

1. Eine Bewertungsfunktion definieren, das ist im einfachsten Falle 
einfach ein Hochpassfilter mit sehr niedriger Frequenz damit ihr den 
Gleichspannungsanteil weg bekommt.

2. Den RMS-Wert bestimmen. Dafür einfach jeden Abtastwert quadrieren und 
dann über das Ergebnis einen Tiefpassfilter mit einer Grenzfrequenz von 
zum Beispiel 4 Hz legen.

3. Die Werte die ihr aus 2 bekommt logarithmieren und über das 
Schalldruckpegelmessgerät mit einfachen Schallquellen kalibrieren.

von Krung P. (krung)


Lesenswert?

Christian Berger schrieb:
> Also wenn ihr das Signal jetzt als PCM vorliegen habt müsst ihr
> folgendes machen:
>
> 1. Eine Bewertungsfunktion definieren, das ist im einfachsten Falle
> einfach ein Hochpassfilter mit sehr niedriger Frequenz damit ihr den
> Gleichspannungsanteil weg bekommt.
> 2. Den RMS-Wert bestimmen. Dafür einfach jeden Abtastwert quadrieren und
> dann über das Ergebnis einen Tiefpassfilter mit einer Grenzfrequenz von
> zum Beispiel 4 Hz legen.
> 3. Die Werte die ihr aus 2 bekommt logarithmieren und über das
> Schalldruckpegelmessgerät mit einfachen Schallquellen kalibrieren.

Ich verstehe grundsätzlich nicht, wieso aus dem RMS-Wert ein dB Wert 
entsteht. Wie hängt das Eingangssignal genau mit dem Schallpegel ab? 
Hast dazu noch Literatur?

Wenn ich jeden Abtastwert quadriere, ist dieser ja immer noch in 
"Volt^2" , was bringt dann ein Tiefpassfilter darüber? Was genau soll 
hier gefiltert werden?

Für 3. haben wir schon z.B. die Schallleistung logarithmiert, und es 
kommen auch halbwegs sinnvolle dB Werte raus.

von Christian B. (casandro)


Lesenswert?

Krung Phax schrieb:
> Ich verstehe grundsätzlich nicht, wieso aus dem RMS-Wert ein dB Wert
> entsteht. Wie hängt das Eingangssignal genau mit dem Schallpegel ab?
> Hast dazu noch Literatur?

dB gibt das Verhältnis zwischen 2 Leistungen an. Der RMS-Wert ist eine 
Leistungsaquivalente Spannung.

> Wenn ich jeden Abtastwert quadriere, ist dieser ja immer noch in
> "Volt^2" , was bringt dann ein Tiefpassfilter darüber? Was genau soll
> hier gefiltert werden?

I=U/R
P=U*I
=> P=U*U/R=U²/R


> Für 3. haben wir schon z.B. die Schallleistung logarithmiert, und es
> kommen auch halbwegs sinnvolle dB Werte raus.

Ja, die müsst ihr noch entsprechend skalieren.

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.