ADC Dijital Filtre Nasıl yapılıyor?

Başlatan veliusta, 29 Haziran 2014, 04:23:11

veliusta

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.

muhittin_kaplan

Basiti
Ölç Ortalama Al.
İşlevseli
Kayar Noktalı

gumush

Hikmet Gumus  izmir

muhittin_kaplan

Konuyu epey konusmustuk ama bulamadim forumda

Yuunus

kalman vardı ama olçum stabil olmayınca anlamı kalmıyor en mantıklısı aktif filtre

FxDev

Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

veliusta

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?

Kabil ATICI

Son iki biti atmak da bir filtre işlemidir. Hassasiyet azaltmış olur ama sonucun kararlılığı artır.
ambar7

JOKERAS

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.



veliusta

@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.