Çok hızlı değişen değerleri display'de gösterme

senoleker

Üye
Katılım
5 Ekim 2025
Mesajlar
12
Birkaç konu okudum ve bir eksik gözüme çarptı. Örneğin bir ADC ölçüyorsunuz, çok hızlı değişiyor. Ekrana bunu yazdığınızda okunmuyor. Bu durumda ne yapacağız?
Bu yerlerde kullanılabilecek en iyi çözüm, "complementary filter" dir. (Tamamlayıcı filtre diye tercüme edilebilir)
Gürültülü sensörlerden alınan verileri çoğu durumda (tahmin için güzel bir model yoksa) Kalman filtresi kadar temiz düzeltir.

Üstelik uygulanması çok basittir:

Önce tanımlarımızı yaparız.
Kod:
float gain=0.2 ; //Bu sayı, ne kadar filtreleyeceğini belirtir. 0 ile 1 arasında bir sayı olabilir.
int displayValue=ReadSonsor(); // ilk kez sensör okumasını böyle yapıyoruz. Size zor gelirse 0 da verebilirsiniz. Bu durumda ilk başta kısa bir süre hatalı değer gösterir. Değer mesela 5 olacaksa sıfırdan başlar ve artarak 5'e gelir.
Sonra ana döngüde okuma ve yazma işlemini yaparız:
Kod:
displayValue=ReadSensor*gain+displayValue*(1-gain);
printf displayValue;
Hepsi bu kadar. gain'i 0.001 ya da 0.1 ya da ne bileyim 0.8 yapabilirsiniz. 0 olursa sensör okumaz. 1 olursa doğrudan yazdırıyormuş gibi olur. İkisinin arasında bir değer vererek istediğiniz sonucu alabilirsiniz.

Bunu kullandığınızda okumalar arasında kesinlikle bekleme yapmayın. Tersine, olabildiğince hızlı okuyun. Ekrandaki sakinliği gain'i değiştirerek ayarlayın.
 
Amaç gürültü filtrelemek ise bir FIR filtre daha iyi bir sonuç verir. Sen burada Kalman filtreden bahsettiğine göre asıl amacın gürültü filtrelemekten daha ziyade bir sonra ölçüm için bir öngörüde bulunmak mıdır?
 
Amaç gürültü filtrelemek ise bir FIR filtre daha iyi bir sonuç verir. Sen burada Kalman filtreden bahsettiğine göre asıl amacın gürültü filtrelemekten daha ziyade bir sonra ölçüm için bir öngörüde bulunmak mıdır?
"Tahmin için güzel bir model yoksa" dedim hocam. Biraz acele ettim yazarken sanırım; Complementary filtre, sensör füzyonunda kullanılabiliyor ve özellikle ivmeölçer+gyro füzyonunda sistemin düzgün bir modeli yoksa Kalman kadar güzel çalışıyor. Ancak kod gördüğünüz gibi neredeyse "kod yok" denecek kadar basit.

Ama bunun bir kullanım şekli de IIR oluyor. Burada iki sensör yerine kendini geribesleme olarak veriyoruz. Elde geçmiş verileri tutmuyoruz, Kod neredeyse yok. Test ederseniz, bu kadarcık kod için son derece başarılı olduğunu görebilirsiniz. Tabii gain değeri, döngü hızına bağlı olarak ayarlanmalı.
 
Aslında denklem itibarı ile birinci derece IIR filtre gibi oluyor. IIR filtreler daha az işlemci kaynağı kullanımı ile belli bir fifltreleme perfformansı sağlıyor, ama faz tepkisi FIR gibi lineer olmuyor. Bu da efektif olarak giriş sinyalini sanki sabit olmayan örnekleme aralıkları ile örneklenmesine sebep olur. .Eğer AC bir sinyali minimum bozulma ile örneklemek istersen IIR uygun bir çözüm olmaz.

Bir de daha yüksek dereceli IIR filtre tasarımı kullanılrsa, her durumda stabil olacak şekilde doğru tasarımın yapılması gerekiyor, halbuki FIR filtreler, bütün katsayı değerleri için stabil oluyor. Tek dezavantajları, daha fazla işlem gücü gerekiiyor ve belli bir perfformans için daha yüksek derece olması gerektiğinden gecikme daha fazla oluyor.
 

Forum istatistikleri

Konular
8,669
Mesajlar
141,628
Üyeler
3,466
Son üye
nurullah koç

Son kaynaklar

Son profil mesajları

Abdullah karaoglan falcon_browning Abdullah karaoglan wrote on falcon_browning's profile.
selamın aleyküm ses sistemindeki cızırtıyı hallettınızmi
"Araştırma, ne yaptığını bilmediğinde yaptığın şeydir." - Wernher von Braun
“Kendi yolunu çizen kişi, kimsenin izinden gitmez.” – Nietzsche
Kim İslâm’da güzel bir çığır açarsa (güzel bir alışkanlık başlatırsa), onun sevabı ve kendisinden sonra ona uyanların sevapları, onların sevaplarından hiçbir şey eksilmeksizin ona da yazılır.
erdemtr55 taydin erdemtr55 wrote on taydin's profile.
Merhaba Taydin bey,
Gruba spms serisi yapıcak mısınız?
ben 3 sargılı toroid ile 2 adet flyback sürücek bir devre yapmayı düşünüyorum.size soracak sorularım vardı?
Back
Top