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.
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.
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.