İçindekiler:

Arduino: Frekans Dönüşümü (DFT): 6 Adım
Arduino: Frekans Dönüşümü (DFT): 6 Adım

Video: Arduino: Frekans Dönüşümü (DFT): 6 Adım

Video: Arduino: Frekans Dönüşümü (DFT): 6 Adım
Video: 6) fourier serileri 1 - tek periyot çok frekans fikri 2024, Kasım
Anonim
Arduino: Frekans Dönüşümü (DFT)
Arduino: Frekans Dönüşümü (DFT)

Bu program, parametreler üzerinde meyilli kontrol ile arduino üzerinde frekans dönüşümünü hesaplamak içindir. desecrate fouriior dönüşümü kullanılarak çözülür.

bu FFT değil

FFT, DFT'yi daha kısa sürede çözmek için kullanılan algoritmadır.

FFT kodu burada bulunabilir.

Adım 1: Nasıl Çalışır (konsept):

Nasıl Çalışır (konsept)
Nasıl Çalışır (konsept)
Nasıl Çalışır (konsept)
Nasıl Çalışır (konsept)

Frekans dönüşümü için verilen program, ihtiyacınız olan çıktı üzerinde büyük kontrol sağlar. bu program, veri seti için verilen girişte kullanıcı tarafından verilen frekans aralığını değerlendirir.

  • Şekilde test edilmesi gereken f2 ve f5 adlı iki frekanstan oluşan bir veri seti verilmiştir. f2 ve f5, iki frekans için rastgele adlardır, nispeten daha yüksek frekans için daha yüksek sayı. burada daha küçük frekans f2 daha yüksek genliğe sahiptir ve f5 daha küçük genliğe sahiptir.
  • Farklı frekansa sahip iki harmonik veri kümesinin çarpımının toplamının sıfıra meylettiği matematiksel olarak gösterilebilir (daha fazla veri, meyilli sonuca yol açabilir). Bizim durumumuzda, bu iki çarpma frekansı aynı (veya çok yakın) frekansa sahipse, çarpma toplamı sıfırdan farklı bir sayıdır, burada genlik verinin genliğine bağlıdır.
  • Belirli bir frekansı tespit etmek için verilen veri seti, çeşitli test frekansları ile çarpılabilir ve sonuç, verilerde o frekansın bileşenini verebilir.

Adım 2: Nasıl Çalışır (Kodda):

Nasıl Çalışır (Kodda)
Nasıl Çalışır (Kodda)
Nasıl Çalışır (Kodda)
Nasıl Çalışır (Kodda)

bunun için verilen veriler (f2+f5) tek tek f1'den f6'ya çarpılır ve toplamın değeri not edilir. bu son toplam, o frekansın içeriğini temsil eder. frekansın geri kalanı (eşleşmeyen) ideal olarak sıfır olmalıdır, ancak gerçek durumda bu mümkün değildir. toplamı sıfır yapmak için sonsuz boyutta veri setine sahip olmak gerekir.

  • Şekil f1 ila f6'da gösterildiği gibi deneme frekansı ve her noktada veri seti ile çarpımı gösterilmiştir.
  • ikinci şekilde her frekanstaki bu çarpmanın toplamı çizilir. 1 ve 5'te iki tepe tanımlanabilir.

bu yüzden rastgele bir veri için aynı yaklaşımı kullanarak çok sayıda frekansı değerlendirebilir ve verilerin frekans içeriğini analiz edebiliriz.

Adım 3: Frekans Analizi için Kodu Kullanma:

Frekans Analizi için Kod Kullanma
Frekans Analizi için Kod Kullanma

örnek olarak, kare dalganın DFT'sini bulmak için bu kodu kullanalım.

İlk önce ekli kodu (dft işlevi) gösterilen resimdeki döngüden sonra yapıştırın

BELİRTİLMESİ GEREKEN 8 TERİM

  1. dft alınması gereken bir dizi
  2. bir dizinin boyutu
  3. miliSECONDS cinsinden dizide 2 okuma arasındaki zaman aralığı
  4. Hz cinsinden frekans aralığının daha düşük değeri
  5. Hz cinsinden frekans aralığının üst değeri
  6. frekans aralığı için adımların boyutu
  7. bir sinyalin tekrarı (minimum 1) daha yüksek sayıda meyilli doğruluğu ancak artan çözüm süresi
  8. pencere işlevi:

    0 penceresiz1 düz üst pencere için 2 hann pencere için 3 çekiçleme penceresi için

(eğer pencereyi seçme konusunda bir fikriniz yoksa varsayılanı 3 tut)

örnek: dft(a, 8, 0,5, 0, 30, 0,5, 10, 3); burada a, 0,5 adım (0, 0,5, 1, 1,5, …, 29, 29.5, 30) ile 0 Hz ila 30 Hz için kontrol edilecek 8 boyutlu bir eleman dizisidir. 10 tekrarlama ve çekiçleme penceresi

burada arduino'nun kaldırabileceği kadar daha büyük boyutlu dizi kullanmak mümkündür.

Adım 4: Çıktı:

Çıktı
Çıktı
Çıktı
Çıktı

yorum yaparsan

Seri.print(f);Seri.baskı("\t");

koddan seri çizici, frekans spektrumunun doğasını verecektir ve Seri monitör değilse, genliği ile birlikte frekans verecektir.

Adım 5: Çeşitli Pencere ve Örnek Boyutlarını Kontrol Etme:

Çeşitli Pencere ve Numune Boyutlarını Kontrol Etme
Çeşitli Pencere ve Numune Boyutlarını Kontrol Etme

şekilde, sinüs dalgasının frekansı farklı ayarlar kullanılarak ölçülür.

Adım 6: Örnek:

Örnek
Örnek

SciLab ve arduino kullanılarak verilerin şekil dönüşümünde karşılaştırılmıştır.

Önerilen: