Frequenzmessung

Signal -erfassung, -verarbeitung und -ausgabe

Frequenzmessung

Postby LauraS on 08 Sep 2009, 12:35

Hallo zusammen,
ich stehe vor einem Riesenproblem:
Wie in folgendem Screenshot, will ich ein Signal so auswerten, dass alle Werte, die außerhalb des Toleranzbandes liegen, markiert werden, und die Gesamtabweichung berechnet wird. (Im Screenshot verwende ich ein selbst generiertes Signal)
screenshot_band.JPG


Mein Signal bekomme ich von dem SubVI "Analaogeingang lesen", bis dahin funktioniert alles super, ich kann die auch die Abtastrate einstellen, alles einwandfrei.

Jetzt möchte ich dieses Analogsignal eben so auswerten, dass ich die Amplituden der Frequenzen, für die Grenzwerte angegeben sind, mit den Grenzwerten vergleichen kann, und das umgewandelte Signal eben in dem Graph anzeigen kann.
Irgendwie verursacht diese Sache bei mir aber mehr Probleme, als ich gedacht habe...
Hab mal das VI hier, so wiet wie ich bisher gekommen bin (nur die Signalumwandlung, ohne Grenbzwertvergleich etc.)
Test_4.vi
(38.81 KiB) Downloaded 212 times

Ich dachte, ich lasse mir das Betragsspektrum einfach mit der FFT anzeigen, und das war's...nur funktioniert das nicht so, wie ich s mir vorgestellt habe. Kann mir da vielleicht jemand weiterhelfen?
Müsste ich das Signal vorher noch filtern? Kann es Probleme machen, dass ich so eine niedrige Abtastrate habe? Ganz allgemein erschließt sich mir auch die praktische Anwendung von der FFT noch nicht so ganz...Auch die Eingabeparameter für die Mittelwertbildung der FFT versteh ich nicht so ganz.
Wäre echt dankbar, wenn mir jemand weiterhelfen könnte...
Grüßle Laura
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0

Re: Frequenzmessung

Postby Eugen Graf on 08 Sep 2009, 12:46

Ok, was macht FFT? Es zeigt die Frequenzen, die in deinem Signal während der Aufnahme vorgekommen sind. Normalerweise gibt es eine Grundfrequenz und restliche "störende" Frequenzen. Was willst du erreichen durch deine Messung?
Dein Toleranzband, sind das zwei Konstante Werte oder wirklich zwei Krumme, wie auf deinem Screenshot?

Ich kann verstehen, wenn du die Grundfrequenz weglässt und die Amplituden der störenden Frequenzen mit einem bestimmten Schwellwert vergleichst.

Kannst du uns ganz genau und deutlich deine Aufgabe vorstellen?

Gruß, eg
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Frequenzmessung

Postby LauraS on 08 Sep 2009, 13:07

Okay:
Für beispielsweise eine Lautsprecherprüfung wird ein Ton ausgegeben, der zuvor durch die Pegel für best. Frequenzen (im Beispiel oben 500, 1000, 2000, 3000, 4000 und 5000 Hz) festgelegt wurde.
In einer weiteren tabelle werden die Grenzwerte für diese Pegel angegeben, d. h. Werte, bei denen der Ton noch in Ordnung ist.
Nun wird das Signal (das der Lautsprecher ausgibt), eingelesen.
Ich soll jetzt dieses Signal so auswerten, dass man die einzelnen Abweichungen sieht, und gleichzeitig die Gesamtabweichung berechnet wird. (Erst bei einer Gesamtabweichung von über 50 % ist der Ton schlecht)
Also ich habe ein analoges Eingangssignal und möchte die Amplituden der vorher festgelegten Frequenzen haben, mal auf den kleinsten Nenner gebracht...
Vielen Dank für deine Hilfe!!
Grüßle
PS: die Grenzwerte sind nicht konstant, sondern eben durch die Grenzwerttabelle festgelegt und können wie im Screenshot so krumm sein.
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0

Re: Frequenzmessung

Postby Eugen Graf on 08 Sep 2009, 13:24

Aha, wenn es über die Tabelle geht, dann brauchst du noch die Interpolation zwischen den Tabellenwerten.
Ja, im Prinzip machst du FFT über dein Signal, danach gehst du jeden FFT-Wert durch (For-Schleife) und vergleichst mit dem Interpolierten Tabellenwert der Grenzwerttabelle und guckst nach ob es überschritten ist oder nicht. Wenn überschritten, dann bildest du die Differenz zwischen dem aktuellen FFT-Wert und interpolierten Tabellenwert und addierst diese Differenz zu dem Gesamtabweichungswert.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Frequenzmessung

Postby LauraS on 09 Sep 2009, 09:23

Okay...Vielen Dank.
Das heißt also, dass ich mit der FFT auf dem richtigen Weg war....schon mal gut:-)
Nur noch für mein Verständnis: was macht denn die Mittelwertbildung bei der FFT? Also irgendwie seh ich zwar bei unterschiedlichen Einstellungen auch gewisse Unterschiede in der Ansicht dann nachher, aber einordnen kann ich das irgendwie nicht...
Und wenn ich die Anzeige nicht in dB haben möchte, aber trotzdem mehr als nur so n paar Werte, wie mach ich das?
Außerdem hätte ich gern weniger Werte angezeigt, eigentlich nur die für die Frequenzen, die in der Tabelle angegeben wurden. Wie krieg ich das hin?
Ich stell nochmal mein VI hier rein, bin mir total unsicher ob das alles was ich da mache, Sinn macht :dntknw:
Würd mich sehr freuen, wenn da jemand drüber schauen könnte;-)
Momentan bekomm ich voll oft die Fehlermeldung "Signalverläufe haben unterschiedliche dt-Werte"...was das bedeutet, weiß ich zwar, aber nicht, wo ich's einstellen kann...
Nochmal vielen Dank für jeden Tip!
Grüßle

Test_3.vi
(79.64 KiB) Downloaded 160 times
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0

Re: Frequenzmessung

Postby LauraS on 09 Sep 2009, 12:04

eg wrote:Aha, wenn es über die Tabelle geht, dann brauchst du noch die Interpolation zwischen den Tabellenwerten.


Hmm...Für was noch ne Interpolation? Ich kann doch über die Limit testen-Funktion einfach die Werte vergleichen lasssen. Und die Tabelle gibt ja zu jedem x-Wert einen eindeutigen y-Wert an...oder irr ich mich? :dntknw:
Grüßle
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0

Re: Frequenzmessung

Postby Eugen Graf on 09 Sep 2009, 13:14

Das ist ungefähr das, was ich mit Interpolation gemeint habe.

Die Amplitude kann man irgendwie von db umrechnen, irgendwie mit Wurzel 2 oder so ähnlich.
Attachments
Interpolation.png
Interpolation.png (9.87 KiB) Viewed 6223 times
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Frequenzmessung

Postby Eugen Graf on 09 Sep 2009, 13:26

Ups, ich habe Interpolate und Threshold vertauscht. So ist es jetzt richtig. Schau dir das beigelegte Beispiel an.
Attachments
Interpolate.png
Interpolate.png (5.75 KiB) Viewed 6222 times
Interpolate.vi
LV 8.5
(9.22 KiB) Downloaded 141 times
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Frequenzmessung

Postby LauraS on 09 Sep 2009, 17:40

Sodele, bin sehr viel weiter gekommen!!!
Jetzt hab ich grad noch einen kleinen Fehler drin: Nämlich wenn ich df sich selbst einstellen lasse (in dem Fall ist df=10), werden meine Frequenzen auf der x-achse auch mit 10 multipliziert, d.h. es werden nicht 500, 1000, 2000 usw. verwendet in der anzeige, sondern 5000, 10000 usw.
Wenn ich die Schrittweite df umstelle, z.B. auf 1, dann hab ich ab der Frequenz 3000 Hz nur noch Nullen in dem Array.
Vielleicht hat jemand Zeit und Lust, da mit mir noch bissle Fehlersuche zu betreiben. Würd mich freuen :wink:
Ansonsten Danke Dir eg für deine Tips! :clap:
Grüßle

Hier das VI:
Test_4.vi
(88.92 KiB) Downloaded 128 times
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0

Re: Frequenzmessung

Postby Eugen Graf on 09 Sep 2009, 18:01

Ich weiss ehrlich gesagt nicht, was du mit den unteren zwei For-Schleifen vorhattest.
Die Interpolation, die ich gemeint habe sollte nur als Ersatz für deine Lösung sein. Wenn es nun bei dir mit Limit-VIs so klappt, dann brauchst du meine Lösung nicht mehr.

Mit der Interpolation habe ich folgendes gemeint:

Nach dem FFT bekommst du eine bestimmte Anzahl Frequenzen, sagen wir mal 100 Stück (Punkte), z.B. von 0 bis 1000 Hz in 10-er Schritten (das ist übrigens das df, das von FFT rauskommt).

In deiner Tabelle hast du aber z.B. 50 Stück in 20-er Schritten, also auch von 0 bis 1000 Hz.

Um die fehlenden Zwischenwerte der Tabelle zu vervollständigen, brauchst du eine Interpolation.

Aber so, wie es aussieht, machen das die Limit-VIs für dich. Du brauchst dich also nicht mehr darum zu kümmern.
User avatar
Eugen Graf
guru
guru
 
Posts: 6502
Joined: 13 Nov 2007, 02:20
Location: Saarbrücken
Medals: 4
Activity (1) Professionalism (1) Silver (1) Black (1)
LabVIEW Version: 2009
Karma: 303
CLAD I/O VIP bloggers internet

Re: Frequenzmessung

Postby LauraS on 11 Sep 2009, 09:18

Die erste for-Schleife liest mir aus den Werten der FFT genau die aus, die ich in der Grenzwert-Tabelle angebe. Also 500, 1000, 2000, 3000, 4000 und 5000 Hz.
Um diese Werte der Limit-testen-Funktion zu übergeben, muss ich sie doch mit dert zweiten for-Schleife interpolieren, oder nicht?
Es funktioniert so eig ganz gut, bis auf dass ich ein Problem mit den unterschiedlichen df, dt usw. habe...
aber ich denk das krieg ich auch noch hin.
Danke auf jeden Fall mal.
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0

Re: Frequenzmessung

Postby LauraS on 11 Sep 2009, 10:32

Also, ich hab den Fehler im Programm jetzt zumindest mal lokalisiert.
In der zweiten for-Schleife, in der ich die (in dem Fall) sechs ausgelesenen Werte interpolieren möchte, läuft irgendwas falsch.
Hab das hier mal abgebildet:
interpolate.JPG

Irgendwie klappt die Interpolation nicht so ganz. In das Ausgangsarray wird mir immer nur der erste Funktionswert geschrieben, und deshalb bekomme ich nur eine Gerade raus...
Weiß allerdings nicht, wo dran das liegt...Könnte mir da jemand weiterhelfen? Würd mich freuen!
Danke schon mal...

P.S.
Wenn ich die Anzahl der Schleifendurchläufe auf 5000 erhöhe, führt das VI die Interpolation durch, allerdings wird das Ausgangsarray mir dann zu groß... :help:
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0

Re: Frequenzmessung

Postby LauraS on 11 Sep 2009, 12:21

Ein letztes Mal in diesem Thread Hallo zusammen!:-)
Wollte mich nochmal für die Tips bedanken, das Programm läuft jetzt...
Vielen Dank für deine Hilfe eg.
Hier mal das fertige VI:
Test_4.vi
(71.5 KiB) Downloaded 235 times

Grüßle und schönes Wochenende!
LauraS
junior
junior
 
Posts: 61
Joined: 14 Jan 2009, 11:52
LabVIEW Version: 8.5
Karma: 0


Return to Signalverarbeitung

Who is online

Users browsing this forum: No registered users and 2 guests

cron