Stabilizacja odczytywanej częstotliwości

Tematy związane z LabVIEW pracującym w czasie rzeczywistym.
przemulala
Posty: 2
Rejestracja: 16 lip 2014 20:02
Wersja środowiska: LabVIEW 2013

Stabilizacja odczytywanej częstotliwości

Post autor: przemulala » 16 lip 2014 20:19

Witam,


Postaram się przedstawić mój problem możliwie zwięźle: z określoną częstotliwością (powiedzmy co pół sekundy) dostaję pewną wartość, określającą częstotliwość drgań. Problem polega na tym, że odczyty pochodzą z nienajlepszego układu i tak np dla częstotliwości o zadanej wartości 4,5 kHz otrzymuję szereg takich wartości: 4500, 4500, 300, 8000, 4500, 4300 etc. W większości przypadków odczyt jest poprawny i chciałbym w jakiś sposób stabilizować wyświetlenia (żeby użytkownik nie przestraszył się dzikich odchyleń).

Moje wstępne rozwiązanie zakładało użycie Collector VI pobierającego różnej wielkości próbki: 5, 10, 15, 20, 30, 40 i przy pomocy histogramu wybierającego najczęściej powtarzającą się wartość. Później całość szła na jeszcze jeden Collector i histogram, i otrzymywało się w ten sposób ostateczną wartość. Pomiędzy połączeniami wartość jest zaokrąglana do jedności (inaczej powtórzenia nie byłyby możliwe).

Efekt jest taki, że odczyt jest całkiem odporny na szumy, ale najczęściej niedokładny względem wartości chwilowej, kiedy ta jest akurat wyświetlana poprawnie (różnice na poziomie dziesiątek Hz - najprawdopodobniej ich źródłem są wspomniane zaokrąglenia po histogramie, intervals są dobierane automatycznie).

Czy macie jakiś inny pomysł, jak osiągnąć efekt, o którym piszę? Myślałem o śledzeniu czasu wyświetlania pewnych wartości i żeby to na tej podstawie określać poprawną wartość częstotliwości i ją określać (zakłócenia, jeśli występują, mają bardzo różne wartości i są chwilowe), nie wiem jednak, jak mógłbym zrealizować to w praktyce.

Z góry przepraszam, ale nie mogę udostępnić wspomnianego kodu na forum.


Pozdrawiam!

Daniel PCL
Posty: 20
Rejestracja: 03 kwie 2013 11:26
Wersja środowiska: LabVIEW 8.0

Re: Stabilizacja odczytywanej częstotliwości

Post autor: Daniel PCL » 16 lip 2014 21:58

To może zebranie np. 10 pomiarów i odrzucenie 2 najniższych i 2 najwyższych (jako przypadkowe piki zakłócające) ..... i później średnia a na koniec średnia krocząca.....

PiDi
Posty: 602
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice
Has thanked: 2 times
Been thanked: 1 time

Re: Stabilizacja odczytywanej częstotliwości

Post autor: PiDi » 16 lip 2014 22:58

przemulala pisze:odczyty pochodzą z nienajlepszego układu (...) chciałbym w jakiś sposób stabilizować wyświetlenia (żeby użytkownik nie przestraszył się dzikich odchyleń).
Ale czy użytkownik nie powinien w takim razie bać się tego "nienajlepszego układu" pomiarowego? :-ss Skąd masz pewność, że wartości, które otrzymujesz, w ogóle są właściwe, skoro ten układ nie działa prawidłowo?

Czy możesz pokazać jakieś konkretne wyniki, wyniki jakie chciałbyś uzyskać oraz to, co dostajesz teraz po przetwarzaniu? Jeden rysunek/wykres zamiast tego dość pogmatwanego opisu słownego pewnie więcej powie.
ObrazekObrazekObrazek

przemulala
Posty: 2
Rejestracja: 16 lip 2014 20:02
Wersja środowiska: LabVIEW 2013

Stabilizacja odczytywanej częstotliwości

Post autor: przemulala » 16 lip 2014 23:50

Wiem, że większa część otrzymywanych wartości jest prawidłowa, ponieważ sygnał podaję z oscyloskopu, gdzie definiuję częstotliwość. Przesyłane na bieżąco odczyty podglądam i znam wartości (jak wypisywałem przykładowo wyżej).

Wyniki prezentują się następująco - jest to ciąg wartości liczbowych (nowa pojawia się co ok 0,5 sec): x, x, a, b, c, x, x, x, x, g, h, i, j, k, x, x, x, x...
'x' jest wartością poprawną. Pozostałe mogą się różnić znacząco lub mniej. Stąd pomysł Daniela jest raczej słaby - odrzucanie wyników, nawet po sortowaniu danej próbki i liczenie średniej na pewno wprowadzi większy błąd niż aktualnie uzyskiwany. Chodzi o to, aby wyświetlać użytkownikowi właśnie wartość x, korzystając z faktu, że pojawia się najczęściej.

Ale jak powiedziałem, histogram wprowadza pewien błąd (nie jest on widoczny przy częstotliwościach < 1 kHz). Wynika to najprawdopodobniej ze sposobu przetwarzania danych przez Histogram VI (interwały niby są dobierane automatycznie, ale przecież skoro wchodzą do analizy liczby całkowite, a wychodzą double, no to musi coś się tam dziać).

PiDi
Posty: 602
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2014
Lokalizacja: Katowice
Has thanked: 2 times
Been thanked: 1 time

Re: Stabilizacja odczytywanej częstotliwości

Post autor: PiDi » 21 lip 2014 23:09

To może filtr medianowy? Albo po prostu medianę z N próbek?
ObrazekObrazekObrazek

TMa
Posty: 198
Rejestracja: 07 sty 2010 12:56
Wersja środowiska: LabVIEW 2017
Been thanked: 3 times

Re: Stabilizacja odczytywanej częstotliwości

Post autor: TMa » 22 lip 2014 09:10

Potrzebujesz mierzyć wartość tzw. rozrzutu kolejnych pomiarów. Najczęściej stosuje się tutaj odchylenie standardowe. Masz wartość oczekiwaną (pochodzącą z poprzednich pomiarów poprzez uśrednienie lub zadaną z góry) i wartości zmienne (kolejne próbki zebrane przy akwizycji). Obliczasz jak bardzo dany pomiar jest oddalony (wartość rozrzutu) i na tej podstawie określasz wiarygodność/ważność danej próbki.

ODPOWIEDZ