Mundarija:

MSP430 Breadboard audio spektr analizatori: 6 qadam
MSP430 Breadboard audio spektr analizatori: 6 qadam

Video: MSP430 Breadboard audio spektr analizatori: 6 qadam

Video: MSP430 Breadboard audio spektr analizatori: 6 qadam
Video: MSP430 Breadboard Audio Spectrum Analyser 2024, Noyabr
Anonim
Image
Image
MSP430 Ovozli spektr analizatori
MSP430 Ovozli spektr analizatori

Ushbu loyiha mikrofonga asoslangan va minimal tashqi komponentlarni talab qiladi. 2 ta LR44 tanga xujayralari ishlatiladi, shunda men butun tuzilishga ega bo'la oladigan 170 ta mini-plastinka ichida ishlay olaman. ADC10, TimerA to'xtatuvchi LPM uyg'onishi, TimerA PWM kabi chiqish, tugmalardan foydalanish, tamsayı arifmetikasi ishlatiladi va namoyish qilinadi.

Xususiyatlari

  • 500 Gts ajratishda 8 bitli butun sonli FFT 16 namunalari
  • 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K chiziqli bo'lmagan 8 amplitudani ko'rsatadi
  • qisman logarifm xaritasi, amplitudalarni ko'rsatish uchun cheklangan, chunki piksellar sonini 8 bitli FFT uchun
  • TLC272 bir bosqichli mikrofon 100 barobar 100 barobar ko'payadi (siz 2 bosqichni boshdan kechirishingiz mumkin)
  • menyu tanlanadigan ixtiyoriy Hamming oynasi
  • menyu 4 darajali nashrida sozlash
  • menyu 8 darajali namuna tezligi / javob berish vaqtini sozlash
  • 2 ta LR44 tanga kamerasi "bortda" ishlaydi

1 -qadam: qismlarni sotib oling

Loyiha uchun quyidagilar zarur

  • MSP430G2452 (TI Launchpad G2 qo'shimcha chipi yoki har qanday 4K 20 pinli MSP430G seriyali MCU)
  • oldindan o'rnatish uchun 170 ta bog'lanish punktli mini-taxtali yoki taxta
  • TLC272 Dual op-amp
  • mini elektret mikrofon
  • 47k (tortish), 100k, 2x10k, 1k rezistorlar
  • 1 x 0,1 dyuym
  • o'tish simlari
  • Batareya ushlagichi uchun ishlatiladigan ikki qatorli erkak pinli sarlavha
  • 2 x LR44 tanga batareyasi

2 -qadam: Komponentlarning joylashishini rejalashtiring

Loyiha 170 ta tayanch punktli mini-taxtada qurilishi kerak. Komponentlarning joylashuvi quyida ko'rsatilgan. Shuni alohida ta'kidlash kerakki, 8x8 LEDli matritsani MSP430 MCU tepasiga qo'yish kerak. Komponentlardan tashqari, "+------+" belgilar bilan tasvirlangan ulash simlari ham mavjud.

G V + Gnd (1 bosqichli tartib) BIZ BU LAYOUTDAN FOYDALANAMIZ + ================================= =================+ c0 ………… c7 | MIC……. + -----++-+…. | r0 o o o o o o o o | u || o + ----- [100k] --------------- +….. | r1 X o o o o o o o |. +--------------+-+. C7 C6 R1 C0 R3 C5 C3 R0 |. o o o o o o o o o |…… |.. | b6 a7 | | c0 va r1 bir xil pinni ulashadi va ko'rsatilmaydi | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+-+| *c6 + c0 + r1 | bo'lishi mumkin bo'lgan dastur | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | bu 32 kHz chastotali b6 ni bo'shatadi | | | TLC272 | | | | | | | chiqish - + 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 ADK tugmasi+ -----------------+

biz faqat TLC272 ning bir bosqichidan foydalanmoqdamiz

3 -qadam: yig'ish

O'rnatish
O'rnatish
O'rnatish
O'rnatish

Siz komponentlarni taxtaning joylashuvi asosida joylashtirishni boshlashingiz mumkin. ASCII san'ati juda aniq bo'lmasligi mumkin. Siz barcha ulanishlarni aniqlash uchun ushbu bosqichda rasmlarni ulashingiz mumkin.

IC chiplarini joylashtirishga ehtiyot bo'lish kerak. Odatda burchaklarning birida qurilmaning 1 -pinini ko'rsatish uchun nuqta bo'ladi.

Men CAT5 chekilgan kabel simlarini ishlatardim va ular non paneli loyihalarida ishlash juda oson. Agar sizda eski CAT5 kabellari bo'lsa, siz uni kesib qo'yishingiz mumkin va ichingizda 6 ta o'ralgan sim borligini ko'rasiz. Ular non paneli uchun juda mos keladi.

4 -qadam: dasturiy ta'minotni kompilyatsiya qilish va yuklash

Manba kodi odatda mening github omborlarimda joylashgan.

Ushbu maxsus loyiha uchun nfft.c yagona C manba fayli mening taxtali to'plamlar omborimda to'plangan. Sizga faqat nfft.c kerak

Men dasturiy ta'minotni kompilyatsiya qilish uchun mps430-gcc dan foydalanaman, lekin u TI CCS bilan yaxshi ketishi kerak. Internetga asoslangan IDE bo'lgan TI CCS bulutiga kirib, IDE yoki kompilyatorlarni o'rnatish bilan bog'liq barcha muammolardan qochishingiz mumkin. Hatto dasturiy ta'minotni ham maqsadli qurilmangizga yuklab oladi.

Bu w/ switch buyrug'ini tuzishga misol

msp430 -gcc -Os -Wall -funktsiya -bo'limlari -fdata -bo'limlari -fno -inline -kichik -funktsiyalari -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- bo'limlar -I/energia -0101E0016/apparat/msp430/yadrolari/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Men MCUni dasturlash uchun dasturchi sifatida TI Launchpad G2 dan foydalanayapman.

5 -qadam: O'chirish sxemasini tushunish

O'chirish davrini tushunish
O'chirish davrini tushunish
O'chirish davrini tushunish
O'chirish davrini tushunish

O'chirish sxemasi quyida keltirilgan

MSP430G2452 yoki shunga o'xshash, 4K Flash TLC272 Dual Op-Amp, GBW @1.7Mhz, @x100 daromad, tarmoqli kengligi 17KHzgacha

* biz faqat TLC272 ning bir bosqichidan foydalanmoqdamiz

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | tortish (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (non taxtasi tartibini ko'ring) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | matritsa | ((O)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ // _////////

LED haydash

LED matritsasi 8 x 8 elementdan iborat. Ular 15 ta GPIO pinlari bilan boshqariladi. Ular 8 qatorli va 8 ustunli sxemaga ega. ADC kiritish uchun 1 ta pin ishlatilganidan keyin atigi 15 ta pin borligi sababli, multiplexingda bitta pinni ulashadigan 1 -qator va 0 -ustun mavjud. Bu shuni anglatadiki, 1 -qator va 0 -ustunda maxsus LEDni yoqish mumkin emas. Bu murosadir, chunki barcha LED elementlarini boshqarish uchun GPIO pinlari etarli emas.

Ovoz yozish

Ovozni Educational BoosterPack -dagi kondensator mikrofoni orqali olish mumkin. Mikrofon signallari kichik bo'lgani uchun, biz uni msp430 ADC10 oqilona piksellar sonini ishlatadigan darajaga ko'tarishimiz kerak. Buning uchun men ikki bosqichli op-amp kuchaytirgichidan foydalanganman.

Op-amp kuchaytirgichi ikki bosqichdan iborat bo'lib, ularning har biri taxminan 100 baravar ko'payadi. Men TLC272 ni qabul qildim, chunki bu juda keng tarqalgan qism va u 3V bilan ishlaydi. O'tkazish qobiliyati taxminan 1,7 MGts ni tashkil qiladi, demak, biz 100x daromad olishimiz uchun, biz uning 17 kGts ostida yaxshi ishlashiga kafolat bera olamiz (ya'ni biz xohlagan daromadni saqlab qolamiz). (1,7 MGts / 100).

Dastlab men ushbu spektr analizatorini 16-20 Gts gacha o'lchashni niyat qilgandim, lekin oxirida 8 KGts ga yaqin musiqani ko'rsatish uchun etarli ekanligini topdim. Buni LM358-ni ovoz bilan almashtirish va namuna olish tezligini o'zgartirish orqali o'zgartirish mumkin. Siz tanlagan op-amperlarning o'tkazish qobiliyatini qidiring.

Namuna olish va FFT

Qo'llaniladigan FFT funktsiyasi "fix_fft.c" kodi bo'lib, u bir qancha yillar davomida Internetda aylanib yurgan. Men 16 bitli va 8 bitli versiyani sinab ko'rdim. Oxir -oqibat, men 8 bitli versiyaga qaror qildim, men 16 bitli versiyada katta yutuqlarni ko'rmadim.

Men FFT mexanizmini yaxshi tushunmayapman, faqat vaqtli domenni chastotali konvertatsiya qilish. Bu shuni anglatadiki, ovoz namunalarining tezligi (vaqti), FFT hisoblash funktsiyasidan so'ng, men olayotgan amplitudaning chastotasiga ta'sir qiladi. Shunday qilib, tezlikni namuna tovushiga moslashtirish orqali men natija sifatida chastota diapazonini aniqlay olaman.

Namuna olish vaqtini saqlash uchun TimerA 0 CCR0 ishlatiladi. Biz birinchi navbatda tarmoqli chastotasiga erishishimiz kerak bo'lgan sonlarni aniqlaymiz (bizning DCO soat tezligi 16 MGts ga to'g'ri keladi). ya'ni TA0CCR0 (8000/(BAND_FREQ_KHZ*2) ga sozlangan)-1; bu erda BAND_FREQ_KHZ men uchun 8. Agar sizda yaxshiroq op-amp bo'lsa va / yoki boshqacha bo'lishini xohlasangiz, uni o'zgartirish mumkin.

Chastotalar diapazoni va amplitudani o'lchash

Dasturiy ta'minot bir vaqtning o'zida 16 ta diapazonni qayta ishlaydi va tortishish vaqti bu banklar o'rtasida 500 gigagertsli masofani hosil qiladi. LED matritsasi 8 ta ustundan iborat bo'lib, faqat 8 ta diapazon / amplitudani ko'rsatadi. Har ikki diapazondan bittasini ko'rsatish o'rniga, chiziqli bo'lmagan chastotalar diapazoni dinamikroq chastota diapazonlarini ko'rsatish uchun ishlatiladi (musiqa nuqtai nazaridan). Ro'yxat pastdagi 500 Gts bo'shliqlar, o'rta diapazonda 1 KGts bo'shliqlar va yuqori chastotalarda 1,5 Gts chastotalar.

Individual diapazonlarning amplitudasi 8 darajagacha qisqartiriladi, ular LED matritsali displeyda gorizontal "nuqta" lar soni bilan ifodalanadi. nuqta Har xil turdagi logarifmik o'lchovlar qo'llaniladi, chunki u bizning tovush darajasini sezishimizni eng yaxshi ifodalaydi.

O'rnatilgan AGC mantig'i mavjud va spektr analizatori oldingi tsikllarda bir nechta tepalik darajalari aniqlanganda amplituda darajasini pasaytirmoqchi bo'ladi. Bu taqqoslash jadvali toymasin o'lchagich yordamida amalga oshiriladi.

6 -qadam: qurilmaning ishlashi

  • Qisqa klavishali displey rejimida nuqta yo'q, bitta nuqta, 2 nuqta va 3 nuqta ko'rsatiladi.
  • Uzoq bosish sozlash rejimiga o'tadi, keyingi uzoq bosish menyu bo'ylab aylanadi.
  • Menyu elementlari "Hamming Window Option", "Dimmer", "Sampling / Refresh Rate" orqali o'tadi.
  • "Hamming oynasi" sozlash rejimida, qisqa bosish hech qanday to'siqsiz, 1 -sonli, 2 -sonli, 3 -sonli, uzoq bosish sozlamani tasdiqlaydi.
  • "Dimmer" ni sozlash rejimida, qisqa bosish mavjud yorqinlik darajalari 0 dan 3 gacha o'zgaradi, uzoq bosish sozlamani tasdiqlaydi.
  • "Namuna olish / yangilash tezligi" ni sozlash rejimida qisqa bosish mavjud yangilanish tezligi 0 dan 7 gacha o'zgaradi, 0 kechiktirilmaydi, uzoq bosish sozlamani tasdiqlaydi.
  • Led segmentni ko'paytirish alohida satrlar uchun yorqinlik farqlarini qoplash uchun vaqtni kechiktirishni o'z ichiga oladi.

Tavsiya: