Im Folgenden wird die Entwicklung eines Noise-Level-Monitors für privatsphärebewusste Menschen beschrieben.
Allgemeines
Wenn viele Kinder in einem Raum sind, kann sich schnell ein hoher Schallpegel einstellen. Ziel dieses Projekts ist es, einen elektronischen Lautstärkemonitor zu entwickeln, der einen Lärmpegel in dB(A) für eine automatisierte Auswertung ermittelt, dabei aber technisch so aufgebaut ist, dass das eingebaute Mikrofon nicht zum Abhören des Raumes geeignet ist.
Auch soll die Schaltung mit vertretbarem Aufwand selbst aufgebaut werden können und einen möglichst großen Dynamikumfang haben. Ferner soll das System gegen die Nutzung als Abhöranlage geschützt sein, indem die gesamte Signalverarbeitung in Analogtechnik ausgeführt wird.
Grobkonzept
Blockschaltbild des Noise-Monitors
Zunächst wird der Raumschall mittels eines einfachen Elektret-Mikrophons aufgenommen. Das Signal wird durch einen mehrstufigen Verstärker nach Bedarf verstärkt und mittels eines A-Bewertungsfilters vorverzerrt.
Nun wird das Signal gleichgerichtet und gemittelt, optional ist ein echtes RMS-Filter in einem integrierten Schaltkreis denkbar. Dieses Signal enthält somit keine nutzbaren Audiodaten mehr.
Das resultierende Analogsignal wird dann digitalisiert und von einem Mikrocontroller zu einem dB-Wert umgerechnet.
Um einen möglichst großen Wertebereich erfassen zu können, wird die Verstärkerstufe durch den Controller verstellt, die Schaltintervalle werden mithile eines Komparators im analogen Signalpfad gefunden.
Details der Stufen
Mikrofon
Das Elektret-Micro wird mittels eines Transistors in Emitterfolger-Konfiguration mit Spannung mit ca. 5V versorgt. Diese Referenzspannung wird aus einem Spannungsteiler gewonnen, der mittels eines Elektrolyt-Kondensators für Wechselspannung kurzgeschlossen wird. So liegt an der Basis ein nahezu rauschfreier DC-Pegel an.
Der Trick in dieser Schaltung ist die sogenannte Kapazitäts-Multiplikation, aus Sicht des Mikrofons steht hier eine Kapazität in Höhe von etwa dem Kondenstorwert multipliziert mit dem Verstärkungsfaktor des Transistors (also größer 100) zur Verfügung. Der Spannungsabfall über den Transistor wurde möglichst groß gewählt um eine optimale “Abfederung” des über die Versorgungsspannung eingekoppelten Rauschens zu ermöglichen.
Der zweite Kondensator zwischen Emitter und GND dient eher zur Gewissensberuhigung als zur wirklichen Stabilisierung der Mikrophon Spannung. Er sollte den “Shot-Noise”, also das mit 1/f abklingende niederfrequent-dominierte Rauschen des Transistors abblocken.
Schaltplan des Mikrofon-Eingangs
Verstärker
Um das Signal für die folgenden Stufen auf- und vorzubereiten, werden mehrere Verstärkerstufen hintereinander geschaltet.
In jeder Stufe kann die Verstärkung zwischen 0dB und 20dB umgeschaltet werden. Es sind vier Verstärkerstufen vorhanden, sodass ein großer Amplitudenbereich von wenigen µV bis ca. 2V verarbeitet werden kann. Ziel ist es, die Gleichrichter/Mittelwertbilder im optimalen Amplitudenbereich zwischen 100mV und 6V zu versorgen.
Simulierter Frequenzgang einer Verstärkerstufe bei 20dB Verstärkung
Zwischen den Stufen befinden sich Bandpässe, die Nutzsignale zwischen 43 Hz und 28 kHz durchlassen.
Die Verstärkung wird vom Mikrofon her kommend zugeschaltet, sodass das Nutzsignal so früh wie möglich verstärkt wird. Dies sollte dem Signal-Rauschabstand dienlich sein.
Schaltplan einer Verstärkerstufe
A-Filter
Schaltplan der A-Bewertungsfilters
Zur Bewertung nach DIN EN ISO 9612 gibt ein Filter zur Bewertung des wahrgenommenen Schalldruckpegels vor. Hierbei ist zu beachten, dass diese Kurve streng genommen nur für kleine Schalldrücke gilt. Für hohe Lautstärken sollte die C-Bewertung herangezogen werden, was in der Praxis selten geschieht.
Das Filter selbst stammt von Rod Elliott (https://sound-au.com) als Projekt Nummer 17. In seinem Artikel beschreibt er die Schaltung nebst einer wirklich lesenswerten Abhandlung über die Sinnhaftigkeit der Anwendung als Bewertungskriterium.
Mittelwert-Stufe
Mittelwertbildung
Um die Kosten und Komplexität des Projekts im Rahmen zu halten, wird statt der korrekten RMS-Bewertung eine relativ einfache Mittelwertbildung zur Bewertung des Pegels genutzt. Dies führt bei nicht-sinusförmigen Lärmquellen (welche im Anwendungsfall zig tobende Kinder sind), zu einem Messfehler in der Größenordnung von 1..2dB.
Auch hier steht die Seite von Rod Elliott mit der App-Note 12 (Peak, RMS And Averaging Circuits) unter https://sound-au.com mit viel hilfreichen Fakten neben der reinen Schaltungstechnik als Informationsquelle zur Verfügung.
Messungen der Schaltung auf Lochraster ergaben eine gute Performance im Amplitudenbereich von 20mV bis ca. 4V. Auch wurde ein Messung des Frequenzgangs durchgeführt, hier zeigen sich leichte Überhöhungen bis ca. 100 Hz und einen leichten Abfall ab ca. 10kHz, allerdings bleiben sämtliche Effekte unter 2dB.
In der folgenden Graphik wurden bei konstanter Frequenz von 1 kHz verschiedene Signalpegel angelegt und die DC-Ausgangsspannung gemessen.
Output-Linearität
Deutlich erkennbar ist das Clippen der Schaltung über 4 Vac. Durch den Bereich vorher lässt sich eine Ausgleichsgerade finden, die den Zusammenhang gut beschreibt:
gnuplot> f(x)=a*b + b
gnuplot> fit [:3900] f(x) 'Rectifier_volt.csv' using 1:4 via a,b
After 4 iterations the fit converged.
final sum of squares of residuals : 3.16777e-05
rel. change during last iteration : -2.15086e-09
degrees of freedom (FIT_NDF) : 10
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 0.00177982
variance of residuals (reduced chisquare) = WSSR/ndf : 3.16777e-06
Final set of parameters Asymptotic Standard Error
======================= ==========================
a = 0.000900225 +/- 7.447e-07 (0.08273%)
b = 0.00223587 +/- 0.0006067 (27.14%)
Auch der Linearitätsfehler der Ausgangsspannung, verglichen mit der Eingangsspannung, liegt bei
dem Versuchsaufbau unter einem Prozent. Dies kann am Parameter a
und seiner Fehlerschätzung
von unter 0.1% erkannt werden. Der Parameter b
, der in der Ausgleichsgeraden
für den Offset-Fehler steht ergeben sich 2mV +/- 0.6mV, und damit sind Messwerte unter 20mV
mit mehr als 10% Fehler behaftet. Ein Chopper-OPV im Ausgangszweig könnte helfen, allerdings
ist ein Anheben des Pegels mittels Verstärkung im Hinblick auf Störimmunität und Bauteilstreuung
vermutlich sinnvoller.
Eine weitere Betrachtung wert ist das Durchkoppeln von AC-Signalen über den Frequenzgang, hierzu wurde bei konstantem Pegel von 1Vrms das Nutzfrequenzband durchgefahren und der AC-Anteil jeweils gemessen.
AC-Durchkopplung der Mittelwert-Stufe
Das Diagramm ist in dBV aufgetragen, sodass bei 1Vac Eingangspegel hier direkt die Dämpfung in dB abgelesen werden kann.
Es zeigt sich eine relativ gute AC-Unterdrückung ab ca. 20 Hz, hier liegt die Dämpfung über -60dB. Sollte ein AC-Unterdrückung >60 dB gewünscht sein, ist die Aufdoppelung der RC-Filterstufe im Ausgangszweig möglich.
Komparator/Messbereichsumschaltung
Während den Messungen im Prototypen stellte sich heraus, dass das A-Filter unter gewissen Umständen, beispielsweise bei Frequenzen <60Hz) stark dämpft, sodass die Steuerungssoftware hinter dem A/D-Wandler versucht ist, die Verstärkung zu stark zu erhöhen. Damit kommt es zum Clipping, also Übersteuern der Vorverstärkerstufe.
Dies machte sich durch einen starken Knick in dem Frequenzgang bemerkbar, der dadurch entstand, dass aus der Vorverstärkerstufe der eingegebene Sinus zu einem Rechteck-Signal verformt wurde. Ein solches hat einen hohen Oberwellen-Gehalt, diese Oberwellen wurden vom A-Filter wesentlich besser durchgelassen, als der eigentliche Grundton.
Um solche Fehler zu verhindern, wurde eine Clip-Warnung für den Vorverstärker konzipiert. Diese greift das Signal hinter dem Vorverstärker ab und meldet eine u.U. entstehende Übersteuerung an den Prozessor, der wiederum die Verstärkung reduzieren kann.
Schaltplan der Übersteuerungs-Warnung
Versuchsaufbauten
Messungen am Lochraster-Aufbau
Als erster Versuchsträger dienen auf Lochrasterplatinen aufgebaute Module, welche auf einer kupferkaschierten Leiterplatte mit Massepotential verlötet werden. Diese werden mittels Steckbrücken miteinander bzw. mit Messgeräten verbunden.

AC-Durchkopplung der Mittelwert-Stufe
Die Linearität wurde mithilfe eines HP8903A-Audioanalyzers als Signalquelle und des
vorgesehenen AD-Wandlers als Senke gemessen.
Messabweichung über den Eingangsspannungsbereich 1mV bis 1V
Hierbei ist zu beachten, dass ein Fehler 5% einer Abweichung von 0.5dB entspricht. Ziel sollte beim fertigen System eine Abweichung von <=5% sein. Die Fehler im Testsystem sind vermutlich auf zwei Quellen zurückzuführen:
- Die Verstärkungsfaktoren von drei der vier schaltbaren Verstärkerstufen sind nicht exakt 0dB und +20dB, eher -3dB und +15dB. Eine nachträglich eingebaute 4. Stufe hat nun recht genau 0dB und +20dB. Im Code wird bislang 0dB für abgeschaltete Verstärkerstufen implizit angenommen. Dieser Faktor sollte entfallen, sobald entweder alle Stufen überarbeitet, oder eine Leiterplatte hergestellt und bestückt wurde.
- Im unteren Messbereich beginnt irgendwann das Rauschen und eingekoppelte Störungen zu überwiegen. Auch wenn gewählte Bauart mit der großen soliden Kupferfläche Einstreuungen minimiert, sind die großen Leiterschleifen der Verbindungskabel alles andere als optimal. Dies wird vermutlich nur einen kleinen Beitrag zum Noise-Floor haben, ist aber auch nicht außer Acht zu lassen.
Hier werden die Noise-Floors von drei verschiedenen Eingabe-Amplituden verglichen. Diese wurden mit einem HP8903A als Generator und einem Eingangs-Spannungsteiler in den Lochraster-Aufbau eingespeist.
Signalpegel bei 10µV-Eingangspegel
Signalpegel bei 100µV-Eingangspegel
Der Vergleich zeigt, dass gerade bei hohen Verstärkungen der Störpegel relativ nahe am Nutzsignal liegt. Auch Verzerrungen durch die Verstärkerhardware führen zu deutlichen Abweichungen im Messwert.
Kleinserie
Mithilfe der Versuchsaufbauten wurde Schaltung validiert und in ein Leiterplattendesign überführt.
Die erste Leiterplatte wurde handbestückt und schrittweise auf Funktion geprüft. Bis auf ein falsches Borbild für den DC/DC-Wandler passten alle Bauteile mechanisch auf das Design. Auch die Rausch- und Störungseigenschaften erscheinen bei ersten Versuchen keine neuen Probleme im System zu verursachen.

Erster Aufbau
Die dB-Umrechnung wurde mittels eines kommerziellen Mikrofon-Kalibrators durchgeführt. Dieser gibt, umschaltbar, 105dB und 95dB bei 1kHz aus und somit wurden die zunächst auf dBmV bezogenen Signale per einfacher Addition auf dB-Schallpegel umgerechnet.

Mikrofon im Stecker montiert
Als Mikrophoneingang wurde eine Cinch-Buchse genutzt. Das Mikrophon selbst hat einen Durchmesser von 6mm und findet in der Steckertülle Platz.
Software
Das System basiert auf einem ESP32-Controller mit Micropython um kürzere Iterationszyklen bei der Entwicklung zu erlangen. Die interaktive Kommandozeile des Controllers ermöglicht sehr komfortables Debugging der Hardware und leichte Inbetriebnahme des Gerätes.
Dies wird allerdings durch fehlende Möglichkeiten den Code schrittweise auszuführen etwas getrübt.
Die eingebaute asyncio-Bibliothek erlaubt ein pseudo-Multitasking, sodass drei nebenläufige Tasks auf dem Controller existieren:
“NoiseTask”:
Hier werden die Analogwerte aus dem A/D-Wandler eingelesen und in dB umgerechnet. Diese werden dann mittels eines digitalen Filters 1. Ordnung etwas geglättet.
“DisplayTask”:
Dieser Prozess bildet eine Balkenanzeige mittels adressierbarer RGB-LEDs ab, diese hat auch ein Peak-Hold, der die Maximalpegel mit einer einstellbaren Zeitkonstante hält und abfallen lässt.
“NetworkTask”:
Mithilfe dieses Prozesses wird eine W-LAN-Verbinundung mit einem Netzwerk hergestellt und ggf. die Daten per MQTT auf einem Broker bereitgestellt.
Kalibrierung
Die gesamte Verstärkungskette kann als Produkt der einzelnen Stufen modelliert werden, diese werden mit den folgenden Verstärkungen modelliert:
- \(G_l\): Gain im nicht aktivierten Zustand einer Stufe
- \(G_h\): Verstärkung bei aktivierter Stufe
- \(G_r\): Im Gesamtsystem konstanter Faktor welcher durch z.B. die Gleichrichterstufe und den Filterstufen bestimmt wird \[ \operatorname{G}\left( {\mathrm{stage}}\right) \operatorname{:=}\prod_{i=1}^{{\mathrm{stage}}}{\left. {G_h}\right.} \prod_{i=1}^{4-{\mathrm{stage}}}{\left. {G_l}\right.} {G_r}\mbox{} \]
Zur Kalibrierung wird die Leerlaufverstärkung \(G(0)\) mit der Verstärkung bei einer aktiven Verstärkerstufe gemessen, also \(G(1)\) verglichen: \[ cal = \frac{G(0)}{G(1)} = \frac{{G_r} {G_h} {{{G_l}}^{3}}}{{G_r} {{{G_l}}^{4}}} = \frac{{G_h}}{{G_l}} \] Dieser Faktor \(cal\) kann nur zusammen mit der Leerlaufverstärkung genutzt werden, um die Auswirkungen der technische nötigen Verstärkung auf die Messwerte rückgängig zu machen und wieder mV erhalten. Bei einer Verstärkung von z.B. 4 ergibt sich also: \[ G(4) = cal^4 \cdot G(0) = {G_r} {{{G_h}}^{4}} \]
Im Code sieht es dann so aus:
def count_to_mv(self, value):
for i in range(self.gain+1):
value /= self.gains[i]
return value
Hierbei ist self.gains[0]
die Leerlaufverstärkung und die Verstärkungsfaktoren der jeweiligen Stufe
ist dann in gains[1..4]
gespeichert.
Da beim Einstellen des Gains von “vorn”, d.h. mit dem Mikrofon nächsten Verstärker beginnend, die einzelnen Stufen nacheinander zugeschaltet werden, gibt es vier Stufen. Der Grund für diese Art der Steuerung ist, dass das Signal so früh in der Verarbeitungskette wie möglich verstärkt wird, um die Auswirkungen von Rauschen und Einkopplungen im Signalpfad möglichst gering zu halten.