Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: veliusta - 29 Haziran 2014, 04:23:11

Başlık: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: veliusta - 29 Haziran 2014, 04:23:11
int sensorValue;

void setup() {
  Serial.begin(9600);
}

void loop(){
  sensorValue = analogRead(A0);
  delay(1);
  Serial.println(sensorValue);
}


Potansiyometreden okunan değerler sabit kalmıyor. 250 ise 249- 250-251 olarak okuduğu oluyor.

ÖRNEK: İlk okunan değer X
İkinci okunan değer X-1 || X || X+1  ise
X yaz.
Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: muhittin_kaplan - 29 Haziran 2014, 04:26:08
Basiti
Ölç Ortalama Al.
İşlevseli
Kayar Noktalı
Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: gumush - 29 Haziran 2014, 09:21:20
Kayarnoktali icin hazir bir kutuphanede vardi.

http://playground.arduino.cc/Main/RunningAverage (http://playground.arduino.cc/Main/RunningAverage)

Ortalama icin

http://arduino.cc/en/Tutorial/Smoothing (http://arduino.cc/en/Tutorial/Smoothing)
Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: muhittin_kaplan - 29 Haziran 2014, 16:02:11
Konuyu epey konusmustuk ama bulamadim forumda
Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: Yuunus - 29 Haziran 2014, 17:57:49
kalman vardı ama olçum stabil olmayınca anlamı kalmıyor en mantıklısı aktif filtre
Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: FxDev - 29 Haziran 2014, 18:32:06
Zamanında böyle bir çalışma yapmıştım belki iş görür.

https://320volt.com/smoothing-algorithms-yumusatma-algoritmalari/ (https://320volt.com/smoothing-algorithms-yumusatma-algoritmalari/)
Başlık: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: veliusta - 25 Ağustos 2014, 09:43:17
int ANALOG_DEGER = 0;
int  GECMiS_ANALOG_DEGER= 256;

void setup(){
  Serial.begin(9600);
}

void loop(){
  int ANALOG_DEGER = analogRead(A0)/4;
  if((ANALOG_DEGER-GECMiS_ANALOG_DEGER)>1 || (ANALOG_DEGER-GECMiS_ANALOG_DEGER)<-1){
    if(ANALOG_DEGER != GECMiS_ANALOG_DEGER){
      Serial.println(ANALOG_DEGER);
      GECMiS_ANALOG_DEGER = ANALOG_DEGER;
  }
}
}


Yapmayı başardım. Kolay olsun diye 8Bit ile yaptım.
Tek isteğim;
ANALOG_DEGER 254 ise 255 olarak yaz.
ANALOG_DEGER 1 ise 0 yaz.  (Potansiyometrenin Köklendiğini görmek için..)

Ben ifler ile yaptım ama iki kez yazıyordu. Bu basit işlemi nasıl yaparım?
Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: Kabil ATICI - 25 Ağustos 2014, 10:17:25
Son iki biti atmak da bir filtre işlemidir. Hassasiyet azaltmış olur ama sonucun kararlılığı artır.
Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: JOKERAS - 25 Ağustos 2014, 13:04:00
Selam,
Devrenizi bilmiyorum ama yaptığıız yöntem bence yanlış!
Siz burada +1, -1'lik bir tölerans vermişsiniz,hassasiyetiniz +-1.

ADC portunda 100nf varmı?
MCU beslemesi temizmi?
ADC conversion ayarları ne durumda?
ADC conversion işleminden sonra gecikme koyup denedizmi?

İlk ADC çevrimi bitmeden ikinci çevrime geçebilir,çevrim kararı bozulur.
ADC çevrim hızı çok yüksek ise buda çevrim kararını bozabilir.


Başlık: Ynt: ADC Dijital Filtre Nasıl yapılıyor?
Gönderen: veliusta - 25 Ağustos 2014, 13:25:55
@JOKERAS Selam.
Bence benim yaptığım yöntem doğru.

100nF koysamda fark etmiyordu. Daha önceleri denemiştim. (PIC ile)
MCU Beslemesi PC USB'si.
ADC Conversion ne bilmiyorum. Arduino kullanıyorum.

ADC için 10K Pot. kullanıyorum.