İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Akelliirl'in DSP Tekniklerini Kullanarak Güvenilir Frekans Tespiti hakkındaki talimatlarının gerçekten büyük bir hayranıyım, ancak bazen kullandığı teknik, gürültülü ölçümleriniz varsa yeterince iyi değildir.
Frekans dedektörü için daha temiz bir girdi elde etmek için kolay bir çözüm, algılamak istediğiniz frekansın etrafına bir tür filtre uygulamaktır.
Ne yazık ki, bir dijital filtre oluşturmak kolay değil ve işin içinde oldukça fazla matematik var. Bu yüzden, bu tür filtrelerin oluşturulmasını basitleştirmek için, herhangi birinin projelerinde ayrıntılara girmeden kullanmasına izin vermek için bir tür program oluşturmayı düşündüm.
Bu Eğitilebilir Kitapta, bir Arduino Uno ile gürültülü bir ölçümde 50Hz'lik bir sinüs dalgası tespit edeceğim (Arduino gerçekten gerekli değil).
Adım 1: Sorun
Ölçülen girdi verilerinin yukarıdaki eğriye benzediğini hayal edin - oldukça gürültülü.
Akelliirl'in Instructable'ındaki gibi basit bir frekans detektörü oluşturursak, sonuç "-inf" veya aşağıdaki kod durumunda: "Evet, çok fazla gürültü …"
Not: Akellyirl'in kodunun hemen hemen tamamını kullandım ancak en üste gürültülü ölçümleri içeren bir rawData dizisi ekledim.
Aşağıda tüm kodu "unfiltered.ino" adlı bir dosyada bulabilirsiniz.
2. Adım: Çözüm
Giriş verileri gürültülü olduğundan ancak aradığımız frekansı bildiğimiz için, bir Bandpass filtresi oluşturmak ve bunu giriş verilerine uygulamak için easyFIR adlı oluşturduğum bir araç kullanabiliriz ve bu da frekans dedektörü için çok daha temiz bir girişle sonuçlanır (yukarıdaki resim).
Adım 3: EasyFIR
easyFIR aracının kullanımı oldukça kolaydır, sadece GitHub deposunu indirin ve ölçümlerinizin bir örneğiyle (CSV formatında) easyFIR.py dosyasını çalıştırın.
easyFIR.py dosyasını açarsanız, elde etmek istediğiniz sonuca bağlı olarak değiştirebileceğiniz ve değiştirmeniz gereken 5 parametre (yukarıdaki resme bakın) bulacaksınız. 5 parametreyi değiştirdikten ve python dosyasını çalıştırdıktan sonra, terminalinizde hesaplanan katsayıları göreceksiniz. Bu katsayılar bir sonraki adım için çok önemlidir!
Kesin kullanım hakkında daha fazla bilgiyi burada bulabilirsiniz:
4. Adım: Filtreleme
Şimdi, gerekli filtre katsayılarını hesapladıysanız, gerçek filtreyi frekans dedektörüne uygulamak oldukça kolaydır.
Yukarıdaki resimde de görebileceğiniz gibi, sadece katsayıları, applicationFilter işlevini eklemeniz ve ardından giriş ölçümlerini filtrelemeniz yeterlidir.
Aşağıda tüm kodu "filtered.ino" adlı bir dosyada bulabilirsiniz.
Not: Harika filtre uygulama algoritması için bu Yığın Taşması Postasına çok teşekkürler!
Adım 5: Keyfini çıkarın
Gördüğünüz gibi artık gürültülü bir ortamda bile 50Hz sinyali algılayabiliyor muyuz?
Lütfen fikrimi ve kodumu ihtiyaçlarınıza uyarlamaktan çekinmeyin. Geliştirmelerinizi eklemekten çok memnun olurum!
Çalışmamı beğendiyseniz, çalışmamı GitHub'da star ile desteklerseniz gerçekten minnettar olurum!
Desteğin için teşekkürler!:)