PIC18F4550 FFT Gerçek Zamanlı Spektrum Analizör

| Haziran 14, 2023 Tarihinde güncellendi
PIC18F4550 FFT Gerçek Zamanlı Spektrum Analizör

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ş.

PCBway Türkiye PCB Manufacturer PCB Assembly

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).

audio-spectrum-analyser-using-a-pic18f4550-8-bit-microcontroller

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ı

circuit-schematic-audio-spectrum-analyser-diagram

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.

hitech-c18-fft-16-bit-fft-adcu-alu-real-time-ses-spektrum-analizor

real-time-audio-spectrum-analyser-circuit-lcd

Kaynak: waitingforfriday.com/index.php/Real-Time_Audio_Spectrum_Analyser

pic18f4550-fft-gercek-zamanli-spektrum-analizor

Şifre-Pass: 320volt.com

Yayım tarihi: 2012/07/14 Etiketler: , , ,



8 Yorum “PIC18F4550 FFT Gerçek Zamanlı Spektrum Analizör

  1. ramazanramazan

    Real-time Spectrum Analyser.sch dosyası hata veriyor acılmıyor

    CEVAPLA
  2. Mustafa DinçMustafa Dinç

    Ç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

    CEVAPLA
  3. Mustafa DinçMustafa Dinç

    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ş

    CEVAPLA
    1. marmaraunimarmarauni

      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 ?

      CEVAPLA
  4. OsmanOsman

    Merhabalar fft ile ses kontolü robot tasarımı nasıl yapabilirim yardımcı olabilir misiniz

    CEVAPLA
  5. MustafaMustafa

    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

    CEVAPLA

ramazan için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir