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 (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.
https://www.youtube.com/watch?v=biY7F-tLwE8 (https://www.youtube.com/watch?v=biY7F-tLwE8)
Gurutluleri suzmek icin mean yerine median alinabilir. Her 10 ornegin medianini alip sonra cikan sonuclari ortalama filtreden gecirebilrisiniz.
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.
Ö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.
moving average kullan.
Çeşitli uygulamalarla biraz yavaşlattım. Şuanda fena değil. Ama yarın sabah farklı algoritmalar için tekrar bakayım
Pil voltajı ölçtüğünde salınım durumu nedir?
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
12 bit ister istemez çok oynak olur bunun için 128-256 derinlik hatta 1024 derinlikli MA kullan
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.
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.
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.
http://www.mcu-turkey.com/adc-kullanimi-uzerine/ (http://www.mcu-turkey.com/adc-kullanimi-uzerine/)
şöyle güzel bir yazı var konu hakkında
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.
şu tarz bir filitrede yapabilirsin sistemde maksimum yükselme anlık ne mesela 0'dan 100'e kadar yani delta 100 ama gelen birim 0'dan 2000 . Sistemde böyle bir yükselmeye imkan yoksa 2000'i ihmal et bu işlem ard arda 20 kez oluyorsa, 20.yi iptal etmez sistemi kontrol edersin gibi .
Moving Avarage güzel fakat sonuçların çok gecikmemesi için biraz daha akıllı ortalama alırsak güzel sonuçlar çıkabilir.
Netten baktım, borsacıların kullandığı Kaufman's Adaptive Moving Average (KAMA) var imiş...
"Making a moving average responsive to volatility changes results in a dynamic, more accurate indicator."
(http://d.stockcharts.com/school/data/media/chart_school/technical_indicators_and_overlays/kaufman_s_adaptive_moving_average/kama-1-qqqexam.png)
Hocam macd, smwma,sma,lwma hepsi temelinde ma mevcut. Forex le alakali mt4 programlamada epeyce kullandim.
$1 daha verip adam gibi bir giriş katı yapsanız daha iyi olmaz mı ?
CPU time'mınıza yazık