Donanımsal filtreden sonra bile bu kadar gürültü olması normal değil.
Eğer imkan varsa;
Yukarıdaki gibi diferansiyel ADC(stm32f30x vb. serilerinde var) ve diferansiyel low-pass filtreli bir devre kurun. Ayrıca LM4128 gibi bir gerilim referans entegresi ile ADC Vref girişine 2.5V ref. gerilimi uygulayın. Sistemi 2.5V referans gerilimine göre yeniden kurgulayın. Son olarak ADC Vss pinini diferansiyel filtenin GND'si üzerinden ana GND hattına bağlayın. Böylece common-mode gürültü büyük oranda bastırılmış olunur.
Eğer imkan yoksa, yani donanımsal müdahele çok sınırlı ise;
ADC girişine 1V bias uygulayın. Gerilim bölücü dirençleri öyle bir ayarlayın ki, ADC giriş gerilimi 0-2V arasında salınsın(evet çözünürlük düşecek). 3V üstünü ve 1V altını ya yazılımla ya da donanımla kırpın. Böylece o aradaki zıplamalar baştan elimine edilecek. Hesap daha tutarlı olur.
Yazılım tarafında ise CMSIS-DSP kütüphanesinin FIR Filter fonksiyonunu kullanabilirsiniz. Kütüphane hem float hem de 16bit ve 32bit fix-point veri tipleriyle kullanılabiliyor. Assembly tabanlı olduğu için hızlı da çalışıyor.
https://www.keil.com/pack/doc/CMSIS/DSP/html/group__FIR.html
Ben daha önce bu kütüphanenin bazı fonksiyonlarını denemiştim. Eğer mikro denetleyici FPU barındırmıyorsa float ile fixed-point arasında çok fazla hız farkı oluyor. Hatta kemdi çapımda bir benchmark yapmıştım. Ama sonuçları ne yaptım hatırlamıyorum. Onun haricinde FPU modülüne sahip mikro denetleyicilerde çok bir şey fark etmiyor.