2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Mən akellyirl -in DSP Texnikalarından istifadə edərək Etibarlı Tezlik Algılamağı öyrətməsinin həqiqətən böyük bir tərəfdarıyam, amma səs -küylü ölçüləriniz varsa bəzən istifadə etdiyi texnika kifayət qədər yaxşı olmur.
Tezlik detektoru üçün daha təmiz bir giriş əldə etmək üçün asan bir həll yolu, aşkar etmək istədiyiniz tezlik ətrafında bir növ filtr tətbiq etməkdir.
Təəssüf ki, rəqəmsal bir filtr yaratmaq asan deyil və bir çox riyaziyyat var. Buna görə də, bu cür filtrlərin yaradılmasını asanlaşdırmaq, hər kəsin öz detallarına girmədən öz layihələrində istifadə etməsinə icazə vermək üçün bir növ proqram yaratmaq barədə düşündüm.
Bu Təlimat kitabında, Arduino Uno ilə səs -küylü bir ölçüdə 50Hz sinus dalğası aşkar edəcəyəm (Arduino həqiqətən lazım deyil).
Addım 1: Problem
Ölçülmüş giriş məlumatlarının yuxarıdakı əyriyə bənzədiyini düşünün - olduqca səs -küylü.
Akellyirl's Instructable-dakı kimi sadə bir tezlik detektoru qursaq, nəticə "-inf" və ya aşağıdakı kod halında: "Bəli, çox səs-küy …"
Qeyd: Mən demək olar ki, bütün akellyirl kodlarını istifadə etdim, lakin səs -küylü ölçüləri ehtiva edən üst hissəyə rawData serialı əlavə etdim.
Aşağıda bütün kodu "unfiltered.ino" adlı bir faylda tapa bilərsiniz.
Addım 2: Həll
Giriş məlumatları səs -küylü olduğu üçün axtardığımız tezliyi bildiyimiz üçün bir Bandpass filtri yaratmaq və daxil olan məlumatlara tətbiq etmək üçün easyFIR adlı bir vasitədən istifadə edə bilərik ki, bu da tezlik detektoru üçün daha təmiz bir girişlə nəticələnər (yuxarıdakı şəkil).
Addım 3: EasyFIR
EasyFIR alətindən istifadə etmək olduqca asandır, sadəcə GitHub deposunu yükləyin və bir nümunənizlə (CSV formatında) easyFIR.py faylını işə salın.
EasyFIR.py faylını açarsanız, əldə etmək istədiyiniz nəticədən asılı olaraq dəyişə biləcəyiniz 5 parametr (yuxarıdakı şəklə bax) tapa bilərsiniz. 5 parametri düzəltdikdən və python faylını icra etdikdən sonra terminalınızda hesablanmış əmsalları görəcəksiniz. Bu əmsallar növbəti addım üçün çox vacibdir!
Tam istifadə haqqında daha çox məlumatı burada tapa bilərsiniz:
Addım 4: Filtrləmə
İndi lazım olan filtr əmsallarını hesablamısınızsa, həqiqi faylı tezlik detektoruna tətbiq etmək olduqca asandır.
Yuxarıdakı şəkildə gördüyünüz kimi, yalnız əmsalları, applyFilter funksiyasını əlavə etməli və sonra giriş ölçülərini süzməlisiniz.
Aşağıda bütün kodu "filtered.ino" adlı bir faylda tapa bilərsiniz.
Qeyd: Mükəmməl filtr tətbiqi alqoritmi üçün bu Stack Overflow Post sayəsində böyük təşəkkürlər!
Addım 5: Zövq alın
Gördüyünüz kimi, indi səs -küylü bir mühitdə belə 50Hz siqnalını aşkar edə bilirikmi?
Zəhmət olmasa fikrimi və kodumu ehtiyaclarınıza uyğunlaşdırmaqdan çekinmeyin. Təkmilləşdirmələrinizi daxil etməkdən çox məmnun olaram!
İşimi bəyənirsinizsə, GitHub -da ulduzla işimi dəstəkləsəniz çox şad olaram!
Dəstəyiniz üçün təşəkkürlər!:)