Daftar Isi:

MSP430 Breadboard Audio Spectrum Analyzer: 6 Langkah
MSP430 Breadboard Audio Spectrum Analyzer: 6 Langkah

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 Langkah

Video: MSP430 Breadboard Audio Spectrum Analyzer: 6 Langkah
Video: MSP430 Audio Spectra Analyzer 2024, Desember
Anonim
Image
Image
MSP430 Breadboard Audio Spectrum Analyzer
MSP430 Breadboard Audio Spectrum Analyzer

Proyek ini berbasis mikrofon dan membutuhkan komponen eksternal minimal. 2 x sel koin LR44 digunakan sehingga saya dapat membuat seluruh struktur bekerja dalam batas-batas 170 papan tempat memotong roti mini tie-point. ADC10, TimerA interupsi LPM bangun, TimerA PWM seperti output, penggunaan tombol, aritmatika bilangan bulat digunakan dan didemonstrasikan.

Fitur

  • 8 bit integer FFT 16 sampel pada pemisahan 500Hz
  • menunjukkan 8 amplitudo 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K non-linear
  • peta logaritma parsial untuk menunjukkan amplitudo, terbatas karena resolusi telah dikurangi untuk 8 bit FFT
  • TLC272 satu tahap mic menguatkan pada 100x kali 100x gain (Anda dapat mengalami w/2 tahap)
  • menu jendela Hamming opsional yang dapat dipilih
  • menu menyesuaikan 4 tingkat kecerahan
  • menu sesuaikan 8 level sample rate / response time
  • 2 x LR44 sel koin bertenaga "on board"

Langkah 1: Dapatkan Suku Cadang

Berikut ini adalah apa yang dibutuhkan untuk proyek ini

  • MSP430G2452 (chip tambahan dari TI Launchpad G2, atau MCU seri MSP430G 4K 20 pin apa pun)
  • 170 papan tempat memotong roti mini atau papan perf tie-point untuk konstruksi pre-amp;
  • TLC272 Op-amp ganda
  • mikrofon electret mini
  • 47k (pull-up), 100k, 2 x 10k, resistor 1k
  • 1 x 0.1uF
  • kabel jumper
  • header pin pria baris ganda yang akan digunakan untuk dudukan baterai
  • 2 x baterai sel koin LR44

Langkah 2: Rencanakan Tata Letak Komponen

Proyek ini akan dibangun di atas 170 papan tempat memotong roti mini tie-point. Tata letak komponen seperti yang ditunjukkan di bawah ini. Catatan khusus adalah bahwa matriks LED 8x8 ditempatkan di atas MCU MSP430. Selain komponen, ada juga kabel jumper penghubung yang digambarkan dengan karakter "+------+".

G V+ Gnd (tata letak 1 tahap) KAMI MENGGUNAKAN LAYOUT INI +==================================== =================+ c0…………c7 | mikrofon……. +-----+ +--+…. | r0 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 |…… |.. | b6 a7 | | c0 dan r1 berbagi pin yang sama dan tidak akan menampilkan | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | *kemungkinan aplikasi untuk memiliki c6 + c0 + r1 | | |V+ | | |G b6 b7 T R a7 a6 b5 b4 b3| | ini akan membebaskan b6 untuk jam xtal 32khz | | | TLC272 | | | | | | | keluar - + G| | |+ a0 a1 a2 a3 a4 a5 b0 b1 b2| | | +. +--+--+--+ | +--+--+--+--+--+--+--+--+--+ | | o||o oo. +--+.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. o-[10k]--o……… | |. o-[1k]o oo………._. | | o----[10k]-----------o……. o o | +================================================== ====+.1uF 100k 10k Tombol ADC +-----------------+

kami hanya menggunakan satu tahap TLC272

Langkah 3: Perakitan

perakitan
perakitan
perakitan
perakitan

Anda dapat mulai menempatkan komponen berdasarkan tata letak papan tempat memotong roti. Karena ini seni ASCII, jadi mungkin tidak terlalu jelas. Anda dapat memasangkan dengan foto dalam langkah ini untuk mengidentifikasi semua koneksi.

Perawatan harus diambil untuk posisi chip IC. Biasanya ada titik di salah satu sudut untuk menunjukkan pin 1 perangkat.

Saya telah menggunakan kabel kabel ethernet CAT5 dan sangat mudah untuk bekerja pada proyek papan tempat memotong roti. Jika Anda memiliki kabel CAT5 lama, Anda dapat memotongnya dan Anda akan menemukan ada 6 kabel bengkok di dalamnya. Mereka sempurna untuk papan tempat memotong roti.

Langkah 4: Kompilasi dan Muat Firmware

Kode sumber biasanya berada di repositori github saya.

Untuk proyek khusus ini, file sumber C tunggal nfft.c dibundel dalam repositori koleksi papan tempat memotong roti saya. Anda hanya perlu nfft.c

Saya menggunakan mps430-gcc untuk mengkompilasi firmware tetapi harus cocok dengan TI CCS. Anda dapat menghindari semua masalah dalam menginstal IDE atau compiler dengan membuka TI CCS cloud, yang merupakan IDE berbasis web. Ia bahkan akan mengunduh firmware ke perangkat target Anda.

Ini adalah contoh perintah kompilasi dengan switch

msp430--gcc -Os -Wall -ffunction-sections -fdata-sections -fno-inline-small-functions -Wl, -Map=nfft.map, --cref -Wl, --relax -Wl, --gc- bagian -I/energia-0101E0016/hardware/msp430/cores/msp430 -mmcu=msp430g2553 -o nfft.elf nfft.c

Saya menggunakan TI Launchpad G2 sebagai programmer untuk memprogram MCU.

Langkah 5: Pahami Sirkuit

Pahami Sirkuitnya
Pahami Sirkuitnya
Pahami Sirkuitnya
Pahami Sirkuitnya

Skema rangkaian disajikan di bawah ini:

MSP430G2452 atau serupa, perlu 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 gain, bandwidth hingga 17Khz

* kami hanya menggunakan satu tahap TLC272

._.

| MSP430G2452 | Vcc | | | +-----------------------2|ADC0 |1--+ | | | |. | Vcc | | | | pull-up (47k) Vcc Vcc | --------------- | | | |_| | | +-1|----. Vcc|8-+ | | | |. |. |. | ^.---|7 | |16-+ | |10k | |10k | | | / / ^ | | | |_| |_| 100k|_| | /_+\ / / | | /|--- (lihat tata letak papan tempat memotong 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 \|-------- | |_| | | |_| _|_ _|_ _|_ _|_ /// /// /// ///

Mengemudi LED

Matriks LED terdiri dari 8 x 8 elemen. Mereka digerakkan oleh 15 pin GPIO. Mereka digandakan dengan skema 8 baris dan 8 kolom. Karena hanya ada 15 pin setelah kita menggunakan 1 pin untuk input ADC, multiplexing memiliki baris 1 dan kolom 0 yang berbagi satu pin. Ini berarti bahwa LED tertentu pada baris 1 dan kolom 0 tidak dapat menyala. Ini adalah kompromi karena tidak ada cukup pin GPIO untuk menggerakkan semua elemen LED.

Tangkapan Suara

Suara ditangkap melalui mikrofon kondensor terpasang di Educational BoosterPack. Karena sinyal mikrofon kecil, kami perlu memperkuatnya ke tingkat yang dapat digunakan oleh msp430 ADC10 dengan resolusi yang masuk akal. Saya telah menggunakan penguat op-amp dua tahap untuk tujuan ini.

Penguat op-amp terdiri dari dua tahap, masing-masing dengan penguatan sekitar 100x. Saya telah mengadopsi TLC272 karena ini juga merupakan bagian yang sangat umum dan berfungsi dengan 3V. Bandwidth gain sekitar 1.7Mhz berarti bahwa untuk gain kita sebesar 100x, kita hanya dapat menjamin itu akan bekerja dengan baik (yaitu mempertahankan gain yang kita inginkan) di bawah 17Khz. (1.7Mhz / 100).

Awalnya saya bermaksud membuat penganalisis spektrum ini mengukur hingga 16-20Khz, tetapi pada akhirnya saya menemukan sekitar 8Khz cukup baik untuk menampilkan musik. Ini dapat diubah dengan mengganti LM358 dengan audio-rated dan mengubah sampling rate. Cari saja gain bandwidth dari op-amp yang Anda pilih.

Pengambilan sampel dan FFT

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

Saya tidak memiliki pemahaman yang baik tentang mekanisme FFT kecuali bahwa ini adalah konversi domain waktu ke domain frekuensi. Itu berarti laju (waktu) sampel suara, setelah dimasukkan ke fungsi perhitungan FFT, akan mempengaruhi frekuensi amplitudo yang saya dapatkan sebagai hasilnya. Jadi dengan menyesuaikan kecepatan sampel suara, saya dapat menentukan pita frekuensi sebagai hasilnya.

TimerA 0 CCR0 digunakan untuk menjaga waktu sampling. Kami pertama-tama menentukan jumlah yang kami butuhkan untuk mencapai frekuensi pita (sesuai dengan laju jam DCO kami 16Mhz). yaitu TA0CCR0 disetel ke (8000/(BAND_FREQ_KHZ*2))-1; di mana BAND_FREQ_KHZ adalah 8 untuk saya. Itu dapat diubah jika Anda mendapatkan op-amp yang lebih baik dan / atau menginginkannya berbeda.

Pita Frekuensi dan Skala Amplitudo

Proses firmware 16 band pada satu sapuan, dan waktu pengambilan menghasilkan pemisahan 500Hz antara bank-bank ini. Matriks LED terdiri dari 8 kolom dan hanya akan menampilkan 8 pita / amplitudo. Alih-alih menampilkan satu setiap dua pita, daftar pita frekuensi non-linear digunakan untuk menunjukkan pita frekuensi yang lebih dinamis (dalam hal musik). Daftarnya adalah celah 500Hz di ujung bawah, celah 1KHz di pita tengah dan pita 1,5Khz di pita tertinggi.

Amplitudo masing-masing pita diperkecil menjadi 8 level, yang diwakili oleh jumlah 'titik' horizontal pada tampilan matriks LED. Level amplitudo diperkecil melalui peta non-linier yang menerjemahkan hasil FFT menjadi salah satu dari 8 titik. Semacam penskalaan logaritmik digunakan karena paling mewakili persepsi kita tentang tingkat suara.

Ada logika AGC bawaan dan penganalisis spektrum akan mencoba menurunkan level amplitudo ketika ada beberapa level puncak yang terdeteksi pada siklus sebelumnya. Ini dilakukan dengan penggaris geser untuk membandingkan tabel.

Langkah 6: Mengoperasikan Perangkat

  • Tekan tombol pendek dalam mode tampilan berputar melalui tampilan tanpa titik, satu titik, 2 titik, dan 3 titik.
  • Tekan lama memasuki mode pengaturan, tekan lama berikutnya berputar melalui menu.
  • Item menu berputar melalui 'Hamming Window Option', 'Dimmer', 'Sampling / Refresh Rate'.
  • Dalam mode pengaturan 'Jendela Hamming', penekanan singkat siklus melalui no hamming, hamming 1, hamming 2, hamming 3, tekan lama mengkonfirmasi pengaturan.
  • Dalam mode pengaturan 'Peredup', penekanan singkat siklus melalui tingkat kecerahan yang tersedia dari 0 hingga 3, tekan lama untuk mengonfirmasi pengaturan.
  • Dalam mode pengaturan 'Sampling / Refresh rate', penekanan singkat berputar melalui kecepatan refresh yang tersedia dari 0 hingga 7, 0 berarti tidak ada penundaan, tekan lama mengonfirmasi pengaturan.
  • Multiplexing segmen yang dipimpin mencakup penundaan waktu untuk mengkompensasi perbedaan kecerahan untuk masing-masing baris.

Direkomendasikan: