FFT von Sensordaten mittels Raspberry

OP #6068968
Lesenswert?
• ▲
▼
Guten Tag,
ist es möglich, auf die mit einem beispielsweise Beschleunigungssensor 
aufgenommenen Schwingungen eines Geräts/einer Maschine eine 
Fouriertransformation mit dem Raspberry PI anzuwenden? Der Sensor ist 
ebenfalls am Raspberry angeschlossen.
Oder brauche ich da externe Tools, die dann die Datenverarbeitung 
durchführen?


Viele Grüße
Max
#6069276
Lesenswert?
• ▲
▼
Definiere "externes Tool"? Natürlich musst du Software schreiben oder 
installieren, die deine Sensordaten entgegennimmt, die nötige 
Verarbeitung macht, und sie irgendwie ausgibt. Einfach den Sensor an das 
RPi stecken und dann drauf hoffen dass es auf dem Display die FFT 
anzeigt wird offensichtlich nicht klappen. ;)
OP #6069778
Lesenswert?
• ▲
▼
Sven B. schrieb:
> Definiere "externes Tool"? Natürlich musst du Software schreiben oder
> installieren, die deine Sensordaten entgegennimmt, die nötige
> Verarbeitung macht, und sie irgendwie ausgibt. Einfach den Sensor an das
> RPi stecken und dann drauf hoffen dass es auf dem Display die FFT
> anzeigt wird offensichtlich nicht klappen. ;)

Das ist mir schon bewusst. Ein Programm, welches die Daten aufnimmt habe 
ich schon. Mir stellt sich nur die Frage, wie ich die Daten dann 
„fouriertransformiere“.
An der Uni hat man das ja per Hand gemacht, und da waren ja auch 
Funktionen vorgegeben.
Aber wie sieht das denn in der Praxis nun aus? Wie kann ich auf die 
Sensordaten (+-10V) eine Fouriertransformation anwenden? (mit dem 
Raspberry)
#6070012
Lesenswert?
• ▲
▼
Das geht wunderbar mit Python. numpy.fft.fft

Das Beispiel im Anhang erzeugt zwei Sinus Signale, überlagert diese und 
macht daraus 2^16 Abtastwerte mit 16 Bits. Davon wird dann eine FFT 
gerechnet, normiert (volle Aussteuerung sind 0 dB) und geplottet. Ein 
Signal liegt bei 5 (Hz, kHz, MHz, im Beispiel egal) mit vollem Pegel, 
steuert den ADC voll aus. Das andere Signal liegt bei der doppelten 
Frequenz, hat aber nur 1/1000 der Amplitude. Und der Peak im Spektrum 
liegt auch bei -60 dB.
Angehängte Dateien:
#6070134
Lesenswert?
• ▲
▼
Dazu müsste man wissen, in welcher Sprache du dein Tool geschrieben 
hast. Für die meisten Sprachen gibt es FFT-Bibliotheken. Wenn nicht, 
hast du die Wahl entweder selbst den Algorithmus zu implementieren oder 
eine andere Sprache zu benutzen. Python bietet sich wie bereits genannt 
für solche Aufgaben an.
#6074060
Lesenswert?
• ▲
▼
3dB größer, was vmtl ok ist?

Die zweite Hälfte des Ergebnisses schneidet das Skript in dem Plot ab, 
indem es fsample durch 2 teilt. Dann hast du gerade wieder die rfft.

Außerdem kann man noch anmerken zu dem Skript:
 - Es gibt np.fft.fftfreq zur Berechnung der Frequenzachse
 - Die Schleife zum Erzeugen des Signals, lässt sich hervorragend 
vektorisieren, dazu ist numpy doch gerade gut ;)
1
X = np.linspace(0, tmax, N)
2
Y = np.sin(...*X) + np.sin(...*X) + np.random.randint(0, ampl, N)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.