Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: mihri - 03 Eylül 2009, 00:54:45

Başlık: FFT
Gönderen: mihri - 03 Eylül 2009, 00:54:45
Kriz maduru işsiz mühendis boş vaktini nasıl değerlendirir? Tabiki PIC'lerle oynayarak  :D

İlk FFT denemem.

(http://img143.imageshack.us/img143/7395/res1.png)
(http://img268.imageshack.us/img268/719/res2q.png)

http://uploaded.to/file/i92u4p
Başlık: FFT
Gönderen: mihri - 03 Eylül 2009, 02:18:18
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.
Başlık: FFT
Gönderen: mihri - 03 Eylül 2009, 02:23:54
Endüstride genellikle 7 harmonik başa beladır.
Başlık: FFT
Gönderen: mihri - 03 Eylül 2009, 02:48:34
Bahsettiğim konuya bir örnek.

(http://img527.imageshack.us/img527/4403/fftmihrires.png)
Başlık: FFT
Gönderen: M_B - 03 Eylül 2009, 06:08:06
Merhaba Hocam;
malesef bende simulasyonda calıstıramadım. Versiyon no:7.4 Sp3
Biz nerde yanlış yaptık acaba.

Teşekkürler
Başlık: FFT
Gönderen: Maxim - 03 Eylül 2009, 09:05:18
@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
Başlık: Re: FFT
Gönderen: wsxwsx - 03 Eylül 2009, 15:39:19
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.
Başlık: FFT
Gönderen: GamzeDemir - 03 Eylül 2009, 23:37:02
bende indirdim proteus 7.5  kullanıyorum ama bende calıstıramadım birileri anlatabilirmi acaba  ;)
Başlık: FFT
Gönderen: gallavi - 04 Eylül 2009, 08:45:53
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.
Başlık: FFT
Gönderen: mihri - 04 Eylül 2009, 13:41:09
Arkadaşlar kusura bakmayın yanlış hex dosyasını eklemişin projeyi yeniden upload ettim.
Başlık: FFT
Gönderen: mihri - 04 Eylül 2009, 21:51:31
@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? ;)
Başlık: FFT
Gönderen: bymrz - 04 Eylül 2009, 22:48:23
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?
Başlık: FFT
Gönderen: mihri - 04 Eylül 2009, 22:50:36
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.
Başlık: FFT
Gönderen: bymrz - 04 Eylül 2009, 22:52:24
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ş...
Başlık: FFT
Gönderen: mihri - 04 Eylül 2009, 23:11:30
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.
Başlık: FFT
Gönderen: bymrz - 04 Eylül 2009, 23:18:37
@mihri hocam,

Peki gerçek zamanlı olarak bir sesin spectrum analizörünü grafik lcd de göstermek için bir uygulama yapmak istersek nerden başlama gerekir.

Veya bahsettiğiniz gibi harmonikleri ayıklamak için?
Başlık: FFT
Gönderen: mihri - 04 Eylül 2009, 23:39:54
(http://img134.imageshack.us/img134/8666/fftxc.png)

İlk grafik proteusun kendi Fourier modülü ile elde edilen grafik alttaki glcd ise pic ile yapılan FFT sonucu. Bu şekilde daha iyi anlaşılır zannediyorum.

@alone_lover
Eğer winamptaki gibi görsel birşey olsun istiyorsanız verdiğim kütüphane yeterli. Yok hayır harmonik filtre yapıcam diyorsanız öncelikle Fourier dönüşümünü iyice hazmetmek gerekli (açıkçası ben kendim için  böyle birşey söyleyemiyorum). Daha sonra DSC-DSP piclerle yapamayacağın iş yok.
Başlık: FFT
Gönderen: serdararikan - 06 Eylül 2009, 22:39:55
eger işaret işleme konusunda kendinizi geliştirirseniz ses ve görüntü üzerinde işlemler yapabilirsiniz.örneğin ses komutu ile bir sistemi çalıştırabilirsiniz.bir mikrafondan alınan veriyi örnekleyip bu örneklemeleri AFD  ile frekans domeninine taşıyıp orjinal sinyal ile karşılatırabilir böylece sesli kontrol işlemi yapabilirsiniz. tabiki olay zor bir olay önceleri bu konuyu çok merak etmiştim.speech prosessing ve image prosessing.başlı başına bir uzmanlık alanı.malesef ülkemizde bu konuda pek araştırma yapan yok o yüzden türkçe kaynak sıkıntısı var.
Başlık: FFT
Gönderen: mihri - 09 Eylül 2009, 15:43:57
Alıntı yapılan: "FxDev"Winamptaki bir şey için pic'in adc'sinin yeteceğini sanmam. Ama bilgi sürekli bir yerden gelirse, ki internetteki örneklerde genelde paralel port kullanılmış mümkün olabilir. Tabi GLCD'nin maksimum tazeleme hızı da önemli.



Yukarıdaki resim herşeyi anlatıyor. PIC ile gerçek zamanlı fft, üstelik dahili ADC ile. Dosyalar aşağıda.

http://s2.dosya.tc/FFTSPEKTRUMMIHRI.rar.html
Başlık: FFT
Gönderen: mihri - 09 Eylül 2009, 16:23:01
Alıntı yapılan: "FxDev"Hocam hız iyi yalnız istenen tam şunun gibi bir şey GLCD'den...

http://www.berik.net/0801AudioSpectrum.html

http://www.youtube.com/watch?v=b09vELFmeGQ

http://www.youtube.com/watch?v=9Fray7gGw_w

Sevgili FxDev benim verdiğim uygulamanın senin verdiğin örnekten eksiği yok fazlası var. Projeyi proteusta simüle ettiğimiz için ekran tazeleme hızı çok yavaş görülebilir. Zaman sayacına bakarsan ne kadar yavaş ilerlediğini görürsün. Benim bilgisayarımda 1 Sn simülasyon için yaklaşık 1 Dk beklemem gerekiyor. Üstelik GLCD yerine Dot Matris led pano kullanmanın daha kolay olup işlemi hızlandıracağını tahmin edersin. Diğer örneklerde 64 noktalı FFT yapılmış. Benim verdiğim sürücü 256 noktalı FFT yapıyor.

Demek istediğim gerçek dünyada girişe audio sinyal uyguladığımızda performansı o zaman daha iyi anlayacaksınız. Kaldıki FFT'nin ne olduğunu  anlayan kişi için yukarıdaki örnek yeterli olacaktır.
Saygılarımla.
Başlık: FFT
Gönderen: cetinkaya - 09 Eylül 2009, 20:56:25
audio sinyalini direk pice girmeden önce nasil filtreleme yapmaliyiz audio voltaji 5 voltu asmasmzmi yoksa direk pic e mi girmeliyiz ?
Başlık: FFT
Gönderen: solidus - 09 Eylül 2009, 21:13:47
Bu devreyi küçük bir anfinin giriş katında kullanmak istersek ve sadece Giriş sinyali ekranını göstermek istersek (FFT Ekran olmadan) nasıl bir değişiklik yapmamız gerekir ? Pratik olarak giriş sinyalinin üst eşiği nedir ? Başarılar..
Başlık: FFT
Gönderen: mihri - 10 Eylül 2009, 00:39:38
18f4620'nin ADC özellikleri;

Analog Features

   * 10-bit ADC, 13 channels, 100K samples per second
   * Programmable Low Voltage Detection Module
   * Programmable Brown-out Reset module
   * Two Analog comparators with input multiplexing


1 saniye içinde 100.000 ölçüm yapılabiliyor. Audio işaretin örnekleme frekansı ise 44100Hz, yani 18F'in  ADC hızı gerekenin 2 katından fazla. Atmel ile yapılan FFT'lerde harici ADC kullanımının nedeni dahili ADC hızlarının düşük olması.
Devrede ADC referans gerilimlerini besleme olarak ayarladım yani 0-5V arası. Giriş gerilim değeri bu aralığın dışına çıkmamalı ve sinüzoidal işaretin negatif alternansını ölçmek için giriş gerilimini 2.5V ile toplamalısınız. ADC girişinde 2.5V olduğunda içerde yazılım bunu 0V olarak algılıyor. Giriş 5V olduğunda pzitif max alternans, 0V olduğunda ise negatif min alternans oluyor. Girişte basit bir opamp devresi ile bu işlem halledillebilir. Kesim frekansı 22Khz olan bir alçak geçiren filtre kullanılabilir. Örnek devre aşağıdadır. Grafikten anlaşılacağı gibi ofset gerilimi 2.5V olarak ayarlandı.

(http://img44.imageshack.us/img44/7264/mihriaudio.png)

Osiloskop tarzı bir çalışma yapmak için çok daha basit bir yazılım kullanılabilir. Mesela 10KHz örnekleme frekansı ard arda 128 adet örnek alırsınız. Bu örnekleri 128 byte uzunluğunda bir katara sırayla kaydedersiniz. 128. örnek alındıktan sonra 128X64 GLCD ile 1. sütuna 1. değeri 2. sütuna 2. değeri .... 128. Sütuna 128. değeri 64 piksellik sütun boyuna oranlayarak yerleştirmeniz yeterli. Böyle bir uygulama için yukarıda anlattığım algoritma ve devre kullanılmak zorunda.

Gerçek müzik dosyası ile simülasyondan bir örnek.

(http://img44.imageshack.us/img44/9295/mihrifft.png)
Başlık: FFT
Gönderen: picusta - 10 Eylül 2009, 15:29:19
Ben de proteus olmadigi için devreyi deneyemedim. Programin tamami olmadigi için de bilemiyorum.
Sorum su :
Veri kaçirma oluyormu ?
Alt sorular :
ADC devamli kullaniliyormu ? 128 (veya 256) örneklemeden sonra durup  hesaplama fonksyonunu mu çagiriyorsunuz, bu sirada ADC devam ediyor mu ? GLCD'ye yazarken de ADC islemi devam ediyor mu ?
ADC kesme rutini ile ana program arasinda circular buffer kullaniyormusunuz ?
Başlık: FFT
Gönderen: bymrz - 10 Eylül 2009, 23:07:11
@mihri hocam,
süpersin :)

anlamak istediğim herşeyi uygulamalı olarak göstermişsin. Teşekkür ederim... Ama demiştin ya bize yine balığı yemek düştü biraz   :)
Başlık: FFT
Gönderen: erolca - 13 Ekim 2009, 13:31:35
Alıntı yapılan: "mihri"Endüstride genellikle 7 harmonik başa beladır.
ben 3ncü harmonik diye biliyorum, yanlış olmasın
Başlık: tablonun hazırlanması
Gönderen: erolca - 13 Ekim 2009, 14:07:44
Merhaba,
u1 ve u2 tablonun hazırlanması konusunda biraz yardımcı olabilir misiniz?
Başlık: Ynt: FFT
Gönderen: mihri - 27 Mart 2010, 21:25:45
Tebrikler güzel çalışma olmuş.
Başlık: Ynt: FFT
Gönderen: ahmet2004 - 04 Nisan 2010, 06:43:04
FxDev'e  ek olarak

Verdiğin projenin Algoritma kaynak kod ve şemaları bu linkte.

http://mehilainen.homeip.net/analyzer/analyzer.html

indirip inceleyebilirsiniz pic32 kullanıcıları.
Başlık: Ynt: FFT
Gönderen: SpeedyX - 05 Nisan 2010, 02:55:22
Minä rakastan sinua Suomi :)
Andrei kardeşimin böyle bir sitesi olduğunu ve elektronikle ilgilendiğini picprojeden öğreneceksin deselerdi çok gülerdim heralde :)
Finlerin bu paylaşma huyunu seviyorum.
Başlık: Ynt: FFT
Gönderen: kralsam - 23 Ağustos 2011, 00:17:23
Hocam kod linklerinin  tümü silinmiş. Tekrar eklemeniz mümkünmüdür acaba? Değişik uygulama şekilleri hakkında fikir sahibi olmak istedim.

Teşekkürler.
Başlık: Ynt: FFT
Gönderen: kantirici - 31 Mayıs 2012, 18:20:34
Merhaba,
İlk mesajdaki dosya linki ölmüş.Acaba bir arkdaş yenileyebilirmi? Teşekkürler.
Başlık: Ynt: FFT
Gönderen: gurhanmurat - 16 Ekim 2014, 22:20:51
hocam link ölmüş yenilemenizi rica ederim. saygılar
Başlık: Ynt: FFT
Gönderen: mihri - 24 Aralık 2014, 21:36:00
http://www.dosya.tc/server37/pZyczW/Radix2.rar.html (http://www.dosya.tc/server37/pZyczW/Radix2.rar.html)

FFT kodlarını yükledim. Rica etsem bir arkadaş forumun 4share hesabına yükleyebilir mi silinmesi.?
Başlık: Ynt: FFT
Gönderen: RaMu - 26 Aralık 2014, 16:11:06
mihri hocam teşekkür ederim.
@meftun a bildirecem durumu
bu tip kodları picprojenin github hesabına ekliyor.
Başlık: Ynt: FFT
Gönderen: mcn - 26 Aralık 2014, 20:05:40
bir yedek te benden olsun,

https://drive.google.com/file/d/0BwinMhPf13P3ckd2Mlh2VGwzZTg/view?usp=sharing
Başlık: Ynt: FFT
Gönderen: Gökhan BEKEN - 27 Aralık 2014, 22:19:47
Buyrun: https://github.com/Picproje/FFT-Fast-Fourier-Transform-
Teşekkürler @mihri
Başlık: Ynt: FFT
Gönderen: furkanyavvuzz - 03 Eylül 2018, 15:28:43
ADC gelen sinyali nasıl koda aktarıcaz acaba yardımcı olurmusunuz