I2C filtreleme

Başlatan kriptolojix, 16 Aralık 2013, 17:01:25

kriptolojix

Merhabalar ,
I2C hattına bağlı olan sensörden okuduğum değerler , (sistem ve tüm koşullar sabitken) fiziksel hiç bir şey değişmezken , okuduğum değerler sürekli 1.50 ,1.65 , 1.63 , 1.70 , 1.90 gibi değişmektedir.

Bu problemi benim nasıl çözmem gerekir ?

Benim aklıma en ilk gelen filtreleme ama bu I2C hattını nasıl filtreleyebiliriz...
Sonuçta sayısal bir haberleşme hattı...

yamak

Hocam hattı filtremeyeceksin.Alınan değerleri yazılımsal bir FIR filtreden geçirebilirsin.

gumush

Sensor nedir ? Eger digital bir sensor ise alinan bilgileri filtrelemek mantikli , eger sensor analog bir araci ile digital'e cevrilip i2c ile gonderiliyor ise o zaman o asamada da bir filtreleme olabilir.
Hikmet Gumus  izmir

kriptolojix

ivme sensörü...

Alıntı yapılan: yamak - 16 Aralık 2013, 17:06:27
Hocam hattı filtremeyeceksin.Alınan değerleri yazılımsal bir FIR filtreden geçirebilirsin.

Hocam hat filtre edilmiyor değil mi ? doğru anladım yani..Bir alçak geçiren için RC yok yani..

Peki hocam nasıl FIR ile kodu mikrodenetleyiciye gireceğim..Nasıl olacak ?
Yada bu işi yapan entegreler var mi acaba ?

skara1214

Alıntı yapılan: kriptolojix - 16 Aralık 2013, 18:32:42
ivme sensörü...

Hocam hat filtre edilmiyor değil mi ? doğru anladım yani..Bir alçak geçiren için RC yok yani..

Peki hocam nasıl FIR ile kodu mikrodenetleyiciye gireceğim..Nasıl olacak ?
Yada bu işi yapan entegreler var mi acaba ?
sen datayı digital alıyorsun  hatta filtreleme ile alakası yok ;eğer bir değer 1 diğer değer 25 gibi saçma bir rakam olsaydı o zaman tamam digital sinyale gürültü giriyor derdik ama su anda bence alakası yok 10 örnek al topla 10 a böl sonuç düzelir
Herkes ölür ama herkes gerçekten yaşamaz

engerex

Sensörün modeli nedir?

muhittin_kaplan

Degerler Normal.
Sayısal Bir Filtre/Ortalama Algoritması Yapman Gerek.

Kalman-complementary filter- Kayan Noktalı Ortalama gibi

Kabil ATICI

Bu değer değişimi bir nedene bağlı olabilir. Test ortamın apartmanda bulunması (rüzgarlı havalarda), çevrede tren yolu bulunması, yakında hafriyat yapılması, belki kalorifet sistemi, hatta binada devrenin yakınında yürümesi gibi nedenlerle değerin değişimi olabilir. (bulunduğun ortamda hava akımı olması bile devrenin üzerinde etki edebilir).

Sensör beslemesi yakınına kondansatör eklenebilir. Muhtemelen işlemci devren ile sensör aynı regületörden besleme alıyorsun. En azından beslemeleri ayrılabilir (deneme için). Hatta pil gibi alternatif güç kaynakları denenebilir.
(aletin hassasiyet ayarı ile ilgili birşeyler olabilir)
ambar7

muhittin_kaplan

Hocam O kadar ivme değişimi normal.

kriptolojix

#9
Alıntı yapılan: engerex - 16 Aralık 2013, 20:34:01
Sensörün modeli nedir?

ADXL345  sensör modelim hocam..

Hocam devre hazır modül olan bir devre , çinden getirtmiştim..



Hocam ivme değerleri bunlar..Ama hiç bir şekilde dışarıdan fiziksel bir etken yok..Hocam bazen öyle oluyor ki , 1 derece fark olabiliyor..



mesaj birleştirme:: 17 Aralık 2013, 00:35:45

Alıntı yapılan: muhittin_kaplan - 16 Aralık 2013, 21:46:37
Degerler Normal.
Sayısal Bir Filtre/Ortalama Algoritması Yapman Gerek.

Kalman-complementary filter- Kayan Noktalı Ortalama gibi

Hocam ortalama algoritması yanlış bir sonuç vermez mi ? şimdi bu sensörün 0 derecede olduğunu düşündüğümüzde , +-1 derecede saparsa eğer ;  359 ile 1 derece arasındaki değerleri alacak demektir..Bunun ortalaması yaklaşık 180 dereceye eşit olacak , gerçek 0 derece olan değerden çok farklı çıkmaz mı hocam ? ben mi yanlış düşünüyorum acaba hocam  :(

Kabil ATICI

Pardon biz hangi sensör ile konuşuyoruz, daha doğrusu hangi ölçüm ile.
Sensörün ivme olduğu söyleniyor, ama belirtilen değerler pusula gibi açısal değerler.

Şimdi bu sensör doğrusal ivmeyi mi ölçüyor, yoksa açısal ivmeyi mi?

Şimdi modül içinde (manyetik alan ile çalışan) pusula vardı da onu konuşuyorsak o zaten başlı başına bir derttir.
ambar7

berat23

bence bu açı değerleri gayet normal, bu kadar gürültü olabilir. istersen ortalama alabilirsin.

yamak

Alıntı yapılan: kriptolojix - 17 Aralık 2013, 00:27:51
ADXL345  sensör modelim hocam..

Hocam devre hazır modül olan bir devre , çinden getirtmiştim..

(Resim gizlendi görmek için tıklayın.)

Hocam ivme değerleri bunlar..Ama hiç bir şekilde dışarıdan fiziksel bir etken yok..Hocam bazen öyle oluyor ki , 1 derece fark olabiliyor..



mesaj birleştirme:: 17 Aralık 2013, 00:35:45

Hocam ortalama algoritması yanlış bir sonuç vermez mi ? şimdi bu sensörün 0 derecede olduğunu düşündüğümüzde , +-1 derecede saparsa eğer ;  359 ile 1 derece arasındaki değerleri alacak demektir..Bunun ortalaması yaklaşık 180 dereceye eşit olacak , gerçek 0 derece olan değerden çok farklı çıkmaz mı hocam ? ben mi yanlış düşünüyorum acaba hocam  :(
Hocam sen buna gürültü mü diyosun.Bence cillop gibi değerler.Sen hiç ses çıkarma.Böyle devam et :)

kriptolojix

Alıntı yapılan: yamak - 17 Aralık 2013, 10:16:07
Hocam sen buna gürültü mü diyosun.Bence cillop gibi değerler.Sen hiç ses çıkarma.Böyle devam et :)

Eyvallah hocam madem doğru sonuçlar hiç elleşmeyeyim..
Herkese yardımlarından dolayı çok çok tşk ederim..

elektronart

Alıntı yapılan: kriptolojix - 17 Aralık 2013, 00:27:51
Hocam ortalama algoritması yanlış bir sonuç vermez mi ? şimdi bu sensörün 0 derecede olduğunu düşündüğümüzde , +-1 derecede saparsa eğer ;  359 ile 1 derece arasındaki değerleri alacak demektir..Bunun ortalaması yaklaşık 180 dereceye eşit olacak , gerçek 0 derece olan değerden çok farklı çıkmaz mı hocam ? ben mi yanlış düşünüyorum acaba hocam  :(
Eğer algoritmayı aldığınız değerleri toplayıp bölerek alırsanız tabiki yanlış sonuçlar verir. Filtrelemeyi 2 şekilde yapabilirsin.
1- Belli bir zaman aralığı için ortalama bir değeri baz alıp sonraki örneklere bakarak eğer aradaki fark belirli bir toleransın altındaysa ihmal edebilirsin toleransın üstündeyse güncellersin. Senin örneğinde diyelim tolerans 2 olsun 0 dan sonra 1 ve 359 geleceği düşünülürse 0 ve 2 aralığındaki değerler için özel bir if karşılaştırması yazmak gerekir.
2- Uygulamaya göre bir buffer oluşturur ve gelen tüm örnekleri bu buffera atarsın. Buffer dolduğunda yeni örnek geldikçe en eski örneğin üzerine yazılır. Sonra da bu bufferın ortalamasını alırsın. Bu yöntem sıcaklık ölçümünde iyi sonuç verir ivme için test edip görebilirsin.
Kolay gelsin.
Açık Elektronik