Hallo zusammen, ich bin für ein Uniprojekt auf der Suche nach einem geeigneten Microcontroller mit DSP und passenden Mikrofonen. Hintergrund: Auf einer 1m x 1m großen Fläche wird ein Objekt plaziert, welches einmalig ein akustisches Signal abgibt. Dieses soll über Mikrofone aufgenommen werden und aus den unterschiedlichen Ankunftszeiten des Schalls soll die Position bestimmt werden. Bei mir in der Uni wird aktuell nur mit dem Ardunio-Board gearbeitet, welches für diesen Fall jedoch zu langsam arbeitet. Daher hat man mir das C2000 Piccolo LaunchPad empfohlen. Meine Frage: Hat jemand schon Erfahrungen mit dem C2000 LaunchPad und kann mir sagen, ob es für den o.g. Verwendungszweck geeignet ist. Die Bestimmung müsste auf wenige Millimeter genau möglich sein. Zudem suche ich noch passende Mikrofone (4 Stk.). Vorteil der Fläche ist, dass sie von einem Rahmen umgeben ist, in den die Mikrofone integriert werden können. Auf diesem Gebiet habe ich leider gar keine Erfahrungen, da ich, wie gesagt, bisher nur mit dem Arduino und schon gar nicht mit Mikrofonen gearbeitet habe. Ich bin nicht auf der Suche nach einer kompletten Lösung meines Problems (auch wenn ich dazu nicht nein sagen würde :P ), aber ein Denkanstoß bzw. eine Hilfestellung die mich in die richtige Richtung bringt ist explizit erlaubt und durchaus auch gewünscht. Ich hoffe ihr könnt mir weiterhelfen, da ich aktuell mit googlen nicht wirklich weiterkomme, da mein Fachwissen leider doch recht begrenzt ist. Solltet ihr noch weitere Infos brauchen, gebe ich sie euch gerne :) Vielen Dank im Voraus.
Owan schrieb: > > Hintergrund: > Auf einer 1m x 1m großen Fläche wird ein Objekt plaziert, welches > einmalig ein akustisches Signal abgibt. Dieses soll über Mikrofone > aufgenommen werden und aus den unterschiedlichen Ankunftszeiten des > Schalls soll die Position bestimmt werden. Bei mir in der Uni wird > aktuell nur mit dem Ardunio-Board gearbeitet, welches für diesen Fall > jedoch zu langsam arbeitet. Daher hat man mir das C2000 Piccolo > LaunchPad empfohlen. Beim Stichwort "Arduino" und "zu langsam" gibt es eventuell auch einfach noch "Optimierungspotential". Wie oft soll den die Position bestimmt werden? Wie werden die (akkustischen) Signale aufbereitet (Ich hoffe mal nicht über den ADC des Arduino, oder doch ...?). Im Prinzip brauchst Du ja nur die Phasenverschiebung zwischen einem Signal. Nimmt man mal 343 m/s Schallgeschwindigkeit, sind 1 mm Auflösung ~ 3 µs. Wenn alle Mikrofone (bzw. digitale Signale daraus) auf einem Port liegen (je Mikro ein Pin), so müsste man den Port mit ca. 350 kHz sampeln und bei Änderung des Port-Wertes den mit Zeitstempel speichern. Nach ca. 4.1 ms müssen alle Daten vorliegen und können ausgewertet werden. Würde man alle Signale noch "ver-odern" und legt die auf einen INT Eingang müsste sich das ganze als Interrupt-Routine auslegen lassen. Glaube schon, dass das mit einem AVR geht. Schau Dir als Anregung mal ein paar AVR Frequenz-Zähler an.
Mit der o.g. Rechnung gehe ich jetzt nicht ganz konform. Das gilt ja doch nur dann, wenn man einzelne Impulse verarbeiten will und dieses granular, also diskret mit der Taktfrequenz des Wandlers tun will. Das muss man aber nicht notwendigerweise tun, sondern kann das Signal "analog" auffassen, permanent messen und die Phase fein bestimmen. Das geht sehr viel genauer, als die Taktfrequenz scheinbar vorgibt. Im Prinzip ist das eine umgekehrte DDS. Man braucht nur eine genügend lange Impulsfolge, bzw einen Sinus. Der wird konventionell prozessiert und die Phasen vergleichen. Die Lokalisation in der Ebene erfordert hier ja auch eine Art von 3D-Messung, bei der sehr viel geringere Winkelabweichungen vermessen werden müssen, wegen der Elongation auf der Querachse und dem sich bildenden Dreieick. Üblicherweise nimmt man dazu mehr Mikrofone her, als mathematisch nötig und berechnet Durchschnittswerte bez plausibilisiert die Positionen. Zunächst bekommt man ja bei jedem Kreisschnitt 2 mögliche Schnittpunkte und damit Positionen der Schallquelle. Ich habe damit seinerzeit mal etwas herumgespielt: http://www.96khz.org/oldpages/soundsourcelocalisation.htm Man muss/sollte die Mikrophone aber nicht als DECCA stellen, sondern gfs einfach in abgeflachtes Dreieick. Auch eine ebene Linie liesse sich prozessieren. Was die DSP-Power angeht, ging das damals mit einem TMS320 und später einem Motorola 56301. Die Berechnung erfolgt natürlich nicht in Echtzeit, sondern impulsweise offline. Mit einem ausreichend schnellen DSP geht das aber sicher auch in Echtzeit. Hängt von der Auflöung und der Samplerate ab. Am Ende hängt die Auflösung irgendwann von der Frequenz und damit auch der Mikrofoncharakteristik ab. Optimal wäre Ultraschall, was aber dann Spezialmikros braucht. Auch wenn man Kugeln verwendet, haben normale Audiomikrofone oberhalb 1kHz eine Richtcharakteristik und unterhalb einer gewissen Wellenlänge beginnt die Membranbreite eine grosse Rolle zu spielen. Ich habe damals mit Einzelimpulsen probiert und Haun-Mikros für Konzertaufnahmen benutzt. (410er Kugeln). Empfehlen würde ich für sowas entsprechende Messmikros, wie das hier: "MBNM 550 EL" oder das Behringer ECM Mikro.
Vielen Dank für die Rückmeldung. > Beim Stichwort "Arduino" und "zu langsam" gibt es eventuell auch einfach > noch "Optimierungspotential". Wie oft soll den die Position bestimmt > werden? Wie werden die (akkustischen) Signale aufbereitet (Ich hoffe mal > nicht über den ADC des Arduino, oder doch ...?). Im Prinzip brauchst Du > ja nur die Phasenverschiebung zwischen einem Signal. Soweit ich informiert bin arbeitet der Arduino im Bereich >1ms. Daher macht es wenig Sinn damit überhaupt was zu probieren und ich hab den daher gar nicht erst angerührt. Die Positionsbestimmung wird einmalig durchgeführt, dann die Position des Signalgebers geändert und erneut gemessen. Der Abstand hierzwischen ist aber >1s und sollte daher egal was ich verwende nicht ins Gewicht fallen. > Ich habe damit seinerzeit mal etwas herumgespielt: > http://www.96khz.org/oldpages/soundsourcelocalisation.htm > > Man muss/sollte die Mikrophone aber nicht als DECCA stellen, sondern gfs > einfach in abgeflachtes Dreieick. Auch eine ebene Linie liesse sich > prozessieren. So in etwa werde ich das auch aufbauen. Jedoch noch mit einem vierten Mikrofon um sicher zu gehen. Die von dir empfohlenen Mikrofone sprengen leider etwas den Rahmen. Aber die sind ja auch eher für Konzertaufnahmen etc. gedacht. Bei mir ist das ganze ja deutlich kleiner gedacht. Hatte da eher an etwas im Bereich von wenigen Euros pro Mikrofon gedacht. Bzgl. des Mikrocontrollers hat man mir gestern dann das C2000 LaunchPad in die Hand gedrückt, da wir das noch an der Uni hatten. Werde mich da jetzt erstmal etwas in die Programmierung einarbeiten und mich dann ggfs. nochmal bei Conrad o.ä. bzgl. der Mikrofone beraten lassen. Gruß Owan
Wie hast Du Dir die Anordnung gedacht? Du willst offenbar X und Y bestimmen? In der von mir erwähnten Darstellung war es ja nur eine Koordindate, die variiert wurde. Ich gehe davon aus, dass Du die Mikros ebenfalls als Fläche aufstellen willst, wahrscheinlich im Quadrat? Wenn Du kein Messmikro verwenden willst, sollten es wenigsten Kugelcharakteristik-mikrofone ("OMNI") sein.
Habe so etwas ähnliches schon einmal gemacht. Sende als Anfang mal ein Wobbel-Signal-Burst und taste dementsprechend hoch ab. Bei mir war es damals 96kHz. Danach machst du eine Kreuzkorrelation über gesegnetes und empfangens Signal. Da bekommst du dann schon mal die Phase. Evtl. Noch die Temperatur bestimmen und dann die kompensierte Laufzeit berechnen. Macht im Prinzip jedes Heimkino so. Nur das da die Lautsprecher außen hängen und das Mikro in der Mitte.
runtastic schrieb: >Macht im Prinzip jedes Heimkino so. Wozu? Justiert das System da irgendwas? Was?
Profi schrieb: > runtastic schrieb: >>Macht im Prinzip jedes Heimkino so. > Wozu? Justiert das System da irgendwas? Was? Kommt auf das System an. Bei meinem Yamaha z.B. mißt es die Laufzeit, die Phasenlage, die Lautstärke und den Frequenzgeng jedes einzelnen Lautsprechers (bzw. jeder einzelnen Box, klar).
runtastic schrieb: > Sende als Anfang mal ein Wobbel-Signal-Burst und taste dementsprechend > hoch ab. Oder anstelle des Chirp sende zwei oder mehrere unterschiedliche Frequenzen und berechne aus deren Phasenlagen die absolute Distanz (wie Laserentfernungsmesser). Pseudozufallsfolgen wie bei GPS dürften akustisch wohl schwierig werden.
Die Verwendung von Pseudozufall (Rauschen) ist gängige Praxis zur Vermessung von Raumimpulsantworten.
Dabei werden allerdings die empfangenen Rauschsignale mit den ausgesendeten korreliert, d.h. sie müssen bekannt sein (was ja hier der Fall ist). Das wird deshalb gemacht, weil das Messsystem nicht wissen kann, was sonst noch so an akustischem Schmutz im Raum ist, wenn es misst. Die delay line gesteurten Lautsprechersystem im Saal an unterschiedlichen Orten und die Line Arrays selber, die inzwischen bei P.A. Systemen für Rockkonzerte im Freien und grossen Hallen üblich sind, agieren ähnlich. Diese messen während des Konzertes, also bei voller Lautstärke und Zuschauergeschrei, die akustischen Verzögerungen, die sich durch die Erwärmung und Feuchtigkeit der Luft ergeben und stellen die künstlichen Signalverzögerungen passend ein. Früher geschah das manuell durch die Saal-Crew, indem sie die Signale der LS und die einiger Empfangsmikros in einer Summe mischten, die nur ihnen zugänglich war und dann nach akustischem Empfinden die Deutlichkeit anpassten. Das führte dazu, dass die hinteren LS immer etwas zu wenig Verzögerung bekamen, was zwar die Deutlichkeit der Musik in der Nähe verbesserte, insgesamt zu einem problemastischeren Mischmasch und schlecht beherrschten Bassfrequenzen führte. Andererseits laboriert die automatische Einmessung und Regelung von zahlreichen Artefakten und somit gibt es immer noch Leute, die sich lieber auf das Ohr verlassen und das per Hand hindrehen. Das Rauschen in diesen Systemem ist derart hochfrequent und auch leise, dass es praktisch nicht zu höhen ist. Infolge der quasi unendlichen Prozessierungszeit ist es aber hochgenau. Ohne das Rauschen wäre man nur auf die Nutzung der realen Musik-Signale angewiesen.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.