FFT

Başlatan mihri, 03 Eylül 2009, 00:54:45

mihri

Kriz maduru işsiz mühendis boş vaktini nasıl değerlendirir? Tabiki PIC'lerle oynayarak  :D

İlk FFT denemem.




http://uploaded.to/file/i92u4p
"Eppur si muove!"

mihri

FFT ( Fast Fourier Transform )  herhangi bir işareti frekans domeninde incelememize yarar.
Mesela farklı frekanslardaki 2 sinüs işaretini toplayıp elde edilen işareti FFT analizini yaptığınızda topladığınız işaretlerin genliklerini ve frekanslarını ayrı ayrı tesbit edebilirsiniz. Peki bu işlem ne işe yarayacak? Harmonik filtrelerinde kullanılabilir mesela. Şebekedeki ana harmoniğin frekansı 50Hz'dir, şebekeye bağli bir başka cihazında frekansını bilmediğimiz bir harmonik üretebilir. Ohalde FFT ile şebekeden çekilen akımın harmonik analizini yaparız istenmeyen harmonikleri frekansları ve genlikleri ile tespit ederiz ve uygun yöntemlerle bastırmaya çalışırız.

Daha birçok kullanım alanı var.
"Eppur si muove!"

mihri

Endüstride genellikle 7 harmonik başa beladır.
"Eppur si muove!"

mihri

Bahsettiğim konuya bir örnek.

"Eppur si muove!"

M_B

Merhaba Hocam;
malesef bende simulasyonda calıstıramadım. Versiyon no:7.4 Sp3
Biz nerde yanlış yaptık acaba.

Teşekkürler
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Maxim

@mihri, eline sağlık hocam ,
acaba olayı madde madde anlatabilirmisiniz?
şunu yap bunu yap ,şöyle olsun
sanırım çok uzun da değil ,
olay derken aslında kod tan bahsediyorum ,
bizde başka derleyicilerde yapmaya çalışsak FFT yi


benzer birşeyler yapmaya çalıştım ama ilerleyemedik ,
FFT değilde DFT
https://www.picproje.org/index.php/topic,19492

wsxwsx

fft_spektrum.hex dosyası mevcut olmadığı için çalışmıyor. var olan diğer hex ile de çalıştıramadım. C kullanmadığım için derleyici de mevcut değil. Derleyemiyorum.  bu hexi  gönderecek arkadaş olursa sevinirim.

Yani çalışmadan kastım, başlattığımız zaman hemen spektrumlar veya LCD üzerinde bir yazı , hata filan görünecek diye düşünüyorum.

Alıntı yapılan: "mihri".. boş vaktini nasıl değerlendirir?
Zaman zaman (1-2 yıl gibi) ara verip, şu günlerde foruma zengin içerik, ve bilgi olarak katkıda bulunan arkadaşlar var. Galiba bu arkadaşlarda da durum aynı. Soracaktım dilim varmadı. Belki de bu zamanlar kendimizi geliştirmek,  çevremizdekilerin de bizden istifade edebilmesi için uygun zamanlardır.

Böyle bir projeyi paylaştığınız için teşekkür ederiz.

GamzeDemir

bende indirdim proteus 7.5  kullanıyorum ama bende calıstıramadım birileri anlatabilirmi acaba  ;)

gallavi

Arkadaşlar c kodları sadece fft için kütüphane niteliğinde onu grafik lcd ye yazdırmak için proje oluşturup yeni kodlar yazmak gerekli mihri arkadaşımız bizimle kütüphane dosyalarını paylaşmı proje olarak istemek bence gereksiz bu kütüphane dosyalarını kullanacak projeler oluşturmak size kalmış

@mihri kütüphane dosyaları için teşekkürler.
DemirHan=gallavi;

mihri

Arkadaşlar kusura bakmayın yanlış hex dosyasını eklemişin projeyi yeniden upload ettim.
"Eppur si muove!"

mihri

@FxDev
Aslında ben 256 adet örnek alıyorum fakat fazladan işlem yapıp glcd ye sığdırmak yerine sadece ilk 128 örneği glcdde gösteriyorum. ADC den ölçülen değerleri glcdnin sütun genişliğine oranlayıp çizgi çizdiriyorum. Glcdnin sürücüsünde kordinatları sol üst köşe (0,0) olacak şekilde ayarlandığı için senin deyiminle 0 noktalarını belirleyip altını dolduruyomuşum gibi görünüyor. Aslında glcd üzerine çizdirilen her şekil yukarıdan aşağıya doğru işleniyor.

FFT kütüphanesinin nasıl kullanıldığına gelince, konu hakkında araştırma yapıp yüzeysel bilgi edinen herkes rahatlıkla kullanabilir. Birazda balık tutmayı öğrenmek gerekiyor değil mi? ;)
"Eppur si muove!"

bymrz

mihri hocam dediklerinize bakarsak bu sadece bir anolog örnekleme ve görüntüleme işlemi olmuyor mu?

FFT biraz daha karmaşık değil mi? Bi ara bakmıştım ama iyi bir matematik gerektiriyor sanırım FFT.

Şimdi siz iki farklı frekansın toplamını görüntülemişsiniz, peki bu iki frekansı ayrıp,yani iki farklı harmoniği ayrı ayrı görüntüleyebilir misiniz. Yani girişteki iki ayrı sinyalin aynısını nasıl elde edebiliriz?

mihri

Alıntı yapılan: "FxDev"Tahmin ettiğim gibi 256 örnek hariç, bir diğer noktada 18F'in ADC hızında o da bu uygulamada gayet önemli bir faktör...

Evet aynen öyle. Fourier analizinin doğru sonuç vermesi için örnekleme frekansı analog işaretin frekansının 2 katından fazla olmalı. 100Ksps hızındaki bir adc ile en fazla 50KHz frekansındaki işaretin fourier katsayılarını elde edebiliriz. Benim yaptığım uygulamanın örnekleme hızı 100Hz'in altında. İstenilirse arttırılabilir tabi.

@alone_lover

FFT konusunu biraz daha araştırmakta fayda var. Fourier analizi ile ölçüm yaptığınız frekans aralığında fourier katsayılarını elde edersiniz. 2. şekilde görüldüğü gibi 2 farklı çubuk iki ayrı sinyali işaret eder. Boylarıda bu frekansların katsayılarıdır. Eğer karıştırdığımız işaretleri ayrı ayrı elde etmek istiyorsak buda ayrı bir işlem gerektirir ki buna gerek yok. Zaten elde edeceğiniz işaret fourier dönüşümü ile elde edilen frekans ve genliklerdeki sinüs işaretleri olacaktır. Teoremin temelinide bu son cümle oluşturuyor zaten.
"Eppur si muove!"

bymrz

Alıntı yapılan: "FxDev"Tahmin ettiğim gibi 256 örnek hariç, bir diğer noktada 18F'in ADC hızında o da bu uygulamada gayet önemli bir faktör...

hocam zaten bu işlerde picin adc si yetersiz kalır tahminimce. devrede girişlere baktıysan mihri hocam da 2-3 Hz gibi düşük değerlerde örnek vermiş...

mihri

Alıntı yapılan: "alone_lover"
Alıntı yapılan: "FxDev"Tahmin ettiğim gibi 256 örnek hariç, bir diğer noktada 18F'in ADC hızında o da bu uygulamada gayet önemli bir faktör...

hocam zaten bu işlerde picin adc si yetersiz kalır tahminimce. devrede girişlere baktıysan mihri hocam da 2-3 Hz gibi düşük değerlerde örnek vermiş...

Aslında PIC'leri o kadarda kötülememek gerek. 18f452 ile 40KHz'e kadar işaretlerin FFT analizi yapılabilir, ama gerçek zamnlı olmaz. Gerçek zamanlı FFT yapmak istenirse analizi yapılan işaretin azami frekansi birkaç KHz'geçmez diye tahmin ediyorum. Ben sadece deneme amaçlı kod yazdığım için 5Hz - 10Hz bana yeterli geldi.
"Eppur si muove!"