Isi kandungan:
- Langkah 1: Senarai Peralatan (ambil Pic dari Dewan dan Kevin's Comp)
- Langkah 2: Gambaran keseluruhan
- Langkah 3: Fail Wav
- Langkah 4: Python- Kegunaan Pylab dan Scipy
- Langkah 5: Python-Sampling dan FFT (Tunjukkan Kod dan Hasilnya)
- Langkah 6: Vivado (Pembanding)
- Langkah 7: GAMBAR DASAR 3 Papan
- Langkah 8: Vivado (7 Segmen Decoder With Multiplexing)
- Langkah 9: Vivado (Menggabungkan Komponen)
Video: Penala: 9 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Projek ini dirancang untuk membuat gitar tuner menggunakan Vivado dan paparan 7 segmen. Setelah penala menemui frekuensi bunyi yang dimasukkan, penala akan membandingkan nilai tersebut dengan senarai nilai keras untuk frekuensi tepat yang dikenali sebagai frekuensi standard untuk nada nada yang betul. Kemudian penala akan memaparkan seberapa dekat atau jauhnya suara yang anda masukkan dari nota yang anda inginkan. Apa yang menarik ialah gelombang bunyi adalah gabungan pelbagai bentuk gelombang sinusoidal dengan komponen nyata dan khayalan. Walaupun ini nampaknya sukar untuk ditangani oleh mereka yang tidak dikenali, ada beberapa cara yang kita masih dapat menganalisis gelombang dengan nilai nyata dan khayalan.
Demo:
Langkah 1: Senarai Peralatan (ambil Pic dari Dewan dan Kevin's Comp)
Mula-mula kita memerlukan papan Basys 3 dan komputer yang menyokong program berikut. Garageband / Audacity atau DAW lain - untuk merakam melalui mikrofon dan mengeksport wavfiles
Python - dapat menggunakan pylab dan scipy untuk pengambilan sampel dan fft
Vivado - untuk menyambung ke papan Basys 3 dan melihat hasilnya secara visual
Langkah 2: Gambaran keseluruhan
Penala terdiri daripada beberapa komponen penting: mikrofon, sampler, FFT (Fast Fourier Transform), pembanding, penyahkod dan paparan. Tujuan mikrofon adalah untuk menangkap bentuk gelombang input. Pensampel menerima isyarat output mikrofon dan menggunakan FFT untuk menukar isyarat menjadi output magnitud dalam frekuensi. Kemudian dengan menggunakan output FFT dan mencari magnitud maksimum dan frekuensi yang berkaitan dengannya dibahagi dengan 2, frekuensi yang berkaitan dengan nada gelombang dapat dijumpai. Nilai itu boleh masuk ke dalam pembanding. Ia kemudian dibandingkan dengan jadual pencarian, yang telah menetapkan nilai frekuensi untuk nada sempurna semua nota. Pembanding diberi input untuk nota yang diinginkan, yang kemudiannya dapat mencocokkan nota yang diinginkan dengan frekuensi yang betul dari jadual pencarian. Kemudian pembanding akan memilih nota dengan frekuensi terdekat dengan frekuensi maksimum. Pembanding akan membandingkan kedua-dua nilai dan melihat nilai frekuensi dekat dengan yang dikehendaki dan kemudian memasukkan data tersebut ke dalam isyarat. Pembanding akan menghantar isyarat itu ke penyahkod, di mana penyahkod akan memilih input untuk anod paparan 7 segmen untuk menunjukkan ketepatan nota.
Langkah 3: Fail Wav
Pada langkah ini, kita akan mengambil file wav dari nada dan berusaha mengeluarkan frekuensi nada itu.
Mula-mula anda memerlukan fail wav nota. Dalam contoh ini kita akan menggunakan fail wav stereo 16 bit dengan kadar persampelan 44.1kHz. Ini boleh dibuat dalam DAW seperti Garageband atau dimuat turun. Untuk contoh ini, gelombang sinus A4 440Hz yang dihasilkan oleh kami di Garageband boleh dimuat turun di sini.
Langkah 4: Python- Kegunaan Pylab dan Scipy
Kami menggunakan perpustakaan Python untuk melakukan "Transformasi Fourier Cepat". Sumber dalam talian membolehkan kita meniru dan melihat apa yang berguna dalam pylab dan scipy.
1. Sekiranya anda belum memasang pylab atau scipy, anda perlu melakukannya. Atau, Pycharm mempunyai ciri yang sangat baik, ketika cuba mengimpor pylab atau scipy, ada garis bawah yang bercerita yang memberitahu anda bahawa anda belum memasang perpustakaan. Anda kemudian boleh memasangnya secara langsung dengan menekan bola lampu merah (ia akan muncul semasa anda meletakkan kursor anda di dekat garis bawah yang licin).
2. Menggunakan fungsi scipy.io.wavfile.read, baca dan tarik data dari contoh fail wav. Jalankan data melalui pylab.fft, ia akan mengembalikan senarai besarnya kekuatan anda.
3. Kemudian cari maksimum kuasa yang dikeluarkan dari senarai. Cari indeks senarai di mana kuasa maksimum berlaku kerana cara yang lebih cepat untuk mencari frekuensi apa yang berkaitan dengan kuasa itu. Akhirnya pulangkan frekuensi maksimum. Oleh kerana kita kemudiannya perlu memasukkan isyarat frekuensi binari ke dalam kod VHDL, kita dapat menukar frekuensi dalam float menjadi binari, dan mengembalikannya.
Langkah 5: Python-Sampling dan FFT (Tunjukkan Kod dan Hasilnya)
Dalam langkah ini, kredit penuh pergi ke pautan ini di bawah untuk pensampelan dan FFT.
samcarcagno.altervista.org/blog/basic-sound… Kod Kami:
Setelah pylab dan scipy dipasang, fail wav dapat diimport dan dibaca.
dari pylab import * dari scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Kemudian snd.shape mewakili titik sampel dan bilangan saluran. Dalam kes kami, titik sampel bergantung pada berapa lama wavfile dan # saluran adalah 2 kerana stereo.
Kemudian snd = snd / (2. ** 15) …… xlabel ('Time (ms)')
menyusun isyarat masa ke dalam tatasusunan.
Kemudian FFT membuat array dalam frekuensi dan besarnya (Kuasa)
Kemudian melalui sebentar gelung magnitud maksimum dan frekuensi yang berkaitan dengannya dijumpai. Frekuensi itu / 2 mewakili nada gelombang.
Kemudian menggunakan kod kita sendiri, bilangan bulat yang mewakili frekuensi ditukar menjadi nombor binari 12 bit dan fail teks dibuat dengan nombor di dalamnya.
Langkah 6: Vivado (Pembanding)
Di bahagian proses ini, kita memerlukan pembanding untuk membandingkan dua frekuensi input.
1. Membuat pembanding untuk membandingkan sama ada frekuensi input (penerima) lebih tinggi, lebih rendah atau dalam nota julat margin 2 Hz. (penala gitar khas berkisar antara e2 hingga g5, 82 Hz hingga 784 Hz).
2. Ketika membuat margin 2 Hz, kami menggunakan RCA untuk menambahkan "000000000010" ke frekuensi penerima, dan periksa di mana ia masih terlalu rendah untuk input pengguna. Sekiranya demikian, isyarat bit tunggal “tinggi” <= ‘0’, “rendah” <= ‘1’. Kemudian kami menambahkan "000000000010" ke input pengguna untuk melihat apakah input penerima lebih tinggi daripada itu. Sekiranya demikian, “tinggi” <= ‘1’, “rendah” <= ‘0’. Kedua-dua kes tidak akan mengembalikan ‘0’.
3. Oleh kerana bahagian modul seterusnya memerlukan data 4-bit khusus untuk memberitahu apa nota penerima, bukan hanya mengembalikan 2 output perbandingan (rendah dan tinggi), kita perlu mengembalikan kod bersekutu ke nota, yang dikaitkan dengan kekerapannya. Sila rujuk carta di bawah:
C | 0011
C # | 1011
D | 0100
D # | 1100
E | 0101
F | 0110
F # | 1110
G | 0111
G # | 1111
A | 0001
A # | 1001
B | 0010
Menggunakan beberapa pernyataan if untuk mengkategorikannya menjadi nota dan mengekodkannya kepada apa yang diperlukan untuk penyahkod tujuh segmen.
Langkah 7: GAMBAR DASAR 3 Papan
Langkah 8: Vivado (7 Segmen Decoder With Multiplexing)
Semuanya memerlukan paparan. Ini adalah faktor penting yang menentukan nilai reka bentuk. Oleh itu, kita perlu membuat paparan menggunakan penyahkod tujuh segmen, yang memungkinkan kita menunjukkan kemampuan kita untuk merancang penala pada Papan B. Juga, ini akan membantu kita dalam menguji dan melakukan debug.
Decoder tujuh segmen mengandungi input bernama Note, low, high, dan CLK, sambil mengeluarkan SSEG, AN, dan Fiz_Hz. Terdapat gambar rajah blok di atas untuk membantu kita memahami reka bentuknya.
Tujuan untuk mempunyai dua input rendah dan tinggi yang terpisah adalah untuk memberi kebebasan kepada pereka pembanding untuk memanipulasi sama ada frekuensi suara (gelombang) lebih tinggi atau lebih rendah daripada frekuensi input (Fix_Hz) yang ingin dibandingkan oleh pengguna. Di samping itu, output SSEG mewakili paparan tujuh segmen dan titik seterusnya sementara AN mewakili anod yang mana set tujuh segmen dipaparkan untuk menyala.
Dalam penyahkod tujuh segmen ini, jam (CLK) memainkan peranan penting dalam memaparkan dua nilai yang berbeza pada dua atau lebih anod yang berbeza. Oleh kerana Dewan tidak membenarkan kita menampilkan dua nilai yang berbeza pada waktu yang sama, kita harus menggunakan multiplexing untuk menampilkan nilai satu per satu, sementara beralih ke nilai lain cukup cepat sehingga mata kita tidak dapat menangkapnya. Di sinilah input CLK dimainkan.
Untuk maklumat lebih lanjut, sila rujuk kod sumber.
Langkah 9: Vivado (Menggabungkan Komponen)
Dengan setiap modul (penerima python, pembanding, penyahkod tujuh segmen, dll.) Selesai, kami kemudian mengumpulkan menggunakan modul yang lebih besar. Sama seperti gambar di bahagian "Over view" yang ditunjukkan, kami menghubungkan setiap isyarat dengan sewajarnya. Untuk rujukan, sila periksa kod sumber kami "SW_Hz.vhd".
Terima kasih. Semoga anda menikmati.
Disyorkan:
Cara Membuat Penala Gitar Arduino: 4 Langkah
Cara Membuat Arduino Guitar Tuner: Ini adalah petunjuk untuk membuat gitar tuner daripada Arduino dan beberapa komponen lain. Dengan pengetahuan asas mengenai elektronik dan pengekodan, anda akan dapat membuat penala gitar ini. Perkara pertama yang pertama anda harus tahu apa bahannya
Sistem Makluman Tempat Letak Balik Kereta Arduino - Langkah demi Langkah: 4 Langkah
Sistem Makluman Tempat Letak Balik Kereta Arduino | Langkah demi Langkah: Dalam projek ini, saya akan merancang Litar Sensor Tempat Letak Kereta Berbalik Arduino yang ringkas menggunakan Sensor Ultrasonik Arduino UNO dan HC-SR04. Sistem amaran Car Reverse berasaskan Arduino ini dapat digunakan untuk Navigasi Autonomi, Robot Ranging dan rangkaian lain
Pengangkatan Akustik Dengan Arduino Uno Langkah demi Langkah (8-langkah): 8 Langkah
Acoustic Levitation With Arduino Uno Step-by Step (8-step): transduser suara ultrasonik L298N Dc power adaptor wanita dengan pin dc lelaki Arduino UNOBreadboardBagaimana ini berfungsi: Pertama, anda memuat naik kod ke Arduino Uno (ia adalah mikrokontroler yang dilengkapi dengan digital dan port analog untuk menukar kod (C ++)
Penala Ukelele Menggunakan LabView dan NI USB-6008: 5 Langkah
Penala Ukelele Menggunakan LabView dan NI USB-6008: Sebagai projek pembelajaran berasaskan masalah untuk LabVIEW & Kursus instrumentasi di Humber College (Teknologi Kejuruteraan Elektronik), saya membuat penala ukulele yang akan mengambil input analog (nada rentetan ukulele), mencari frekuensi asas
Menggodam Penala TV untuk Membaca Foto Bumi Dari Satelit: 7 Langkah (dengan Gambar)
Meretas Penala TV untuk Membaca Foto Bumi Dari Satelit: Terdapat banyak satelit di atas kepala kita. Tahukah anda, bahawa hanya dengan menggunakan komputer, TV Tuner dan antena DIY mudah anda, anda boleh menerima penghantaran dari mereka? Contohnya gambar bumi masa nyata. Saya akan menunjukkan kepada anda caranya. Anda memerlukan: - 2 w