Mündəricat:

Arduino: Tezlik Dönüşümü (DFT): 6 addım
Arduino: Tezlik Dönüşümü (DFT): 6 addım

Video: Arduino: Tezlik Dönüşümü (DFT): 6 addım

Video: Arduino: Tezlik Dönüşümü (DFT): 6 addım
Video: Arduino Robot Örnek 2024, Iyul
Anonim
Arduino: Tezlik Dönüşümü (DFT)
Arduino: Tezlik Dönüşümü (DFT)

Bu proqram, arduino -da parametrlər üzərində meyilli nəzarət ilə tezlik çevrilməsini hesablamaqdır.

bu FFT deyil

FFT, DFT -ni daha az vaxtda həll etmək üçün istifadə olunan alqoritmdir.

FFT kodu burada tapa bilərsiniz.

Addım 1: Necə Çalışır (konsepsiya):

Necə işləyir (konsepsiya)
Necə işləyir (konsepsiya)
Necə işləyir (konsepsiya)
Necə işləyir (konsepsiya)

Verilən tezlik çevrilməsi proqramı, tələb olunan çıxış üzərində böyük nəzarət təmin edir. Bu proqram, məlumat dəsti üçün verilən girişdə istifadəçi tərəfindən verilən tezlik aralığını qiymətləndirir.

  • Şəkildə, test edilməli olan f2 və f5 adlı iki tezlikdən ibarət bir məlumat dəsti. f2 və f5 iki tezlik üçün təsadüfi adlardır, nisbətən daha yüksək tezlik üçün daha yüksək rəqəmlərdir. burada daha kiçik frekans f2 daha yüksək amplituda və f5 daha kiçik amplitüdə malikdir.
  • Riyazi olaraq göstərilə bilər ki, fərqli frekansa malik iki harmonik məlumat toplusunun vurulmasının yekunu sıfıra bərabərdir (daha çox məlumat sayı meyilli nəticəyə səbəb ola bilər). Bizim vəziyyətimizdə, əgər bu iki vurma tezliyi eyni (və ya çox yaxın) tezliyə malikdirsə, vurma cəmi sıfırdan çox deyil, burada amplitud məlumatların amplitüdündən asılıdır.
  • verilmiş müəyyən bir tezliyi aşkar etmək üçün müxtəlif test tezlikləri ilə vurula bilər və nəticədə bu frekansın bir komponenti verilə bilər.

Addım 2: Necə Çalışır (Kodda):

Necə Çalışır (Kodda)
Necə Çalışır (Kodda)
Necə Çalışır (Kodda)
Necə Çalışır (Kodda)

bu verilənlər üçün (f2+f5) f1 -dən f6 -a qədər tək -tək vurulur və cəmin dəyəri qeyd olunur. bu yekun məbləğ həmin tezliyin məzmununu təmsil edir. İstirahət (uyğun gəlməyən) tezlik ideal olaraq sıfır olmalıdır, lakin real halda bu mümkün deyil. cəmi sıfır etmək üçün sonsuz sayda məlumat dəstinə sahib olmaq lazımdır.

  • f1 -dən f6 -a qədər olan sınaq tezliyi və hər nöqtədə məlumat dəsti ilə vurulması göstərilir.
  • ikinci rəqəmdə, hər bir tezlikdə bu çarpmanın cəmlənməsi qrafikə salınmışdır. 1 və 5 -də iki zirvə müəyyən edilə bilər.

təsadüfi bir məlumat üçün eyni yanaşma istifadə edərək, bu qədər tezliyi qiymətləndirə və məlumatların tezlik məzmununu təhlil edə bilərik.

Addım 3: Tezlik Analizi üçün Koddan istifadə edin:

Tezlik Analizi üçün Koddan istifadə
Tezlik Analizi üçün Koddan istifadə

Məsələn, kvadrat dalğasının DFT -ni tapmaq üçün bu kodu istifadə edək.

göstərilən şəkildəki kimi döngədən sonra ilk əlavə edilmiş kodu (dft funksiyası) yapışdırın

ƏSASLANMASI GEREKEN 8 ŞƏRT

  1. dft alınması lazım olan bir sıra
  2. bir sıra ölçüsü
  3. milliSECONDS olaraq 2 oxu arasındakı vaxt aralığı
  4. Hz -də tezlik aralığının aşağı dəyəri
  5. Hz -də tezlik aralığının yuxarı dəyəri
  6. tezlik aralığı üçün addımların ölçüsü
  7. bir siqnalın təkrarlanması (minimum 1) daha çox nömrə dəqiqliyi, lakin həll müddətinin artması
  8. pəncərə funksiyası:

    0 pəncərə yoxdur1 düz üst pəncərə üçün 2 hann pəncərə 3 üçün pəncərə çəkmək üçün

(Pəncərəni seçməklə bağlı heç bir fikriniz yoxdursa, default olaraq saxlayın 3)

nümunə: dft (a, 8, 0.5, 0, 30, 0.5, 10, 3); burada a, 0 Hz -dən 30 Hz -ə qədər 0.5 addım (0, 0.5, 1, 1.5,…, 29, 29.5, 30) 10 təkrarlama və çəkic pəncərəsi ilə yoxlanılacaq 8 elementli bir sıradır.

burada arduino idarə edə biləcəyi qədər daha böyük ölçülü bir sıra istifadə etmək mümkündür.

Addım 4: Çıxış:

Çıxış
Çıxış
Çıxış
Çıxış

fikir bildirsəniz

Serial.print (f); Serial.print ("\ t");

koddan serial plotter tezlik spektrinin təbiətini verəcək, əgər yoxsa Serial monitor amplitudası ilə tezlik verərdi.

Addım 5: Müxtəlif Pəncərə və Nümunə Ölçülərinin Yoxlanması:

Müxtəlif Pəncərə və Nümunə Ölçülərinin yoxlanılması
Müxtəlif Pəncərə və Nümunə Ölçülərinin yoxlanılması

Şəkildə sinus dalğasının tezliyi fərqli parametrlərdən istifadə etməklə ölçülür.

Addım 6: Nümunə:

Misal
Misal

SciLab və arduino istifadə edərək məlumatların çevrilməsi rəqəmlə müqayisə olunur.

Tövsiyə: