Passive Schallortung

von Felix Irmscher
 aus ELO 2008
Elektronik-Labor  Labortagebuch  ELO  Mikrocontrolle

 

- für ATMega8 (ATMEL)
- Lokalisation von Schallquellen mit 2 Kanälen
- Übertragungsmedium: Luft
- präzise Richtungserkennung

 

 

 

 

Ganz genau müsste die Überschrift wahrscheinlich Richtungslokalisation lauten, da sich der Begriff Ortung auf die Auswertung der Reflektion von zuvor ausgesendeten Signalen bezieht, wie etwa bei Radar und Echolot. Die zurückgeworfenen Signale werden dann als sog. Sekundärschall bezeichnet. Der populärere Begriff Passive Schallortung ist dem einen oder anderen vielleicht aus der U-Boot-Technik des Zweiten Weltkriegs geläufig. Hier wurde der direkt von der Schallquelle auf kürzestem Wege zu den Mikrofonen gelangte Schall (sog. Primärschall) auf seine Richtung hin analysiert. Reichhaltige Informationen zu dem Themenkomplex Schall finden sich z.B. bei Wikipedia.


Mit dem vorliegenden Projekt wird eine recht einfache aber erstaunlich gut funktionierende Methode beschrieben, die Richtung der momentan lautesten Schallquelle mithilfe zweier Electret-Kondensator-Mikrofone (ECM) zu lokalisieren. Übertragungsmedium ist Luft. Vielleicht könnte dieses, wie später beschrieben noch ausbaufähige Projekt, als Ausgangspunkt für eigene Versuche dienen.
Auf die Funktionstüchtigkeit eines Nachbaus wird natürlich keine Gewährleistung gegeben.

 

Hardware

Als Mikrocontroller kommt der ATmega8 (ATMEL) zum Einsatz. Er hat ein für diese Anwendung ausreichend großes RAM. Programmiert wir z.B. mit dem Adapter: my Smart USB V.2.11. Der Systemtakt wird über das Fuse-Low-Byte auf 2 MHz eingestellt. Ein Quarz ist nicht notwendig. Die Messwerte können mithilfe des Moduls aus dem Lernpaket Mikrocontroller (Franzis) an den PC gesendet und mit dem Terminal von Lpmikros.exe dargestellt werden. Die Programmierung ist mit dem Modul aber leider nicht möglich.

Zusätzlich erfolgt die Datenausgabe über eine zweistellige 7-Segment-Anzeige mit gemeinsamer Kathode. Jeder Anode wird ein 1-k-Widerstand vorgeschaltet (Im Schaltplan nicht eingezeichnet!). Mit dieser Anzeige kann man das Gerät auch ohne die störenden Lüftergeräusche des PC verwenden. Es werden zwei handelsübliche, aber unbedingt baugleiche ECM's benötigt. Sie müssen in einem Abstand von genau 19 cm zueinander montiert werden. Die Mikrofonleitungen müssen abgeschirmt sein.

Die Verstärkung erfolgt auf einfache Weise mir einem Zweifach-Operationsverstärker (OPV). Getestet wurden die Typen MC1458 und LM358. Die Verstärkung ist für Experimente in weiten Grenzen bis zu 1000-fach einstellbar. Es ist wichtig, die Verstärkung bei beiden OPV's stets gleich hoch einzustellen. Der Abgleich kann dafür an den Messpunkten P1 und P2 erfolgen. Wer hierzu kein Oszilloskop besitzt, kann sich eines für die PC-Soundkarte als Freeware aus dem Internet herunterladen. Verzerrungen und gelegentliche Übersteuerungen, die bei einer solch einfachen Verstärkerschaltung eher auftreten, können toleriert werden, da sie die Ortung nicht maßgeblich stören. Als Trimmer sollten sog. Präzisions-Einstellregler (CONRAD) bzw. Miniatur-Regler Ø 6,6mm (REICHELT) verwendet werden, da sie aufgrund der geringen Größe nahe am OPV platziert werden können und so weniger empfindlich gegen Störeinflüsse sind.

 

Natürlich wären auch hochwertigere Vorverstärker einsetzbar. Die Schallortung funktioniert aber auch schon so. Zur Spannungsstabilisierung auf 5V wird ein Festspannungsregler verwendet.

 

Laufzeitdifferenz

Während das menschliche Gehör Schalllokalisation mit einer Vielzahl von Mechanismen durchführt, beschränkt sich dieses Projekt nur auf das wohl Wichtigste, die Messung von sog. Laufzeitdifferenzen: Befinden sich zwei Mikrofone und eine Schallquelle an unterschiedlichen Stellen im Raum, so trifft ein sich kreisförmig von dieser Quelle ausbreitendes Schallereignis aufgrund der Schallgeschwindigkeit zeitlich versetzt bei beiden Mikrofonen ein. Dieser Zeitunterschied wird Laufzeitdifferenz genannt und ist, bezogen auf die beiden Mikrofone, ein Maß für die Richtung zur Schallquelle. Sind die Mikrofone von der Quelle gleichweit entfernt, kommt der Schall also genau von vorne oder hinten, so tritt keine Differenz auf.

 

Schallquelle frontal


Je „seitlicher" der Schall auf die beiden Mikrofone trifft, desto größer ist die Laufzeitdifferenz.

 

 

Schallquelle seitlich

 

Die größte Differenz wird erreicht, wenn sich Schallquelle und beide Mikrofone auf einer gedachten Linie befinden.

 

 

Schallquelle ganz seitlich

 

In schneller Folge werden mit einer Rate von insgesamt ca. 40 kHz stets abwechselnd je ein Sample zuerst für den linken Kanal (ADC 0) und dann für den rechten Kanal (ADC 1) als 8-bit-ADC-Wert im RAM gespeichert. Pro Seite sind dies 250 Samples. Die dabei für den einzelnen Kanal zur Verfügung stehende Samplerate von ca. 20 kHz gestattet nach dem sog. Abtasttheorem (Shannon) eine obere Grenzfrequenz von ca. 10 kHz.

 

Sinussignal (10 kHz)


Hier wurden die zuvor im RAM gespeicherten Werte einer 2-Kanal-Aufnahme mit EXCEL dargestellt. Aufgenommen wurde ein NF-Signal von 10 kHz. Zu erkennen ist, dass jedes Sample gerade eben noch einen Welleberg bzw. ein Tal des Signals erfasst.

Um nun die aktuelle Laufzeitdifferenz eines Schallereignisses zu bestimmen, müssen die beiden Aufzeichnungen für den rechten und linken Kanal in Schritten von einem Sample gegeneinander verschoben werden, bis sie möglichst gut übereinstimmen. Dies wird berechnet, indem für jede Verschiebung die Summe aller 239 Differenzen der sich entsprechenden Samples von links und rechts gebildet wird. Die kleinste Summe steht dabei für die beste Übereinstimmung.

 

Bestimmung der Laufzeitdifferenz

 

 

Berechnungen

Wieviele Verschiebungen durchgeführt werden müssen, ist neben der Samplerate abhängig vom Abstand der Mikrofone zueinander. Für die Schallgeschwindigkeit gilt allgemein:

 

 

Für die temperaturabhängige Schallgeschwindigkeit in Luft gilt näherungsweise:

 

 

Bei Raumtemperatur ist somit:

 

Nach folgender Rechnung wurde ein „handlicher" Mikrofonabstand von 19 cm gewählt:

 


Benötigte Aufnahmezeit für 11 Samples bei 20 KHz:

 

Vom Schall bei Raumtemperatur zurückgelegte Strecke bei 11 Samples pro Kanal:

 


Es müssen also bei einem Abstand von 19 cm und einer Rate von 20 kHz pro Kanal jeweils 11 Verschiebungen durchgeführt werden. Zusammen mit der Mittelposition sind somit 23 Stellungen miteinander zu vergleichen. Die Anzahl für die bestmögliche Übereinstimmung (geringste Differenz) entspricht dem Winkel der Schallrichtung.

 

Winkel und Positionen

 

Bei 23 Positionen beträgt die kleinste Auflösung:

Dies dürfte für die meisten Anwendungen genügen. Wer's genauer will, müsste den Mikrofonabstand und damit die Zahl der verschiebbaren Samples erhöhen.


Da die Bestimmung der Laufzeit auf der Messung von differierenden Pegeln beruht, werden insbesondere die Signalanteile mit der höchsten Lautstärke detektiert. Dabei dürfte es sich vor allem um den richtungweisenden Primärschall handeln, da der Schalldruckpegel des Sekundärschalls durch Absorption und Reflexion meist abnimmt. Bei jeder der 23 Stellungen werden 239 Differenzen gebildet. Diese hohe Anzahl wirkt zudem als Filter gegen Störungen.

 

Programmbeschreibung

Das Fuse-Low-Byte muss gem. der Tabelle im Programmcode auf 2 MHz eingestellt werden (0xE2). Im folgenden werden die einzelnen Programmsegmente dargestellt. Zunächst erfolgen die üblichen Konstanten- und Variablendefinitionen. Es werden keine Interrupts benötigt.

Hauptprogramm ab: STILLE EINMALIG KALIBRIEREN:

Nur bei der allerersten Messwertaufnahme nach dem Einschalten ist die Variable Stille = 0. In diesem Fall wird zunächst bei WARTEN_STILLE: einen Moment gewartet, bis das Einschaltgeräusch verhallt ist und dann nach Messwertaufnahme der höchste aller Werte in Stille gespeichert. Während der Kalibration sollte der Geräuschpegel niedrig und die zu lokalisierenden Signale nicht zu hören sein! Die Konstante Pegeldiff wird zu Stille hinzuaddiert.

ab: TEST_MIN_PEGEL:
Bei jeder weiteren Messwertaufnahme wird geprüft, ob mindestens ein Wert größer als Stille ist. Nur dann erfolgt die weitere Signalverarbeitung. Je niedriger also Pegeldiff ist, desto empfindlicher wird die Schallortung.

ab: LOOP_LINKS:
Laufzeitberechnungen für die unteren 11 Positionen. Hierfür werden die Werte des linken Kanals mithilfe von Routine Y_POSITION 11x um je ein Sample verschoben und in jeder Stellung die Summe aller Differenzen der sich entsprechenden Samples gebildet. Die kleinste Differenz wird in Diff_Min (16bit) gespeichert. Zugleich wird die zugehörige Position in Diff_Step gesichert.

ab: LOOP_RECHTS:
Laufzeitberechnungen für die oberen 11 Positionen und die Mittelstellung. Hierfür werden die Werte des rechten Kanals mit der Routine Z_POSITION 11x um je ein Sample verschoben. Die weiteren Berechnungen erfolgen analog zu LOOP_LINKS.

ab: EXIT_LAUFZEIT:
Hier enden die Laufzeitberechnungen. Falls zweimal hintereinander dieselbe Position errechnet wurde, wird sie nun mithilfe der Routine LED_DISLPLAY auf der 7-Segment-Anzeige ausgegeben und außerdem mit der Routine WrCOM_2 an den PC gesendet. Wird einige Sekunden lang keine Schallrichtung mehr erkannt, so wird die Anzeige gelöscht. Dieses Zeitintervall wird mit der Variable Dauer und der Konstante Durchlauf bestimmt.

WrCOM_2: Für einen Prozessortakt von 2 MHz modifizierte Version aus dem Lernpaket Mikrocontroller (FRANZIS). Ausgabe erfolgt mit dem Terminal von Lpmikros.exe.

ADC_START: Initialisierung des ADC-Wandlers: Die Ergebnisse sind left-adjusted (8bit). Wegen der geringen Auflösung kann der ADC-Takt auf 1 MHz erhöht werden.

ADC_Rd_LEFT: ADC-Wandlung für den linken Kanal

ADC_Rd_RIGHT: ADC-Wandlung für den rechten Kanal

WARTEN: Allgemeine Warteschleife. Die Dauer wird mit der Variablen i gesteuert.

Y_POSITION: Errechnung der Startposition im RAM für die Verschiebung der Werte des linken Kanals mithilfe von Variable Step.

Z_POSITION: Errechnung der Startposition im RAM für die Verschiebung der Werte des rechten Kanals mithilfe von Variable Step.

LED_DISPLAY: Wertausgabe von i durch die zweistellige 7-Segment-Anzeige. Die Anzeige ist dunkel bei i = 0. Ausgabe von „Er" (Error) für i > 29.

 

Mögliche Verbesserungen

Die Schaltung könnte wie folgt optimiert werden:

Analoge Elektronik: Signale oberhalb von 10 KHz werden lt. dem og. Abtasttheorem fälschlicherweise als niedrigere Frequenzen detektiert. Da dieser Fehler an beiden Kanälen auftrifft, scheint er sich weitgehend selbst zu eliminieren. Einen Versuch mit einem Tiefpass wär's aber wohl wert. Wenn das zu lokalisierende Signal bekannt ist (z.B. Motorengeräusch, Sprache), könnte man mit einem Bandpass den wichtigsten Frequenzbereich herausfiltern und damit die Empfindlichkeit der Ortung erhöhen. Vielleicht liefert auch eine hochwertigere Mikrofonvorverstärkung bessere Ergebnisse.

Autokalibration für Ruherauschen: Anstelle der einfachen Kalibration direkt nach dem Einschalten wäre es denkbar, für einige Minuten den niedrigsten Schallpegel zu suchen und diesen dann als Referenzwert zu verwenden.

Bessere Signalauswertung: Momentan erfolgt die Anzeige einer neuen Richtung immer nur dann, wenn zweimal hintereinander der gleiche Wert gemessen wird. Erkannt werden müssten außerdem Messungen, die zwischen zwei Zahlen „hin- und herpendeln" (z.B. zwischen 14 und 15). Zusätzliche Genauigkeit könnte eine „statistische Auswertung" ermöglichen, bei der gleiche oder ähnliche Richtungswerte innerhalb eines bestimmten Zeitraumes auf ihre Häufigkeit hin überprüft werden. Würde das Ortungssystem z.B. zur Zielverfolgung genutzt, könnte auch eine „Plausibilitätsprüfung" stattfinden: Passt der aktuelle Winkel zu den Vorwerten entsprechend der bisherigen Bewegung des Zieles und der eigenen Bewegung ... ?

Richtmikrofone: Sollen weiter entfernte Signale lokalisiert werden, könnten die Mikrofone zu Richtmikrofonen umgestaltet werden. Entsprechende Konstruktionen dürften dabei das Klangbild durch Resonanzen nicht verfälschen!

Drittes Mikrofon: Mit zwei Mikrofonen ist die Schallortung nur in einem Radius von 180 Grad möglich, d.h. es wird nicht erkannt, ob das Signal von vorne oder hinten kommt. Für den vollen Radius von 360 Grad wäre ein drittes Mikrofon nötig. Sollte bei den drei Mikrofonaufnahmen die Grenzfrequenz von 10 kHz nicht unterschritten werden, müsste die Samplerate weiter erhöht werden, da in der gleichen Zeit jetzt drei anstatt zuvor zwei Kanäle aufgezeichnet werden würden. Dies könnte beim ATmega8 zu Geschwindigkeitsproblemen führen.

Haben Sie ein ähnliches Projekt entwickelt, Verbesserungsvorschläge oder Anregungen? E-Mails an elo@franzis.de werden an den Autor weiter geleitet.

 

Downloads:

Dieser Artikel als PDF

Listing als PDF

SCHALLORTUNG.asm