Frequenzmessung

Signal -erfassung, -verarbeitung und -ausgabe
Ответить
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Frequenzmessung

Сообщение LauraS »

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 КБ) 323 скачивания
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
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Frequenzmessung

Сообщение Eugen Graf »

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
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Frequenzmessung

Сообщение LauraS »

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.
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Frequenzmessung

Сообщение Eugen Graf »

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.
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Frequenzmessung

Сообщение LauraS »

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 КБ) 274 скачивания
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Frequenzmessung

Сообщение LauraS »

eg писал(а):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
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Frequenzmessung

Сообщение Eugen Graf »

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.
Вложения
Interpolation.png
Interpolation.png (9.87 КБ) 9699 просмотров
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Frequenzmessung

Сообщение Eugen Graf »

Ups, ich habe Interpolate und Threshold vertauscht. So ist es jetzt richtig. Schau dir das beigelegte Beispiel an.
Вложения
Interpolate.png
Interpolate.png (5.75 КБ) 9698 просмотров
Interpolate.vi
LV 8.5
(9.22 КБ) 253 скачивания
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Frequenzmessung

Сообщение LauraS »

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 КБ) 234 скачивания
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Frequenzmessung

Сообщение Eugen Graf »

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.
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Frequenzmessung

Сообщение LauraS »

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
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Frequenzmessung

Сообщение LauraS »

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
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Frequenzmessung

Сообщение LauraS »

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 КБ) 366 скачиваний
Grüßle und schönes Wochenende!
Ответить

Вернуться в «Signalverarbeitung»