Forum: Digitale Signalverarbeitung / DSP / Machine Learning Vibrationen / Frequenzen messen / FFT


von Thorsten G. (Gast)


Lesenswert?

Guten Morgen,

ich möchte für meine Studienarbeit Frequenzen von einem 
Beschleunigungssensor messen (Vibration). Leider habe ich nicht wirklich 
ahnung wie ich an die Sache ran gehen soll :(

Da nur die "Hörbaren" Frequenzen interessieren wollte ich zunächst an 
den Eingang einen Bandpassfilter an den Eingang setzten (20Hz - 20kHz). 
Dann wollte ich die Signale vom Beschleunigungssensor (0-5V, 2.5V Offset 
0g) mit einem AD-Wandler digitalisieren. Jetzt weis ich schon nicht mehr 
weiter ...

Reicht es eine FFT über das Signal laufen zu lassen und dann das 
Frequenzspektrum anzuzeigen (also z.B. 1024 Samples vom Signal machen 
und das dann einer FFT Lib übergeben) oder muss man da wesentlich mehr 
machen? Letztlich soll eine Art "Equalizer" am PC angezeigt werden...

Reicht dafür ein Ausreichend schneller µC (evtl. mit MAC-Einheit) oder 
sollte man da direkt zu einem DSP greifen? Wenn ja, für welchen DSP 
bekommt man günstige/kostenlose/selbstbau Programmer / 
Entwicklungssoftware / Compiler?

Die reine Programmierung macht keine Probleme, ich bräuchte nur den 
richtigen Ansatz.

Ich hoffe ihr könnt mir helfen ...

: Verschoben durch Admin
von Christian (Guest) (Gast)


Lesenswert?

Nur Anmerkungen

Beschleunigungssensor:
  einige haben bereits Bandpassverhalten/Frequenzbereich.
  eventuell gibt es einen passenden?

20Hz bis 20 KHz
=> mind. 40 kS/Sek. (shannon, abtasttheorem)

Bei 1000 Samples ist der gesamte Freq.-bereich nur bedingt
zu analysieren - oder du läßt bei kleineren Frequenzen (ermittelbar?)
einfach Samples "raus".

1000 Sample bei 40kS/sek => 25 msec
20 Hz == 50 msec.
=> keine sinnvolle FFT-Anwendung mit 1000 S
Du brauchst mehr.

Ist es eine Frequenz die auftritt ?

Bei der FFT werden nur die Signale richtig berechnet, die in
dein 1024 Samplebereich als Sinus n-fach passen.

Alle anderen erzeugen nichtvorhandene Spektralanteile:
daher werden die ersten und letzten Meßwerte oft gewichtet
(verschiedene Funktionen sind da in der Lit. genannt.)
siehe z.B.:
http://www.baudline.com/manual/equalization.html#windowing



Zitat:
"Equalizer" am PC angezeigt...

Wenn ein PC erlaubt ist/dabei ist:

Da würde ich alles direkt mit (der) Soundkarte(-n) machen:
& da gibt es freeware

Man kann auch mehrere Soundkarten ansprechen
- ggf. ist das ein einfacherer Weg, da ein PC ja eh verwendet wird.
Der Bandpass ist ja fast passend in jeder Soundkarte "drin".

Soll nur das Signal analysiert werden ?


von Thorsten G. (Gast)


Lesenswert?

Hallo,

genau genommen sollen die Daten nicht am PC sondern an einem PocketPC 
angezeigt werden. Soundkarte ist demnach leider nicht vorhanden. 
Datenübertragung ist mit Bluetooth daher kann ich nicht alle Samples zum 
PocketPC schicken, die Daten müssen also vorverarbeitet werden.

Die Beschleunigungssensoren haben den Bereich von 20Hz - 20kHz. Sofern 
ich dann den Bandpass weglassen kann, dann ist das ja gut.

Die Abtastrate sollte 44.2kHz sein. Wenn ich jetzt z.B. alle 100ms 
berechnen möchte, dann brauche ich also rund 4200 Samples. Muss ich die 
dann durch eine FFT laufen lassen? Es sind tatsächliche Frequenzen die 
Auftreten (also von +Xg nach -Xg ..). Alle anderen Signale sind 
unwichtig. Es tritt ja auch ein hörbares Geräuch generiert. Mikrofon 
soll nicht verwendet werden, da die Umweltgeräuche "zu laut sind" (laut 
Anforderung).

Was genau liefert mir die FFT als Ergebniss (hab das noch nicht richtig 
verstanden)? Der Graph soll nachher so aussehen, das im Abstand von 
50-100Hz ein Balken je nach Lautstärke/Itensität erscheint (ich hoffe 
das ist verständlich erklärt).

von Thorsten G. (Gast)


Angehängte Dateien:

Lesenswert?

Anbei ist ein Screenshot von einem Shareware Programm, 1kHz SIgnal über 
Notebook Lautsprecher, aufgenommen über Notebook-Mikrofon mit 1024 
Samples FFT. So soll das dann aussehen..

von Power (Gast)


Lesenswert?

Ich hatte mal 'ne Schulung bei der Fa. Schenck. Die sind da drauf 
spezialisiert. Zuerst sollte man wissen was man erwartet und sehen will, 
z.B. Vibrationen innerhalb eines Getriebes, eines Lüfterrades oder 
Ähnliches. Demzufolge weiß man die zu Erwartende Frequenz (Drehzahl, 
Zähnezahl usw.). Eine 'eierlegende Wollmilchsau' wird immer nur 
ungefähre Anhaltspunkte liefern, für eine genaue Analyse muss ein 
kleiner Frequenzbereich jeweils hoch aufgelöst werden und die FFT 
drübergelegt werden.

Ich weiß nicht was du mit dem Projekt sehen willst, nur ein Spektrum 
über 20Hz..20kHz? Logarythmisch oder linear angezeigt/bewertet? Davon 
hängt u.A. auch die Aufzeichnung ab.

von Christian (Guest) (Gast)


Lesenswert?

Mit der Abtastrate & den Anzahl der Samples sind die
max. Freq.
min. Freq. und
n*  (min. Freq.)  spezifiziert.


min. Freq:
  ein Sinus, der genau 1x deine Gesamtmessdauer entspricht:

Da du 100 msec lang messen möchtest, ist damit
  F_0
angegeben.


Alle weiteren Frequenzen, die richtig von der FFT ermittelt werden,
sind:
   n* F_0
bis zur max. Freq.

(Für Kritiker:
ja, man kann anders interpretieren, aber es liegt ein
gefiltertest Signal vor und damit geht das)

Beispiel:
 Du nimmst 1 Sek. lang auf, 10 Samples, da paßt ein Sinus rein:
    => 1 Hz ist F_0

Eine Freq. von 1,5 Hz kannst Du damit nicht richtig "erkennen",
aber eine mit 2 Hz = 2x F_0

Die 1,5 Hz erzeugen eine Menge an Frequenzanteilen in dem
   angezeigtem Spektrum

Falls Vorhanden:
-matlab
-octave  0 Euro
-scilab  0 Euro
teste die FFT,
scilab hat (wenn ich richtig liege)
eine FFT "onboard" mit gewichtungen.
Auch sinnvoll, um ggf. gemessene und analysierte
spektren zu konntrollieren


Math:
 die FFT stellt das Signal in der Energienorm dar (toll)
=>  es gibt Überschwinger, wenn man zB ein Rechteck aus den
  berechneten Sinuskurve zusammenbaut:
   Gibb'sches Phänomen

Auch das "windowing", Fensterfunktion erzeugen ähnliche
Effekte: also zusätzliche Freq.-anteile, die nicht da sind.


Da die FFT sehr aufwendig ist,
und mehrere Freq. im Signal drin sind &
mehrere Signale analysiert werden,
ist dass ggf. nicht mit einem "kleinen"
uC machbar.

Equalizer.:
Wenn du es nur anschauen willst, dann ist es kein Equ.
"nur" ein "Spektrumanalyser"


Daneben  ist zu beachten, dass die Freq. quasi gemittelt werden
je Zeitfenster,
wenn die FFT so angewendet wird.
Du kannst da aber zwischenergebnisse für hohe Freq.
berechnen: kleiner FFT-zeitbereiche., die dann ausgeben,
um eventuelle
  zeitl. kurze, aber große Pegel zu erkennen
Sonst wird da "gemittelt".


DSPs, FPGS wären ggf. Stichworte, wenn die Anforderung steigt.


Tipp:
1.
nimm deutl. mehr CPU-Power als geplant.
Am ende einer Stud.-arb. festzustellen. dass da "2 MIPS fehlen"
ist sehr ärgerlich.

2. float -Berechnungen:
  die FFT wird mit sin, cos, ... berechnen or Tabelle.
   INT-Berechnung approximiert => (min) "Rauschen"


3. schau in deiner Umgebnung, wer hat Erfahrung mit uCs/DSPs/FPGAs.
  eine Antwort kann 1 week arbeit sparen


4.
fertige Codes:
  googlen


5.
ggf. hilft das:
http://bwir.de/schaltungen/miniverstaerker


Weiter kann ich Dir nicht helfen (wenn das geholfen hat, ich hoff-s, :-)

Gruß & Erfolg!
C.

von Timo (Gast)


Lesenswert?

@Christian

Also, das ist ja bei mir schon ein bißchen her, ich stelle aber mal als 
Diskussionsgrundlage in den Raum, das es falsch ist was du über die 
niedrigste Frequenz schreibst.

Erklär doch mal bitte, warum die Periodendauer der niedrigsten Frequenz 
kleiner als die Messdauer sein muss?

Um eine Sinusschwingung zu beschreiben genügen zwei Abtastwerte pro 
Periode. Aber warum sollte man eine komplette Periode messen müssen? 
Dann könnte man ja auch nie einen Gleichanteil mit einer FFT berechnen, 
schließlich müsste man dann nach deiner Begründung eine unendliche 
Anzahl von Samples haben?!

Gruß

von Christian (Guest) (Gast)


Lesenswert?

Weil die FFT für 2-pi periodische Signale anwendbar ist.

Gleichanteil: ok, ist aber hier gefilter und
hat auf die messdauer keinen einfluß, solange die anderen
Freq. in das Schema passen


ZB:
1 HZ pass in die messdauer
1,5 Hz nicht => 3 Halbperioden

was machst du mit dem Gleichanteil der jetzt da ist ?

Der ist plötzlich da , aber es liegt nur eine Freq./schwingung
OHNE gleichanteil vor.


(Da eh ein Bandpass vorliegt, gibt es keinen Gleichanteil.)


Mit zwei Meßwerten kannst man nicht immer einen Sinus beschreiben:
die beiden Werte sind, extremfall:
 0= A sin(0*pi)
 0= A sin(1*pi)
Wie groß ist A, wenn die messung 2x 0 ergibt ?


min. Freq. ist aber ein schlechter Ausdruck:
  eher Grundwelle ?



Resumee:
Wenn also die freq-anteile 2-pi periodisch sind,
ist der Gleichanteil von der Messdauer/Sampleanzahl unabhängig,
da die Sinuswelle alle "herausfallen und nur der Gleichanteil bleibt:

die "langsamste Sinuswelle" (tiefste Freq.)
muss genau reinpassen, alle anderen sind n*
"schneller",
dann stimmt bei addition aller werte auch der gleichanteil.





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.