Yazılımsal ADC filtreme algoritması hakkında

Başlatan Mucit23, 19 Ekim 2015, 13:54:53

Mucit23

Selamlar.

Aşağıdaki konuda basınç sensörleri üzerinde çalışma yapıyordum. https://www.picproje.org/index.php/topic,58614.msg477195/topicseen.html#msg477195

Sensörden gelen bilgileri ADC'ye giriyorum. Amacım ADC'de 100ms aralıklarla yeni değerler elde etmek.

Ham ADC değerlerini sağlam bir filtreden geçirmek gerekiyor. Çünkü ADC den okunan 12 bitlik ham veri çok değişken. Gelen sinyal çok gürültülü yani 
0-4096 arası aldığım dijital değerin onlar hanesini bile takip etmekte zorlanıyorum.

Benim amacım 100ms aralıklarla yeni veri elde etmek. Bu 100ms içerisinde olabildiğince çok örnek alıp filtreleme algoritmasına sokmam lazım.
Şimdilik STM32'de timer ile ADC'yi 10Khz'de tetikledim. ADC işini bitirdiğinde DMA TC interrupt ile veriyi alıyorum. Saniyede 10000 yeni  örnek geliyor DMA'dan .Bende her 1000 örneği alıp aritmetik ortalamasını alıyorum.

Fakat bu filtreleme çeşidinden memnun değilim. 1000 defa örnek alıp ortalama almak ile 100 defa örnek alıp ortalama almak arasında pek fazla değişen birşey görmüyorum. Arada farklı bir filtreleme algoritması uygulamam gerekir. Bunun için ne önerirsiniz.


vsalma

Gurutluleri suzmek icin mean yerine median alinabilir. Her 10 ornegin medianini alip sonra cikan sonuclari ortalama filtreden gecirebilrisiniz.

ahmet_zxc

basınçla ilgili konunu da takip ediyorum. benim düşüncem senin problemin adc yada filtrede yada baskıdevrede değil. beslemede.

beslemeyi hassas ve stabil yapmaya çalış. 5.000v üretmeye bak. yada 3,3000 gibi.

alicavuslu

Öncelikle alçak geçiren süzgeç kullanıp daha sonra aşağı örnekleme işlemi yapmanız gerekmektedir. Ki bu şekilde örnekleme frekansınızıda istediğiniz aralığa çekebilirsiniz.

muhittin_kaplan


Mucit23

Çeşitli uygulamalarla biraz yavaşlattım. Şuanda fena değil. Ama yarın sabah farklı algoritmalar için tekrar bakayım

engerex

Pil voltajı ölçtüğünde salınım durumu nedir?

Okan AKÇA

Besleme, adc nin tipi sensor çıkış dalgalanmasi gibi bircok etken  buna neden olabilir en basit filitre adc 1 veya 2 birim buna siz karar verin fazla olmadıkça gelen bilgiyi işleme almayın zaten  fazla bir dalgalanma oluyorsa farkli nedenlerden kaynaklanmaktadır

muhittin_kaplan

12 bit ister istemez çok oynak olur bunun için 128-256 derinlik hatta 1024 derinlikli MA kullan

z

Peki ADC ile saniyede 20 bin örnek alıyoruz ve incelemeye aldığımız sinyal 10kHz.

Gürültüden analog tarafta kurtulamıyoruz çünkü sensör çıkışı gürültülü. Ama sensorde sorun yok çünkü ölçtüğümüz büyüklük gürültülü.

Ne yapacağız da gürültünün etkisini en aza indireceğiz?  Sample sayısını artıramıyoruz varsayın.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kartal0689

Arkadaşlar bunun için DSP işlemcileri var. Ben hiç uygulamasını yapmadım fakat dsPIC serisi işlemci kullandığım için datasheet lerinde okuyordum. Digital Signal Processing bence bu konu size yardım edebilir.

esensoy

Mesela alınan örnekle bir önceki örneğin farkını alıp 0 < x < 1 gibi bir x ile çarpıp bir önceki örnek e eklesek işe yarar mı? P kontrole benzer bir algoritma yani,

Alıntı yapılan: z - 20 Ekim 2015, 07:48:46
Peki ADC ile saniyede 20 bin örnek alıyoruz ve incelemeye aldığımız sinyal 10kHz.

Gürültüden analog tarafta kurtulamıyoruz çünkü sensör çıkışı gürültülü. Ama sensorde sorun yok çünkü ölçtüğümüz büyüklük gürültülü.

Ne yapacağız da gürültünün etkisini en aza indireceğiz?  Sample sayısını artıramıyoruz varsayın.



En tehlikeli an "zafer" anıdır.

bluekid


iyildirim

Alıntı yapılan: z - 20 Ekim 2015, 07:48:46
Peki ADC ile saniyede 20 bin örnek alıyoruz ve incelemeye aldığımız sinyal 10kHz.

Gürültüden analog tarafta kurtulamıyoruz çünkü sensör çıkışı gürültülü. Ama sensorde sorun yok çünkü ölçtüğümüz büyüklük gürültülü.

Ne yapacağız da gürültünün etkisini en aza indireceğiz?  Sample sayısını artıramıyoruz varsayın.

Üçkağıtçı skopların yaptığını yapıp, 20Khz ADC ile 100-200 Ksps e çıkabiliriz.