Raumschallmessung für Events

Wed 14 February 2024

Elektronik

Übersetzungen: EN

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. Aus diesem Signal enthält keine nutzbaren Audiodaten mehr.

Das resultierende Analogsignal wird dann digitalisiert und von einem Microcontroller 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 sogeannte Kapazitäts-Multiplikation, aus Sicht des Mikrofons steht hier eine Kapazität in höhe von etwa dem Kondensatorwert mulitpliziert 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 eingkoppelten Rauschens zu ermöglichen.

Der zweite Kondensator zwischen Emitter und GND dient eher zur Gewissensberuhigung als zur wirklichen Stabilisierung der Mikrofonspannung. 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-Augangsspannung gemessen.

Output-Linearität

Deutlich erkennbar ist das Clippen der Schaltung über 4 Vac. Durch den Bereich vorher lässt sich eine Ausgleichgerade 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

Ein Komparator soll dem Prozessor helfen, rechtzeitig den Messbereich umzuschalten um eine möglichst effiziente Nutzung des Messbereichs zu gewährleisten. Hierzu werden zwei Umschaltpunkte mittels Spannungsteiler definiert, welche mittels eine Komparator-ICs gegen die Ausgabgespannung der Mittelwert-Stufe geprüft werden.

Schaltplan der Komparator-Stufe

Im Verlauf der Entwicklung zeigte sich, dass eine Schwellwertschaltung innerhalb des Microcontrollers basierend auf den A/D-Wandlerwerten für die Reaktionsgeschwindigkeit ausreichte und die Einschwingzeit der Gleichrichter-/Mittelwertbildungsstufe hier wesentlich größeren Einfluss hat.

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:

  1. 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.
  2. Im unteren Messberich beginnt irgendwann das Rauschen und eingekoppelte Störeungen zu überwiegen. Auch wenn gewählte Bauart mit der großen soliden Kupferfläche Eintreuungen 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. 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-Umrechung wurde mittels eines kommerziellen Mikrofon-Kalibrators durchgeführt. Dieser gibtm 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 Mikrofoneingang wurde eine Cinch-Buchse genutzt. Das Mikrofon 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 aktiverten 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. dem mikrofonnä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.