Spektrum Analizör devresinde pic18f4550 mikrodenetleyici kullanılıyor görüntüleme için 128×64 lcd var ses sinyalini yükseltmek için düşük güçlü LM386 amplifikatör entegresi kullanılmış gerçek zamanlı ses Spektrum frekans analizi FFT (fast Fourier transform) ile yapılıyor. Yazılım HiTech C18 ile hazırlanmış header dahil tüm kaynak kod dosyaları ve expressSCH (şema) ve expressPCB (pcb) dosyaları verilmiş.
Bu projenin amacı, PIC18F4550 8-bit mikrodenetleyici kullanarak gerçek zamanlı bir ses spektrum analizörü yapmaktır. Spektrum frekans analizi yazılımı, tamamen C dili olarak kodlanmış yüksek derecede optimize edilmiş 16 bit Hızlı Fourier Dönüşümü (FFT) rutini ile gerçekleştirilir. FFT’den gelen çıktı, bir ses sinyalinin gerçek zamanlı görüntüsünü sağlamak için 128×64 grafik LCD kullanılarak görüntülenir. .
Spektrum Analizör Donanımı
Bir ses sinyali üzerinde bir FFT hesaplaması yapmak için, sesi PIC18F4550’nin sinyali örnekleyebileceği şekilde hazırlamak gerekir. PIC18F4550, 10 bit doğrulukla (0-1023) 0V ila 5V arasındaki bir voltajı ölçmek için kullanılabilecek birkaç dijital-dijital dönüştürücü (ADC) içerir. Tipik bir ses çıkış sinyali, aşağıdaki osiloskop görüntüsü ile (W2 pininden) gösterildiği gibi, 0V etrafında ortalanmış bir tepe-tepe yoğunluğu 2V olan bir analog dalgadır (yani +1 ile -1V arasında değişen bir AC sinyalidir).
Resimde bir PC tarafından üretilen tam hacimli 5000Hz sinüs dalgası gösterilmektedir. Bu sinyali doğrudan PIC’e giriş yapsaydık, sadece çok küçük bir giriş voltajı aralığımız olurdu (0-0.5V) ve ayrıca sadece FFT’yi yanlış yapan sinyalin üst yarısını örnekleyebildik .
Sinyali doğru bir şekilde örneklemek için iki şey yapmalıyız. İlk olarak, mümkün olduğunca 0-5V aralığını kullanabileceğimizden emin olmak için sinyali yükseltmeliyiz. İkinci olarak, sinyalin zemini (0 volt) 2,5V’luk bir ‘sanal zemine’ taşımak zorundayız. Bu PIC’nin giriş sinyalinin hem pozitif hem de negatif taraflarını örneklemesine izin verecektir. Bunu yapmak için basit bir amplifikatör entegresi (LM386) kullanır. LM386-1 ucuz ve basit olduğu için kullanıldı, farklı entegre veya tasarımlarda kullanılabilir.
LCD Spektrum Analizör Devre Şeması
Donanım, stereo hattı girişini basit bir mikser görevi gören iki 10K direnç kullanarak karıştırır. Daha sonra sinyal, sinyal gücünün ayarlanması sağlayan 10K potansiyometre üzerinden LM386 entegresine iletilir. Daha sonra LM386 amplifikatör çıkışı, yaklaşık 10 Khz’de sinyali işleyen basit bir RC Filtresi’nden geçirilir. Elde edilen sinyal daha sonra PIC18F4550’deki ADC pimine giriş yapılır.
10Khz filtre, FFT için 10KHz’den daha yüksek bir frekansa sahip sinyalleri doğru bir şekilde algılayamayan bir ‘kenar yumuşatma‘ filtresi görevi görür. RC filtresi çok basit bir filtre türüdür (ve çok etkisizdir), ancak inşa edilmesi kolay olduğu ve sadece 2 pasif bileşen gerektirdiği için seçilmiştir.
Spektrum Analizör Yazılımı
ADC Örnekleme: ADC örnekleme rutini RA0 üzerindeki voltaj seviyesini her 50 uS’de örnekler. Bu bize 20 Khz (saniyede 20.000 kez) örnekleme oranı verir. FFT için numunelerin eşit ve doğru bir şekilde yerleştirilmesi önemlidir. Bunu sağlamak için, örnekleme döngüsünde, demo kartının W4 pininde bir osiloskop kullanılarak kalibre edilen küçük bir gecikme vardır. W4’teki kare dalganın toplam görev döngüsü tam olarak 50 uS olmalıdır. ADC tam 10 bit çözünürlükte örneklenir ve daha sonra giriş sinyalinin sanal topraklamasını sıfıra getirmek için 512 ile aşağı kaydırılır. Bu, ortaya çıkan örneklerin tam olarak FFT matematiğinin gerektirdiği gibi -512 ila +512 aralığında olduğu anlamına gelir.
ADC örnekleme yönlendirmesi, her döngü için yürütme süresinde 64 × 50 uS = 32 mS (3200 uS) değerinin biraz üzerindedir.
16 bit FFT: FFT rutini web’de bulunan bir örnekten alınmıştır (orijinal koda yapılan referanslar kaynak kodunda bulunabilir). FFT matematiği karmaşıktır ve tam olarak anlıyormuş gibi davranmıyorum! Kod, gerekli minimum komutlara indirildi ve PIC18F’ye taşındı. PIC18F4550, işlemcinin ALU’sunda bir donanım 8×8 çarpma işlevine sahip olduğundan, derleyicinin yeteneklerini doğru bir şekilde kullanmasını sağlamak için hesaplamaları optimize ettim.
PIC18F’nin 8×8 donanım çarpanına sahip olması, bu kadar düşük güçte bir çipin gerçek zamanlı FFT’yi nasıl gerçekleştirebileceğinin anahtarıdır. 16 bit hesaplamalarda bile döngü hızı avantajı çok büyük.
Mutlak değer hesaplaması: FFT’den elde edilen çıktı, iki dizi tarafından temsil edilen hem gerçek hem de hayali bir kısımdan oluşan 32 ‘karmaşık’ sayıdır. Sonucu anlamlı bir şekilde göstermek için, karmaşık sayının başlangıç noktasından uzaklığını hesaplamak için bir Pisagor hesaplaması kullanılarak yapılan karmaşık sayının mutlak değerini hesaplamak gerekir. Herhangi bir kayan nokta işlemi çok yavaş olacağından, yazılım çok hızlı bir tamsayı tabanlı SQRT () eşdeğeri uygular.
Birleştirilmiş FFT rutini ve mutlak değer hesaplamaları her döngü için yaklaşık 70 mS (7000 uS) alır
LCD’yi yenileme: 128 × 64 LCD’nin mümkün olduğunca hızlı güncellenmesi gerekir. Bunu yapmak için ekrana mümkün olan en az sayıda komut gerektiren çok basit bir çubuk grafik çizim algoritması kullandım. Rutin, güncellemeyi olabildiğince hızlı hale getirmek için LCD ekranın adreslenmesinden yararlanır.
PCB üzerindeki iki anahtar, kullanıcının çıktının x1 ve x8 büyütmesi arasında geçiş yapmasına izin verir (müzik için frekans ortalamaları oldukça düşüktür) ve ayrıca doğrusal bir çıktı veya logaritmik bir çıktı (dB’ye dayalı). LCD yenileme rutini her güncelleme için yaklaşık 45 mS alır.
Toplam FFT hızı: Spektrum analiz ekranının yaklaşık hızı, 150mS başına bir kare olup, saniyede yaklaşık 6.5 kare (veya LCD olmadan yaklaşık 10FPS) genel kare hızıyla sonuçlanır. Bu, gerekli sayıda frekans azaltarak (hem örnekleme hem de FFT yürütme sürelerini azaltacaktır) veya daha hızlı güncelleme süresine sahip bir görüntüleme cihazı kullanarak kolayca iyileştirilebilir.
FFT’nin Nyquist frekansı (tespit edebileceği en yüksek frekans) 10 Khz’dir. 32 frekans aralık üzerinde eşit olarak bölünür, ancak FFT rutininin çalışması nedeniyle en düşüğünü kullanamazsınız.
Kaynak: waitingforfriday.com/index.php/Real-Time_Audio_Spectrum_Analyser
Şifre-Pass: 320volt.com
Yayım tarihi: 2012/07/14 Etiketler: microchip pic projeleri, pic18f4550 projeleri, spectrum analyser, spektrum analizör
Real-time Spectrum Analyser.sch dosyası hata veriyor acılmıyor
kusura bakmayın eagle değil express pcb programı ile şema ve pcb hazırlanmış yazıyı düzenledim.. program ücretsiz hem şematik hemde pcb ikisi bir rada tek program; http://www.expresspcb.com/ExpressPCBHtm/Download.htm
meraba cevabınız için teşekkürler ben bu devreyi zaman bulunca yapmak istiyorum elimdeki glcd yi degerlendırmek maksadıyla
aşagıdaki devre ile beraber kullanacagım
https://320volt.com/2×22-watt-tda1554q-lm1036-ton-kontrollu-anfi-devresi/
Çok güzel bir çalışma , ama bar larda gölgelenme meydana geliyor,daha hızlı lcd display kullanılabilir ve ya daha yüksek değerli bir osilatör kullanılabilinir mi , teşekkürler
Benim de böyle tasarımlarım oldu, seyledince dalmam gerek, bu çalışmayı
16f876 20mhz de asm kodu kullanarak daha aktif tasarımlarım oldu,
hele 18f4550 ile yapıldığına göre, izleyenleri transa geçirmesi gerek,
bu sebeple oldukça amatörce bir çalışma olmuş
sene 2015 : *** Çok güzel bir çalışma , ama bar larda gölgelenme meydana geliyor,daha hızlı lcd display kullanılabilir ve ya daha yüksek değerli bir osilatör kullanılabilinir mi , teşekkürler ***
yazmışsınız (yukarıda yazıyor )
sene 2019 : *** Benim de böyle tasarımlarım oldu, seyledince dalmam gerek, bu çalışmayı
16f876 20mhz de asm kodu kullanarak daha aktif tasarımlarım oldu,
hele 18f4550 ile yapıldığına göre, izleyenleri transa geçirmesi gerek,
bu sebeple oldukça amatörce bir çalışma olmuş ***
yazmışsınız
projenin sahibi simon inns sene 2011 de projeyi paylaşmış kodları şeması pcbsi vesaire.. artı bi tonda açıklama yapmış kısaca adam paylaşmış siz ne yaptınız ?
Merhabalar fft ile ses kontolü robot tasarımı nasıl yapabilirim yardımcı olabilir misiniz
Aynen, benimde 876 ile yaptığım oldu daha akıcı, sürekli güncelliyorum fakat, bu işlem frekans ölçmeye pek benzemiyor, o sebeple mükemmel diyebileceğim bir şey çıkardım diyemiyorum