Stabilizacja odczytywanej częstotliwości
: 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!
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!