Dijital Filtre

Başlatan Erol YILMAZ, 17 Eylül 2005, 00:18:37

Erol YILMAZ

Artik almaya biktigim DSP dersini ogrenmeye basladim :)
Hocasi bile ne is yaptigini bilmiyor dersi. Mana vermeye calisirken
IIR filtrenin aslinda ise yarar birsey oldugunu farkettim.
Gereksiz değilmis.

Mesela cogu arkadas (oncelikle ben :) ) ADC ile yaptiklari okumalarda 10 biti hakkiyla kullanamamaktan sikayetci... PCB den falan bahsetmeyecegim. Sadece yazilim olarak bir filtre yapamazmiyiz? gibi bir soru takiliyordu kafama. onun accik cevabini buldum ve gayet mantikli geldi... Yazilimla ne yapmak istiyoruz. Zirt Pirt degismeyen sonuc.

Alıntı Yap===== Low Pass Filter =====

Out0 = new output
Out1 = last ouput
Out2 = next to last output, etc

In0 = newest (current) input
In1 = last input, etc

a, b, c etc, are constants


A really simple low pass filter that approximates a single pole (R-C) analog filter:

Out0 = a * In0 + b * Out1
where a + b = 1.0 (a and b are fractions > 0 and < 1)

This is an IIR filter since it uses past outputs. Basically it averages the new input with last output. The smaller the 'a' term is, the slower the response of the filter. If you use constants divisible by a power of two it is a very fast calculation. A good starting point is to set a = 1/4 and b = 3/4:

Out0 = (In0 + Out1 + Out1 + Out1) / 4;

umarim yardimci olmuştur. Hatta 10 bit ADC den 12 bit gibi sonuc alma falan da var ama :)  Neyse DSP yi uyguladik, Gururluyuz !

CaFFeiNe

Alıntı YapOut0 = (In0 + Out1 + Out1 + Out1) / 4;

bu satır bana sanki 4 kez oku topla 4 e böl gibi geldi, yani bizim ADC zıplamasını engellemek için yaptığımız olaya benziyor :) (40-50 kez oku ortalamasını al gibi) yoksa biz DSP biliyormuşuzda haberimizmi yokmuş yada bu DSP dedikleri şey bizim mantığımızla yaptıklarımızın/çözdüklerimizin bir toplamı mı? (bunlar espri amacı ile yazılmıştır:))

Erol YILMAZ

@Caffeine;
Espri dedigin seyleri 0.7 espri katsayisi, 0.3 gercek katsayisi ile carpar ve sonuclari toplarsak daha mantikli bir sonuc cikartabiliriz. eskiler ne demis?
"Her espride bir gercek payi vardir" diye, aslinda onlar DSP yi biliyorlarmiydi? :)

Fakat bu sadece sonuc, Farkindaysan simdiki girise ve onceki cikisa bir katsayi verilmis. Bu katsayilar Low Pass filtre icin kesim frekansini belirliyor... heralde :roll:

40-50 kez oku ortalamasini al demek FIR filtreye denk dusuyor... :)
Alıntı Yap===== Averaging Filter =====

A simple FIR filter. This takes the average of several inputs to produce the output. In theory you would need past and future inputs but you can't, so you get a fixed time lag in this filter of half the number of samples used.

Again, if you use a power-of-two number of samples, the calculations are faster:

Out0 = (In0 + In1 + In2 + In3) / 4;

You will find you will probably need more than just four samples to get much filtering. You can also shape the filter by multiplying each input by different coefficents, but it complicates the calculations and can introduce worse truncation and/or overflow problems.

Hatta demis ki, okuma sayini 2 nin kuvveti seklinde yaparsan bolme islemin daha hizli olur.  40-50 kere değil 32-64 kere okut.

Saygilar...

ahmetu


CaFFeiNe

hımm açıkçası benim şundan anladığım (ben öğrenciyken DSP dersleri yoktu hatta mikroişlemci dersinde 6502 gösteriyorlardı:))

Out0 = (In0 + Out1 + Out1 + Out1) / 4

örneğin ADC den bir değer okuduk mesela 100 (Out1) bir sonraki okumada 110 okuduk diyelim (In0) (tabiiki giriş sinyali sabit biz ADC deki zıplamadan dolayı 100 daha sonrada 110 okuduk) şimdi formüle göre;

Out0 = (110+100+100+100)/4
Out0 = 102.5 oldu

yani 110 değilde 102.5 hatayı küçülttük oranı 3/4 değilde 9/10 seçseydik sonuç 101 olacaktı yani oran büyüdükçe hata payı küçülecekti doğrumudur?
anladığım kadarıyla dijital sinyal işleme adı üstünde sinyali okuyup dijital olarak işlemek demek tabiiki bunu yapabilmek içinde kesirli sayılarla işlem yapabilmek gerek dolayısıyla normal bir PIC tede sinyali okuyup yukarıdaki gibi formüller uygularsan dijital sinyal işleme yapmış oluyorsun bir nevi kaplumbağa hızında dsPIC in oluyo Microchip te bunu farkettiğinden kesirli sayılarla işlem yapabilmek için PIC in donanımını geliştirip (bissürü W registeri, büyük akümülatörler, çarpma bölme üniteleri vs ekleyip) program yükünü donanıma aktararak dsPIC denen şeyleri yapmış güzel...

Erol YILMAZ

Valla isin donanim kismi yani topla cikart carp bol kismi basit ama o isi oraya getirinceye kadar asil is. Biz sinavda bir filtre tasarlariz yarim saatimizi alir. DSP onu saniye de 50 bin kere yapar, orasi ayri konu. Onemli olan nasil yaptiracagini, ne yaptiracagini kavrayabilmek...

Mesela sen diyorsun ki,
Surekli 100 cikis veriyorduk, Surekli 110 a gectik, Sonuc ne olur?
Katsayilarimiz da belli, Gecmis icin 3/4, simdiki icin 1/4...

Out0 = (In0 + Out1 + Out1 + Out1) / 4;

Out0 = (110+3x100 )/4        = 102.5
Out0 = (110+3x102.5 )/4      = 104.375
Out0 = (110+3x104.375 )/4  = 105.78
Out0 = (110+3x105.78 )/4    = 106.84
Out0 = (110+3x106.84 )/4    = 107.63
Out0 = (110+3x107.63 )/4    = 108.22
Out0 = (110+3x108.22 )/4    = 108.67
Out0 = (110+3x108.67 )/4    = 109.00
Out0 = (110+3x109.00 )/4    = 109.25
Out0 = (110+3x109.25 )/4    = 109.44
Out0 = (110+3x109.44 )/4    = 109.58
...

Katsayiyi degistirelim. Mesela yari yariya olsun...

Out0 = (In0 + Out1 + Out1 + Out1) / 4;

Out0 = (2x110+2x100 )/4       = 105
Out0 = (2x110+2x105 )/4       = 107.5
Out0 = (2x110+2x107.5 )/4    = 108.75
Out0 = (2x110+2x108.75 )/4    = 109.38
Out0 = (2x110+2x109.38 )/4    = 109.69

5 cikis sonra girisi bulduk. Diger katsayilarla 11 cikis yapmamiz gerekti.
Benim bi tane voltmetre-ampermetre var. Onda deneyim sonucu gormek icin...

Bu fotograflari buyuturken siyah ile beyaz arasina gri tonlamalari koymaya da benziyor aslinda...

Bu arada ortalama almaktan baya farkli... Ortalama sadece o periyottaki sinyallere bakiyor. Bu onceki cikislari  hesaba katiyor...

JohnF

Sayısal filtreler dersini almış ve büyük hayal kırıklığına uğramıştım uygulama yapma fırsatı bulamayınca :(. İstedğiniz tipteki filtreyi belirleyip transfer fonksiyonunu bulup bunu bir takım işlemlerle fiziksel (ve sayısal olarak tabii) olarak gerçekleştirmektir amaç olan. Zaten işi yazılıma kadar getirdiyseniz arkadaşların açıkladığı gibi topla çarptan başka bir işlem yok. Tabii iş DSP olayına gelince sadece filtre tasarlamak veya ses işlemek akla gelmemeli. Her türlü sinyal (video gibi) işlenebilir. Ayrıca hızlı veri işleyebilen lojik sistemler lazım. dsPIC biraz amatörce kaçıyor. Analog Devices' ın Tiger, Shark gibi 3 W güç ile P4 1.5 GHz işlemciden daha hızı kayan nokta hesabı yapabildiğini biliyor muydunuz :). Konu temel olarak sayısal işaret işlemeye dayanıyor, ayrık zamanlı sistemler, örnekleme teoremi, ayrık fourier dönüşümü, hızlı fourier  vs...

xenix

Sizce elektronik son sınıf öğrencisi olarak DSP dersi almalımıyım? Sorun şu, genel olarak sinyal derslerinden notlarım çok kötü geldi, DSP de resmen bu derslerin devamı, ama bana ne kadar çok şey katacağının da farkındayım. Bazen de düşünüyorum, derslerde sınav telaşı yüzünden pek bişey öğrenilmiyor, onun yerine ahmetu'nun gönderdiği gibi bir ders notundan mı öğrenmeli...

ahmetu

En iyisi dersi almak en azından konu başlıkları insanın kulağına bir yer eder ama sınavlarına da bir şekilde girmemek  :lol:  yani not ortalamasını etkilemeyecek şekilde dersi görmek, ben hiçbir zaman böyle şeyleri ezberlemem lazım olunca notlardan arar bulurum.

Erol YILMAZ

Alıntı yapılan: "xenix"Sizce elektronik son sınıf öğrencisi olarak DSP dersi almalımıyım? Sorun şu, genel olarak sinyal derslerinden notlarım çok kötü geldi, DSP de resmen bu derslerin devamı, ama bana ne kadar çok şey katacağının da farkındayım.

DSP bu derslerin devami değil sanki hepsi DSP ye hazirlik :)
Sana cok sey katar mi bilmiyorum ama DSP dersinden faydalanmak istiyorsan oteki derslere nazaran 2 kat daha fazla calisman ve hocada bu konuyla ilgili nasil bir bilgi kirintisi olursa olsun almaya calisman lazim.
Nacizane tavsiyem bu DSP yi ogrenmek icin derse matematik gorunumune kanmadan istirak etmek ve nedir? ne değildir? ne ise yarar? kismini ciddi arastirarak bulmandir.

Gerci bu sene TEZ calismalarinizda vardir :)

z

Bizim zamanimizda boyle bir ders yoktu. Digitial Control I-II aldik.

Bu bahsettiginiz ders bu 2 bolumluk dersden farkli bir ders mi yoksa ismi mi degistirildi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Erol YILMAZ

Bunalmis hocam sen birak simdi dersi :)

Sen bize ders ver, DSP kullaniyorsun bildigim kadariyla :D

Bu arada sahane bir DSP basligi buldum bircok sey gayet ayrintili
http://encyclopedia.laborlawtalk.com/Digital_signal_processing

xenix

Tavsiyeler için teşekkür ederim, dersi resmi olarak almayacağım ama derslerine gidip ödevlerini yapmaya çalışacağım.

Erol YILMAZ

Xenix senin ders seciminde en iyi karar verici olan sensin.
Burada seni etkilemis olmak istemem...



IIR filtre hakkinda temel sorulara cevaplar var. simdi daha cok dikkatimi cekmeye basladi bu konu...

Alıntı Yap1. IIR Basics
1.1 What are IIR filters? What does "IIR" mean?
IIR filters are one of two primary types of digital filters used in Digital Signal Processing (DSP) applications (the other type being FIR). "IIR" means "Infinite Impulse Response".

1.2 Why is the impulse response "infinite"?
The impulse response is "infinite" because there is feedback in the filter; if you put in an impulse (a single "1" sample followed by many "0" samples), an infinite number of non-zero values will come out (theoretically).

1.3 What is the alternative to IIR filters?
DSP filters can also be "Finite Impulse Response" (FIR). FIR filters do not use feedback, so for a FIR filter with N coefficients, the output always becomes zero after putting in N samples of an impulse response.

1.4 What are the advantages of IIR filters (compared to FIR filters)?
IIR filters can achieve a given filtering characteristic using less memory and calculations than a similar FIR filter.

1.5 What are the disadvantages of IIR filters (compared to FIR filters)?
They are more susceptable to problems of finite-length arithmetic, such as noise generated by calculations, and limit cycles. (This is a direct consequence of feedback: when the output isn't computed perfectly and is fed back, the imperfection can compound.)
They are harder (slower) to implement using fixed-point arithmetic.
They don't offer the computational advantages of FIR filters for multirate (decimation and interpolation) applications.

Erol YILMAZ

Alıntı yapılan: "Erol"...DSP onu saniye de 50 bin kere yapar, orasi ayri konu...

Arkadaslar kusura bakmayin ben halt etmisim, En basitinden Texas in 28xx serisi DSP'ler bile  birkac yuz MMAC lik islem yapiyormus... :)
MAC ta Multiply, Add, ve depola gibi bisey olmasi lazim. Dijital Filtrenin temel islevi yani. M olunca basinda Milyon MAC oluyor, malum...

Bir de IIR filtre normalde bir turlu degerine oturmuyor gibi gorunuyor. Fakat sistem sayisal oldugundan belli bir degerin altindakiler birsey ifade etmiyor.

Bir de olcu aletlerinin gec cevap vermesinin sebebi de bu filtreymis...
Mesela FLUKE 400 mS sureyle gelen sinyaldeki gerilim seviyesini gosteremiyor... Bu filtreden dolayi...

Bir de Fluke el-olcu aletlerinde MSP430 (Texas) MCU kullaniliyormus...