FİLTRE TASARIMI

Başlatan Sümeyra, 08 Ekim 2015, 23:27:07

Sümeyra

merhaba elektrik elektronik mühendisliği son sınıfım. bitirme projem pic yada arduino ile yüksek geçiren, alçak geçiren, bant geçiren, bant durduran filtreler yapmak. ama nasıl yapacağım konusunda bir fikrim yok . pic mi arduino mu kullanmam daha iyi olur? nereden nasıl başlamam gerekiyor yardım eder misiniz ?

Gökhan BEKEN

#1
Hangi üniversiteyi okuyorsunuz? Tanıdıklardan orayı tercih eden varsa diyelim de yazmasınlar.

low pass filter , high pass filter

Özel mesaj okumuyorum, lütfen göndermeyin.

z

İyi de bu forumda şu dereceden şu frekansda  yazılımsal low pas yazın desek bu işin üstesinden gelecek adam sayısı 5..10'u geçmez zaten.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ohacagatay

Kod olarak yapmak istediğini farzederek
direk wikipediadaki pseudo code 'u paylaşıyorum, bu kod low pass filter 'ı discrete olarak simule edecektir

RC = zaman sabitin ( RC = 1 / (cutoff*pi *2) ) dt = örnekleme zamanın X 'de data.

function lowpass(real[0..n] x, real dt, real RC)
   var real[0..n] y
   var real α := dt / (RC + dt)
   y[0] := x[0]
   for i from 1 to n
       y := α * x + (1-α) * y[i-1]
   return y

pic veya arduino ile yapman cok büyük fark yaratmayacaktır. Ben olsam hızlı prototipleme icin arduino kullanırdım.
Some people believe çiğ köfte is a matter of life and death, I am very disappointed with that attitude. I can assure you it is much, much more important than that

Sümeyra

Teşekkür ederim .arduino yada pic kullanılması kafamı karıştırmıştı

hardware

merhaba aşağıdaki konu bir yerden başlaman için iyi bir kaynak olabilir. tasarlayacağın devreyi önce analog olarak tasarlayıp sonra s düzlemine geç buradan da discrete time a geçip çıkan ifadeyi yazılımında kullanabilir. aşağıdaki linke bunun low pass filtre de nasıl yapıldığı gayet güzel açıklanmış.
https://electronicsfreelancer.wordpress.com/2011/09/25/alcak-geciren-sayisal-filtre/

ehliseyf

Alıntı yapılan: Gökhan BEKEN - 09 Ekim 2015, 00:41:38
Hangi üniversiteyi okuyorsunuz? Tanıdıklardan orayı tercih eden varsa diyelim de yazmasınlar.

low pass filter , high pass filter

Yaklaşımını itici buldum. Kırıcı olmana gerek yok. Cevaplama olsun bitsin. Belki bu arkadaş bir daha buraya uğramayacak ama tavrın hoş değil.
Code'm mu oturturum !

z

#7
Verilen linkte bir iki yazıya baktım da;

ADC girişine Filitre mi desem diye yazı yazmış vatandaş.

https://electronicsfreelancer.wordpress.com/2012/09/13/adc-girisine-filtre-mi-desem/

Adı geçen sistem onun deyimiyle filitre değil imiş.

X kişisi 1000Hz ile örnekler alıyormuş.

Peş peşe 10 örnek alıp en kuçuk ve en büyük 3 değeri kaldırıp atıp geri kalan 4 örneğin ortalamasını alıp sonuç üreten X kişisini kınıyor.

Örnek alma frekansı 1000Hz, bunun da yarısı 500Hz olur.  Sistem 500Hz'e kadar sinyalleri filitreleyebilmeli demiş.

Fakat yaptığı işlemlerle 1000 Hz örnek alıyor ama daha 100Hz de bile aliasing oluyor demiş. X kişisine kızmış.

Aliasing olur tabi. Örnekleme frekansın 1000Hz değil 100 Hz çünkü.

Ardışıl iki ayrı örnekleme var. 1000 Hz örnek alarak 100 örnek çıkartıyorsun çünkü.

Bu durumda aliasing 500Hz de değil 50Hz de başlar. 100Hz'i de filitrelersen yanlış sonuçlar elde edersin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

alicavuslu

#8
Anladığım kadarıyla sizden istenen sayısal bir filtre yapmanız. Öncelikle kullanmak istediğiniz filtrenin derecesini ve kesim frekansını belirlemelisiniz.  Bu bilgileri kullanarak filtre katsayılarını elde etmelisiniz. Filtrenizin tipi de önem arz etmektedir. Eğer FIR filtre kullanacaksanız filtre derecesiniz yüksek tutmanızı öneririm. IIR filtre kullanacak iseniz bu sefer sayı duyarlılığını arttırmanız gerekmektedir. Matlab ile FIR filtre katsayılarını aşağıdaki gibi elde edebilirsiniz.

Filtre_Katsayi = fir1(Filtre_Derece, Kesim_frek / Ornekleme_frek, 'high');

Daha sonra elde ettiğiniz bu katsayıları integer formatına çevirmelisiniz. Matlab için :

Filtre_Katsayi_int = fix(2^8 * Filtre_Katsayi);

Daha sonra elde ettiğiniz değerleri konvolusyon işlemine tabi tutacaksınız. Elde ettiğiniz sonucu tekrar 2^8'e böleceksiniz. Bu şekilde filtrenizi elde etmiş olursunuz.


mesaj birleştirme:: 10 Ekim 2015, 20:49:46

Örnek uygulama....

clc, clear all, close all;

Ornekleme = 200000;
Zaman_Serisi = 1 / Ornekleme : 1 / Ornekleme : 1;

Frek_1 = 2;
Frek_2 = 8000;

Sinyal_1 = sin( 2 * pi * Zaman_Serisi  * Frek_1 );
figure, plot(Sinyal_1);

Sinyal_2 = 1 * sin( 2 * pi * Zaman_Serisi  * Frek_2 );
figure, plot(Sinyal_2);

Sinyal_Toplam = Sinyal_1 + Sinyal_2;
figure, plot(Sinyal_Toplam);

Katsayi = fix(2^8 * fir1(50, 500 / Ornekleme, 'low'));
for n_i = 1 : length(Sinyal_Toplam) - length(Katsayi)
    Sinyal_Filtre(n_i) = sum(Sinyal_Toplam(n_i : n_i + length(Katsayi)- 1) .* Katsayi) / 2^8;
end

figure, plot(Sinyal_Filtre);

fatih6761

FIR için şöyle bir site var:
http://t-filter.engineerjs.com/

Lazım olduğunda açarım siteyi iki tıkla filtreyi hazırlar kodu da üretir C için. Design Taps kısmı normalde minimum seçili, istendiği takdirde sabit sayı da verilebilir.
Üstteki sekmelerden Source Code tıklanırsa sayı tipi fixed point veya floating point seçilebiliyor. El altında bulunacak işe yarar bir araç bence.

Sümeyra

Yardımcı olan arkadaşlarıma teşekkür ediyorum çok yardımcı oldunuz. Arduino kullanacağım arduinoya giriş ve çıkış vermem gerekiyor daha araştırmalar yapıyorum bir gelişme olursa paylaşacağım .

Firzen

Alıntı yapılan: Sümeyra - 08 Ekim 2015, 23:27:07
merhaba elektrik elektronik mühendisliği son sınıfım. bitirme projem pic yada arduino ile yüksek geçiren, alçak geçiren, bant geçiren, bant durduran filtreler yapmak. ama nasıl yapacağım konusunda bir fikrim yok . pic mi arduino mu kullanmam daha iyi olur? nereden nasıl başlamam gerekiyor yardım eder misiniz ?

Aslına bakarsan çok zor değil sadece şunu iyi bilen lazım örneğin low pass filter nasıl işlem yapar hangi adımları izler arından da sistem üzerinde frekans nasıl ölçerim bunlara bakın. Ben daha önceden Pulse oksimetre cihazı yapmıştım bunun üzerindeki gürültü giderme ve frekans ayırma ile çıkmıştı.
Bir diğer yöntem ise elektronik 2 laboratuvarında gösterilen yöntem. Önce 2 adet opamp ile filtireyi tasarla ardından gürültü giderme yap sisteme PIC bağla buda en basiti oluyor.
Kararsız...

ehliseyf

Alıntı yapılan: Firzen - 09 Ekim 2015, 21:55:41
Aslına bakarsan çok zor değil sadece şunu iyi bilen lazım örneğin low pass filter nasıl işlem yapar hangi adımları izler arından da sistem üzerinde frekans nasıl ölçerim bunlara bakın. Ben daha önceden Pulse oksimetre cihazı yapmıştım bunun üzerindeki gürültü giderme ve frekans ayırma ile çıkmıştı.
Bir diğer yöntem ise elektronik 2 laboratuvarında gösterilen yöntem. Önce 2 adet opamp ile filtireyi tasarla ardından gürültü giderme yap sisteme PIC bağla buda en basiti oluyor.
Hocam sizin içinde uygunsa pulse oximetre ile ilgili tecrübelerinizi duymak isterim.
Code'm mu oturturum !

Firzen

Alıntı yapılan: ehliseyf - 10 Ekim 2015, 23:25:04
Hocam sizin içinde uygunsa pulse oximetre ile ilgili tecrübelerinizi duymak isterim.
Nezaman isterseniz :)
Kararsız...

ehliseyf

Alıntı yapılan: Firzen - 10 Ekim 2015, 23:26:40
Nezaman isterseniz :)
İletişim için bilgilerimi özel mesaj yoluyla size ileteceğim.
Code'm mu oturturum !