
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:02

Jestem naprawdę wielkim fanem instruktażu akellyirla na temat niezawodnego wykrywania częstotliwości przy użyciu technik DSP, ale czasami technika, której użył, nie jest wystarczająco dobra, jeśli masz zaszumione pomiary.
Jednym z łatwych rozwiązań, aby uzyskać czystsze dane wejściowe dla detektora częstotliwości, jest zastosowanie pewnego rodzaju filtra wokół częstotliwości, którą chcesz wykryć.
Niestety stworzenie filtra cyfrowego nie jest łatwe i wymaga sporo matematyki. Pomyślałem więc o stworzeniu jakiegoś programu, który uprościłby tworzenie takich filtrów, aby każdy mógł z nich korzystać w swoich projektach bez zagłębiania się w szczegóły.
W tej instrukcji zamierzam wykryć falę sinusoidalną 50 Hz w hałaśliwym pomiarze za pomocą Arduino Uno (Arduino nie jest tak naprawdę konieczne).
Krok 1: Problem

Wyobraź sobie, że zmierzone dane wejściowe wyglądają jak powyższa krzywa – dość zaszumiona.
Jeśli zbudujemy prosty detektor częstotliwości, taki jak ten w Instructable akellyirl, wynikiem będzie „-inf” lub w przypadku kodu poniżej: „Tak, za dużo hałasu…”
Uwaga: Użyłem prawie całego kodu akellyirl, ale dodałem na górze tablicę rawData zawierającą zaszumione pomiary.
Poniżej znajdziesz cały kod w pliku o nazwie „unfiltered.ino”.
Krok 2: Rozwiązanie

Ponieważ dane wejściowe są zaszumione, ale znamy szukaną częstotliwość, możemy użyć stworzonego przeze mnie narzędzia o nazwie easyFIR, aby utworzyć filtr pasmowy i zastosować go do danych wejściowych, co skutkuje znacznie czystszym wejściem dla detektora częstotliwości (obrazek powyżej).
Krok 3: EasyFIR

Narzędzie easyFIR jest dość łatwe w użyciu, wystarczy pobrać repozytorium GitHub i uruchomić plik easyFIR.py z jedną próbką pomiarów (w formacie CSV).
Jeśli otworzysz plik easyFIR.py, znajdziesz 5 parametrów (patrz obrazek powyżej), które możesz i powinieneś zmienić w zależności od wyniku, który chcesz osiągnąć. Po dostosowaniu 5 parametrów i uruchomieniu pliku Pythona zobaczysz obliczone współczynniki w swoim terminalu. Te współczynniki są kluczowe dla następnego kroku!
Więcej informacji na temat dokładnego użycia można znaleźć tutaj:
Krok 4: Filtrowanie

Teraz, jeśli obliczyłeś potrzebne współczynniki filtra, dość łatwo jest zastosować właściwy filtr do detektora częstotliwości.
Jak widać na powyższym obrazku, wystarczy dodać współczynniki, funkcję applyFilter, a następnie przefiltrować pomiary wejściowe.
Poniżej znajdziesz cały kod w pliku o nazwie „filtered.ino”.
Uwaga: wielkie dzięki temu Stack Overflow Post za wspaniały algorytm aplikacji filtra!
Krok 5: Ciesz się

Jak widać, teraz jesteśmy w stanie wykryć sygnał 50Hz nawet w hałaśliwym otoczeniu ?
Zapraszam do dostosowania mojego pomysłu i kodu do swoich potrzeb. Byłbym bardzo wdzięczny za uwzględnienie twoich ulepszeń!
Jeśli podoba Ci się moja praca, będę bardzo wdzięczny za wsparcie mojej pracy z gwiazdą na GitHub!
Dziękuję za wsparcie!:)
Zalecana:
Filtrowanie treści internetowych za pomocą DNS: 10 kroków

Filtrowanie treści internetowych za pomocą DNS: Zaktualizowano 3 lutego 2021 r., aby uwzględnić dodatkowe informacje w krokach 8 i amp; 9. Powszechnie wiadomo, że w Internecie jest wiele treści, które nie są odpowiednie do oglądania przez dzieci. To, co nie jest tak powszechnie znane, to fakt, że y
Β Miernik w wersji II (bardziej stabilny i dokładny): 6 kroków

Β Miernik w wersji II (bardziej stabilny i dokładny): https://www.instructables.com/id/Beta-Meter/Miernik β w wersji I był cichy i dokładny, ale źródło prądu nie było stałe z napięciem wejściowym (Vcc). Wersja II β miernika jest dość stabilna, tzn. aktualna wartość nie zmienia się zbytnio wraz ze zmianą i
Jak zrobić wizualizator dźwięku częstotliwości dla kostiumu (Projekt Arduino): 8 kroków (ze zdjęciami)

Jak zrobić wizualizator dźwięku częstotliwości dla kostiumu (Projekt Arduino): W tym Instuctable przedstawię wskazówki, plany i kody, aby stworzyć ekscytujący wizualizator dźwięku wbudowany w kombinezon z pianki z włókna szklanego. Po drodze podzielę się pomocnymi krokami i dodatkowymi kodami, które niektórzy chcą zaimplementować biblioteki arduino FFT do
CheapGeek- Spraw, aby brzydki monitor był bardziej lub mniej brzydki : 5 kroków

CheapGeek - Zrób brzydki monitor mniej lub bardziej brzydki…: Brzydki stary monitor - stara puszka farby w sprayu i waa laa, mniej lub bardziej brzydki monitor. (w zależności od tego, jak na to patrzysz) Miałem zapasowy monitor, którego używałem do pracy z komputerem w domu. Monitor musiał być czarny. Plus wszystko co mam i tak jest czarne
Skonfiguruj filtrowanie treści internetowych w 4 krokach w Ubuntu: 5 kroków

Skonfiguruj filtrowanie treści internetowych w 4 krokach W Ubuntu: Jako informatyk, jedną z najczęstszych rzeczy, o które pytają mnie współpracownicy, jest to, jak mogą kontrolować, do których witryn ich dzieci mają dostęp online. Jest to bardzo łatwe i bezpłatne przy użyciu Ubuntu Linux, dansguardian i tinyproxy