Isi kandungan:

Penganalisis Spektrum Audio Breadboard MSP430: 6 Langkah
Penganalisis Spektrum Audio Breadboard MSP430: 6 Langkah

Video: Penganalisis Spektrum Audio Breadboard MSP430: 6 Langkah

Video: Penganalisis Spektrum Audio Breadboard MSP430: 6 Langkah
Video: Logic Gates Learning Kit #2 - Transistor Demo 2024, November
Anonim
Image
Image
Penganalisis Spektrum Audio Breadboard MSP430
Penganalisis Spektrum Audio Breadboard MSP430

Projek ini berasaskan mikrofon dan memerlukan komponen luaran yang minimum. Sel duit syiling 2 x LR44 digunakan supaya seluruh struktur berfungsi di dalam papan roti mini 170 ikat. ADC10, TimerA mengganggu LPM bangun, TimerA PWM seperti output, penggunaan butang, aritmetik integer digunakan dan ditunjukkan.

ciri-ciri

  • 8 bit bilangan bulat FFT 16 sampel pada pemisahan 500Hz
  • menunjukkan 8 amplitud 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K tidak linear
  • peta separa logaritma untuk menunjukkan amplitud, terhad kerana resolusi telah dikurangkan untuk 8 bit FFT
  • TLC272 satu tahap amplifier mikrofon pada kenaikan 100x kali 100x (anda boleh mengalami tahap / 2)
  • menu boleh dipilih tetingkap Hamming
  • menu menyesuaikan kecerahan 4 tahap
  • menu menyesuaikan 8 peringkat kadar sampel / masa tindak balas
  • Sel duit syiling 2 x LR44 berkuasa "on board"

Langkah 1: Memperoleh Bahagian

Berikut adalah perkara yang diperlukan untuk projek ini

  • MSP430G2452 (cip tambahan dari TI Launchpad G2, atau mana-mana MC 20 siri MSP430G 4K 20 pin)
  • papan roti mini 170 dasi atau papan perf untuk pra-pembinaan
  • TLC272 Dual op-amp
  • mikrofon electret mini
  • 47k (pull-up), 100k, 2 x 10k, 1k perintang
  • 1 x 0.1uF
  • wayar pelompat
  • header pin lelaki baris dua untuk digunakan untuk pemegang bateri
  • 2 x bateri sel syiling LR44

Langkah 2: Reka Letak Komponen

Projek ini akan dibina di atas papan roti mini 170 ikat. Susun atur komponen adalah seperti di bawah. Yang menarik perhatian ialah matriks LED 8x8 diletakkan di atas MSP430 MCU. Selain komponen, terdapat juga kabel jumper penghubung yang digambarkan oleh watak "+ ------ +".

G V + Gnd (susun atur 1 peringkat) KAMI MENGGUNAKAN LAYOUT INI + ==================================== ================= + c0 ………… c7 | MIC……. + ----- + + - +…. | r0 o o o o o o o | o || o + ----- [100k] --------------- +….. | r1 X o o o o o o |. + -------------- + - +. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o |…… |.. | b6 a7 | | c0 dan r1 berkongsi pin yang sama dan tidak akan menunjukkan | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | * kemungkinan aplikasi mempunyai c6 + c0 + r1 | | | V + | | | G b6 b7 T R a7 a6 b5 b4 b3 | | ini akan membebaskan b6 untuk jam 32khz xtal | | | TLC272 | | | | | | | keluar - + G | | | + a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | | o || o o o. + - +.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o- [10k] - o……… | |. o- [1k] o o o………._. | | o ---- [10k] ----------- o……. o o | + ================================================= ==== +.1uF 100k 10k Tombol ADC + ----------------- +

kami menggunakan satu tahap TLC272 sahaja

Langkah 3: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan

Anda boleh mula meletakkan komponen berdasarkan susun atur papan roti. Oleh kerana itu seni ASCII, jadi mungkin tidak begitu jelas. Anda boleh memasangkan gambar dengan langkah ini untuk mengenal pasti semua sambungan.

Perhatian mesti diambil untuk meletakkan cip IC. Biasanya terdapat titik di salah satu sudut untuk menunjukkan pin 1 peranti.

Saya pernah menggunakan wayar kabel ethernet CAT5 dan mereka sangat mudah untuk mengerjakan projek papan roti. Sekiranya anda mempunyai kabel CAT5 lama, anda boleh memotongnya dan anda akan mendapati terdapat 6 wayar berpintal di dalamnya. Ia sesuai untuk papan roti.

Langkah 4: Menyusun dan Memuatkan Firmware

Kod sumber biasanya terdapat di repositori github saya.

Untuk projek ini, fail sumber C tunggal nfft.c digabungkan di repositori koleksi papan roti saya. Anda hanya memerlukan nfft.c

Saya menggunakan mps430-gcc untuk menyusun firmware tetapi semestinya sesuai dengan TI CCS. Anda boleh mengelakkan semua masalah memasang IDE atau pengkompil dengan pergi ke awan TI CCS, yang merupakan IDE berasaskan web. Ia bahkan akan memuat turun firmware ke peranti sasaran anda.

Ini adalah contoh perintah kompilasi w / suis

msp430 - gcc -Os -Wall -fungsi-bahagian -fdata-bahagian -fno-sebaris-kecil-fungsi -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- bahagian -I / energia-0101E0016 / perkakasan / msp430 / teras / msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Saya menggunakan TI Launchpad G2 sebagai pengaturcara untuk memprogram MCU.

Langkah 5: Fahami Litar

Fahami Litar
Fahami Litar
Fahami Litar
Fahami Litar

Skema litar ditunjukkan di bawah

MSP430G2452 atau yang serupa, memerlukan 4K Flash TLC272 Dual Op-Amp, GBW @ 1.7Mhz, @ x100 gain, lebar jalur sehingga 17Khz

* kami menggunakan satu tahap TLC272 sahaja

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1 - + | | | |. | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | | _ | | | + -1 | ----. Vcc | 8- + | | | |. |. |. | ^.--- | 7 | | 16- + | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _ + / / / | | / | --- (lihat susun atur papan roti) |.1u | | | | | / _ + / | | / | ------_ + - || --- | - [1k] - + - 2 | --- + | | | | | 15 GPIO | | | | + ---------- 3 | ----- + + - | - | 6 | P1.1-P1.7 | | 8x8 | | | + -4 | Gnd + - | 5 | P2.0-P2.7 | | LED | | + | | --------------- | | | matriks | ((O)) |. | | / | | _ | | MIC | | 10k | + -20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

Memandu LED

Matriks LED terdiri daripada 8 x 8 elemen. Mereka dipacu oleh 15 pin GPIO. Mereka adalah baris berganda dengan skema 8 dan 8 lajur. Oleh kerana hanya ada 15 pin setelah kami menggunakan 1 pin untuk input ADC, multiplexing mempunyai baris 1 dan lajur 0 yang berkongsi satu pin. Ini bermaksud bahawa LED tertentu pada baris 1 dan lajur 0 tidak dapat menyala. Ini adalah kompromi kerana tidak ada pin GPIO yang cukup untuk menggerakkan semua elemen LED.

Rakaman Bunyi

Suara ditangkap melalui mikrofon kondensor onboard di Educational BoosterPack. Oleh kerana isyarat mikrofon kecil, kita perlu memperkuatnya ke tahap yang msp430 ADC10 dapat menggunakan resolusi yang wajar. Saya telah menggunakan penguat op-amp dua peringkat untuk tujuan ini.

Penguat op-amp terdiri daripada dua peringkat, masing-masing tanpa keuntungan sekitar 100x. Saya telah mengadopsi TLC272 kerana ia juga merupakan bahagian yang sangat biasa dan ia berfungsi dengan 3V. Lebar jalur keuntungan sekitar 1.7Mhz bermaksud bahawa untuk keuntungan 100x, kita hanya dapat menjamin ia akan berfungsi dengan baik (iaitu mengekalkan keuntungan yang kita mahukan) di bawah 17Khz. (1.7Mhz / 100).

Pada asalnya saya berhasrat untuk membuat penganalisis spektrum ini hingga 16-20Khz, tetapi pada akhirnya saya dapati sekitar 8Khz cukup baik untuk menunjukkan muzik. Ini dapat diubah dengan menggantikan LM358 w / sesuatu yang dinilai audio dan mengubah kadar persampelan. Cari lebar jalur keuntungan op-amp yang anda pilih.

Persampelan dan FFT

Fungsi FFT yang digunakan adalah kod "fix_fft.c" yang telah diadopsi oleh banyak proyek, ia telah berjalan di internet selama beberapa tahun. Saya telah mencuba versi 16 bit dan versi 8 bit. Akhirnya saya memilih versi 8 bit kerana untuk tujuan saya, saya tidak melihat kemajuan besar pada versi 16 bit.

Saya tidak mempunyai pemahaman yang baik mengenai mekanisme FFT kecuali bahawa ia adalah domain masa ke frekuensi penukaran domain. Ini bermaksud kadar (masa) sampel suara, setelah memberi makan kepada fungsi pengiraan FFT, akan mempengaruhi frekuensi amplitud yang saya peroleh sebagai hasilnya. Oleh itu, dengan menyesuaikan kadar suara sampel, saya dapat menentukan jalur frekuensi sebagai hasilnya.

TimerA 0 CCR0 digunakan untuk menjaga masa pengambilan sampel. Mula-mula kita menentukan kiraan yang kita perlukan untuk mencapai frekuensi pita (sesuai dengan kadar jam DCO kita 16Mhz). iaitu TA0CCR0 ditetapkan ke (8000 / (BAND_FREQ_KHZ * 2)) - 1; di mana BAND_FREQ_KHZ adalah 8 untuk saya. Ia boleh diubah jika anda mendapat op-amp yang lebih baik dan / atau menginginkannya berbeza.

Jalur Frekuensi dan Penskala Amplitud

Firmware memproses 16 band dengan sekali sapuan, dan masa tangkapan menghasilkan pemisahan 500Hz antara bank-bank ini. Matriks LED terdiri daripada 8 lajur dan hanya akan memaparkan 8 jalur / amplitud. Daripada memaparkan satu setiap dua jalur, senarai jalur frekuensi tidak linear digunakan untuk menunjukkan jalur frekuensi yang lebih dinamik (dari segi muzik). Senarai adalah jurang 500Hz di hujung rendah, jurang 1KHz di jalur tengah dan jalur 1.5Khz di tahap tertinggi.

Amplitud pita individu diturunkan ke 8 tahap, yang diwakili oleh jumlah 'titik' mendatar pada paparan matriks LED. Tahap amplitud dikecilkan melalui peta tidak linear yang menerjemahkan hasil FFT menjadi salah satu daripada 8 titik. Sejenis penskalaan logaritma digunakan kerana ia menggambarkan persepsi kita mengenai tahap bunyi.

Terdapat logik AGC bawaan dan penganalisis spektrum akan cuba menurunkan tahap amplitud apabila terdapat beberapa tahap puncak yang dikesan pada kitaran sebelumnya. Ini dilakukan dengan jadual perbandingan pembaris gelangsar.

Langkah 6: Mengendalikan Peranti

  • Tekan kekunci pendek dalam mod paparan melancarkan paparan tanpa titik, satu titik, 2 titik, dan 3 titik.
  • Tekan lama memasuki mod persediaan, tekan lama seterusnya berputar melalui menu.
  • Item menu kitaran melalui 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
  • Dalam mod persediaan 'Hamming Window', tekan pendek kitaran tanpa hamming, hamming 1, hamming 2, hamming 3, tekan lama mengesahkan pengaturan.
  • Dalam mod persediaan 'Dimmer', tekan pendek kitaran melalui tahap kecerahan yang tersedia dari 0 hingga 3, tekan lama mengesahkan tetapan.
  • Dalam mod persediaan 'Sampling / Refresh rate', tekan pendek kitaran melalui kadar penyegaran yang tersedia dari 0 hingga 7, 0 bermaksud tidak ada penundaan, tekan lama mengesahkan pengaturan.
  • Multiplexing segmen led merangkumi kelewatan masa untuk mengimbangi perbezaan kecerahan untuk setiap baris.

Disyorkan: