Forum: Digitale Signalverarbeitung / DSP / Machine Learning Filter Algorithmen für Raspberry Pi


von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Da es hier ungemein viele Fledermäuse gibt, wollten ein Kumpel und ich 
uns mal damit beschäftigen, einen kleinen Spektrumanalyzer mit dem 
Raspberry zu bauen, um den Frequenzbereich von ca. 30-50kHz auf den 
Schirm zu bringen. Deswegen meine Frage: Hat schon mal hier jemand ein 
paar simple Filter a la Biquad auf der Plattform gecodet?
Falls der Raspberry die nötige Rechenleistung hätte, würden wir uns den 
Aufwand mit Hardware Filtern nämlich gerne sparen.

von icke (Gast)


Lesenswert?

Ist nur die Frage, ob eine Soundkarte auch diesen Bereich des (nicht 
hörbaren) Schalls erkennt.

Wenn du nur den Rasberry nehmen willst:
Hat der überhaupt einen ADC?

von Julian B. (julinho)


Lesenswert?

ಠ_ಠ schrieb im Beitrag #3132137:
> Wozu schreibe ich, dass er eine Soundkarte mit einer entsprechenden
> Samplerate braucht? Was könnte das nur bedeuten? Was könnte ich damit
> gemeint haben?

Was hat den die Samplerate mit der spektralen Empfindlichkeit zu tun?
Gar nichts!!!

von ich (Gast)


Lesenswert?

Und du kannst dein Signal auch mit 1GHz abtasten, wenn dein ADC für 
f>20kHz nicht empfindlich ist bringt dir das alles nichts.

von Julian B. (julinho)


Lesenswert?

Spektrale Empfindlichkeit könnte man so übersetzten: für welche Frequenz 
ist die Soundkarte in welchem Maße empfindlich.

Das Shannonsches Abtasttheorem sag aus, dass die Samplefrequenz doppelt 
so groß wie die maximale Messfrequenz sein sollte. Die Umkehrung gilt 
aber nicht, eine Soundkarte mit Frequenz x ist nicht zwingend 
empfindlich bis x/2.

In welchem Bundesland sind eigentlich gerade Schulferien?

von troll (Gast)


Lesenswert?

ich schrieb:
> Und du kannst dein Signal auch mit 1GHz abtasten, wenn dein ADC für
> f>20kHz nicht empfindlich ist bringt dir das alles nichts.
?

Du meinst wohl "wenn der FILTER VORM ADC..." ?

von Alternativer (Gast)


Lesenswert?

Wußte ich doch: ein Wessi im ersten Semester.

1. Die meisten Soundkarten kommen aus Asien/China, was dort alles 
möglich ist, kannst Du Dir mit deinem beschränkten Horizont 
wahrscheinlich nicht vorstellen.

2. Bei der Auswahl der Soundkarte sollte man sich vor allem die 
Frequenzempfindlichkeit anschauen, dass die Samplefrequenz groß genug 
sein sollte ist selbstverständlich, aber eben nicht andersherum.

von Julian B. (julinho)


Lesenswert?

Oversampling? Schon mal gehört?

von Julian B. (julinho)


Lesenswert?

Hab keine Zeit mehr für diesen Quatsch!

Vielleicht empfiehlt Mr. Oberschlau einfach mal eine Soundkarte + 
Mikrofon,
die auch vom Pi gefressen wird.

von Kai S. (kai1986)


Lesenswert?

Hallo,

es gibt für solche Aufgaben Programmbibliotheken (z.B. GSL Bibliothek in 
C für Linux), die sich auch auf dem Raspberry Pi compilieren lassen, da 
der ja einen C Compiler hat und und die Standardbibliotheken auch 
vorhanden sind. Darin befindet sich z.B. diverse FFT Funktionalitäten, 
die recht einfach zu verwenden sind, von daher ist es recht problemlos 
möglich, die Filterung digital durch zu führen.

Gruß Kai

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Nur ruhig, Leute, ich hätte vllt. noch erwähnen sollen, das die 
benötigte Hardware, also z.B. ein schneller A/D Wandler sowie 
Treiberprogrammierung für Linux bei mir kein Problem darstellen. Das 
habe ich schon oft gemacht.
Sobald der RPi da ist, werde ich es einfach mal mit einem USB Audio von 
American Audio, was hier noch rumliegt, probieren.

ಠ_ಠ schrieb im Beitrag #3132115:
> Eh? Was willst du eigentlich?
Schrieb ich im Eröffnungsbetrag. Welchen Teil hast du nicht verstanden?
> Erstmal brauchst du ne USB Soundkarte mit der entsprechenden Samplerate.

USB Soundkarten mit 192 kHz Samplerate (höchstens 96kHz würde noch 
gehen)
sind rar gesäht und unverhältnismässig teuer. Da es sich hier um Sound 
karten handelt, ist auch meistens ein AA Filter hart im Chip verdrahtet. 
Wie gesagt, ich werde den Frequenzgang meines USB Audio mal 
durchklingeln.

>Und Spektrum Software gibts massig. Z.B.
>
> http://www.saharlow.com/technology/sigmira/
>
> Was willst du da jetzt noch programmieren?

Danke für den Tipp mit der Spektrum Software. Was ich da noch 
programmieren möchte? Nun, z.B. das so eine Software auch auf dem 
kleinen Linux des RPi läuft :-)

Da der RPi noch nicht hier ist, wollte ich eben einfach mal hören, ob 
jemand von euch schon Erfahrungen mit DSP auf dem RPi gemacht hat.

@Kai S.: Ich schau mir die GSL Libs mal an, danke für den Hinweis. Das 
ware genau das, wonach ich gefragt habe. Bisher habe ich DSP Algorithmen 
halt immer auf DSPs implementiert und nicht auf ARMs mit Linux.

von Alternativer (Gast)


Lesenswert?

ಠ_ಠ schrieb im Beitrag #3132374:
> Von Mikrofonen hab ich keine Ahnung. USB Soundkarten mit mehr als 48kHz
> sind auch eher teuer. Daher:
>
> http://www.maximintegrated.com/datasheet/index.mvp/id/3068

Und den Treiber für den Pi hast du auch schon in der Schublade.
Lies dir mal das Thread-Thema durch oder reichen dazu deine kognitiven 
Fähigkeiten nicht aus?

von J. S. (engineer) Benutzerseite


Lesenswert?

Es gibt mehrere Möglichkeiten, das Thema anzugehen. Eine wäre ein roher 
AD-Wandler ohne AA-Filter, denn in der Tat haben die Audiogeräte 
meistens eine Bandbegrenzung im Bereich 15kHz-30kHz drin. Fledermäuse 
strahlen aber angeblich bis über 100kHz :-)

Ich habe daher in einer Ultraschall-APP einen AKM-Chip mit eigener 
Analogschaltung betrieben. Die Samplerate betrug bauartbedingt 96kHz mit 
256fach oversampling - mit etwas moderneren Chips ist da mehr drin. Da 
das System mehrkanalig maß, gab es gleich mehrere Kanäle, die ich 
interlacen konnte. Das wäre die zweite Möglichkeit, die Auflösung zu 
steigern. Mit 4 Kanälen bekommts Du im 90-Grad-Raster logischerweise 
384kz Abastrate - die AA-Grenzfrequenz sollte dann bei <100kHz liegen.

Noch höher geht es mit Undersampling, aber da braucht man stabile 
Signale. Für die Fledermäuse ist das nichts, weil sich die Amplituden zu 
schnell ändern. Technisch gesehen, ist es auch schwer, dafür einen 
Taktgenerator mit ausreichender Phasenstabilität zu bauen.

Und dann gibt es da noch das allergrösste Problem:

Schallwellen dieser Tonhöhe haben enorm kurze Wellenlängen und diese 
bringen einem etliche Unschönheiten auf den Mikrofonmembranen. Die 
klassischen Mikrofontypen versagen hier bauartbedingt. Von meinen 
Studiomikrofonen erwies sich gerade ein Kleinmembraner bis 40kHz als 
nutzbar.

Man benötigt also zuerst mal einen dedizierten Ultraschallwandler mit 
optimierter Baugrösse.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Juergen Schuhmacher schrieb:
> Und dann gibt es da noch das allergrösste Problem:
>
> Schallwellen dieser Tonhöhe haben enorm kurze Wellenlängen und diese
> bringen einem etliche Unschönheiten auf den Mikrofonmembranen. Die
> klassischen Mikrofontypen versagen hier bauartbedingt. Von meinen
> Studiomikrofonen erwies sich gerade ein Kleinmembraner bis 40kHz als
> nutzbar.

Das sehe ich auch so. Möglicherweise wären Bändchenmikrofone noch 
geeignet, aber wer hat sowas heute noch, hehehe? Deswegen wollen wir es 
mal mit Kristallohrhörern probieren, die ja auch als Mikrofone 
hervorragend gehen und zumindest im Hörbereich anständig Pegel liefern. 
Unser erster Versuchsaufbau ist ein Tongenerator, ein Oszi und zwei 
dieser Hörer akustisch gekoppelt, einer als Geber und der andere als 
Empfänger. Wenn die Frequenzgänge geeignet sind, ist das ein Schritt in 
die richtige Richtung. Dedizierte US Empfänger sind ja meistens resonant 
aufgebaut und liefern ausserhalb ihres Bereiches fast keinen Pegel.

Juergen Schuhmacher schrieb:
> einen AKM-Chip

Welchen genau hast du da genommen? Es scheint mir z.B. der AK5359 wg. 
seiner hohen Samplerate geeignet zu sein.
Das klingt jedenfalls genau nach dem, was ich auch plane. Ich habe 
damals recht viele Treiber für Linux 2.6 geschrieben, und könnte mich in 
die geänderte Syntax von z.B. raspbian wheezy vermutlich recht schnell 
einarbeiten. Dein Projekt lief aber vermutlich nicht auf einem RPi?

Ausserdem habe ich hier noch ein paar sauschnelle Video Flashwandler mit 
Parallelausgang, die allerdings nur 6 und 8 bit Ausgang haben.

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
Noch kein Account? Hier anmelden.