Съдържание:

MSP430 Анализатор за аудио спектър на платка: 6 стъпки
MSP430 Анализатор за аудио спектър на платка: 6 стъпки

Видео: MSP430 Анализатор за аудио спектър на платка: 6 стъпки

Видео: MSP430 Анализатор за аудио спектър на платка: 6 стъпки
Видео: Анализатор аудио спектра на Arduino своими руками 2024, Ноември
Anonim
Image
Image
MSP430 Анализатор за аудио спектър на платка
MSP430 Анализатор за аудио спектър на платка

Този проект е базиран на микрофон и изисква минимални външни компоненти. 2 х LR44 монети клетки се използват, за да мога цялата структура да работи в границите на 170 макетни дъски с връзки. Използват се и демонстрират ADC10, TimerA прекъсване LPM събуждане, TimerA PWM като изход, използване на бутони, целочислена аритметика.

Характеристика

  • 8 битово цяло число FFT 16 проби при 500Hz разделяне
  • показва 8 амплитуди на 1K, 1.5K, 2K, 3K, 4K, 5K, 6K, 7.5K нелинейни
  • карта с частичен логаритъм за показване на амплитуди, ограничена, тъй като разделителната способност е намалена за 8 битов FFT
  • TLC272 едноетапен микрофон усилвател при 100x по 100x усилване (можете да изпитате w/ 2 етапа)
  • избор на меню по избор прозорец Hamming
  • менюто регулира яркостта на 4 нива
  • менюто регулира 8 нива честота на дискретизация / време за реакция
  • 2 х LR44 монетни клетки, задвижвани "на борда"

Стъпка 1: Придобийте части

Ето какво е необходимо за този проект

  • MSP430G2452 (допълнителният чип от TI Launchpad G2 или всеки 4K 20 -пинов MSP430G серия MCU)
  • мини макет или перф дъска от 170 точки за свързване за предварително изграждане на усилвател
  • TLC272 Двоен операционен усилвател
  • мини електрически микрофон
  • 47k (издърпване), 100k, 2 x 10k, 1k резистори
  • 1 х 0.1uF
  • джъмперни проводници
  • двуредов мъжки щифт, който да се използва за държач на батерията
  • 2 х LR44 батерии с монети

Стъпка 2: Оформление на компонентите на плана

Проектът трябва да бъде изграден върху 170 макетни дъски с връзки. Разположението на компонентите е както е показано по -долу. Трябва да се отбележи, че 8x8 LED матрицата трябва да бъде поставена върху MSP430 MCU. Освен компоненти, има и свързващи джъмперни проводници, изобразени със знаци "+------+".

G V + Gnd (1 -степенно оформление) ИЗПОЛЗВАМЕ ТАЗИ РАЗПОЛОЖЕНИЕ + ==================================== =================+ c0 ………… c7 | MIC……. + -----++-+…. | r0 o o o o o o o o | o || o + ----- [100k] --------------- +….. | r1 X o o o o o o o |. +--------------+-+. C7 C6 R1 C0 R3 C5 C3 R0 |. о о о о о о о о |…… |.. | b6 a7 | | c0 и r1 споделят един и същ щифт и няма да се показват | +. +-+-+-+| +-+-+-+-+-+-+-+-+-+-+| *възможно приложение за c6 + c0 + r1 | | | V+ | | | G b6 b7 T R a7 a6 b5 b4 b3 | | това ще освободи b6 за 32kHz xtal часовник | | | TLC272 | | | | | | | изход - + 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 ADC бутон+ -----------------+

ние използваме само един етап от TLC272

Стъпка 3: Монтаж

Монтаж
Монтаж
Монтаж
Монтаж

Можете да започнете да поставяте компоненти въз основа на оформлението на макета. Тъй като това е ASCII изкуство, може да не е много ясно. Можете да сдвоите снимките в тази стъпка, за да идентифицирате всички връзки.

Трябва да се внимава за позиционирането на IC чиповете. Обикновено в един от ъглите има точка, която показва щифт 1 на устройство.

Използвах кабелни кабели за Ethernet CAT5 и те са много лесни за работа по проекти за макети. Ако имате стари кабели CAT5, можете да го отрежете и ще откриете, че вътре има 6 усукани проводника. Те са идеални за дъски.

Стъпка 4: Компилирайте и заредете фърмуера

Изходният код обикновено се намира в моите хранилища на github.

За този конкретен проект, единственият C изходен файл nfft.c е обединен в моето хранилище за колекции. Просто ви трябва nfft.c

Използвам mps430-gcc за компилиране на фърмуера, но трябва да върви добре с TI CCS. Можете да избегнете всички проблеми с инсталирането на IDE или компилатори, като отидете в TI CCS облак, който е уеб базирана IDE. Той дори ще изтегли фърмуера на вашето целево устройство.

Това е примерна команда за компилиране с превключватели

msp430 -gcc -Os -Wall -function -section -fdata -section -fno -inline -small -functions -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- секции -I/energia -0101E0016/хардуер/msp430/ядра/msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Използвам TI Launchpad G2 като програмист за програмиране на MCU.

Стъпка 5: Разберете схемата

Разберете схемата
Разберете схемата
Разберете схемата
Разберете схемата

Схемата на схемата е представена по -долу

MSP430G2452 или подобен, имате нужда от 4K Flash TLC272 двоен операционен усилвател, GBW @1,7 Mhz, @x100 усилване, честотна лента до 17 Khz

* ние използваме само един етап от TLC272

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1-+ | | | |. | Vcc | | | | издърпване (47k) Vcc Vcc | --------------- | | | | _ | | | +-1 | ----. Vcc | 8-+ | | | |. |. |. | ^.--- | 7 | | 16-+ | | 10k | | 10k | | | / / ^ | | | | _ | | _ | 100k | _ | | / _+\ / / | | /| --- (вижте оформлението на макета) |.1u | | | | | /_+\ | | / | ------_+-|| --- |-[1k]-+-2 | ---+| | | | | 15 GPIO | | | | +---------- 3 | ----- + +-|-| 6 | P1.1-P1.7 | | 8x8 | | | +-4 | Gnd +-| 5 | P2.0-P2.7 | | LED | |+ | | --------------- | | | матрица | ((O)) |. | | / | | _ | | MIC | | 10k | +-20 | Gnd / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

LED шофиране

LED матрицата е от 8 x 8 елемента. Те се задвижват от 15 GPIO щифта. Те са мултиплексирани с 8 реда и 8 колонна схема. Тъй като има само 15 пина, след като използваме 1 пин за ADC вход, мултиплексирането има ред 1 и колона 0, споделящи един пин. Това означава, че конкретният светодиод на ред 1 и колона 0 не може да свети. Това е компромис, тъй като просто няма достатъчно GPIO щифтове за задвижване на всички LED елементи.

Заснемане на звук

Звукът се улавя чрез вградения кондензаторен микрофон на Educational BoosterPack. Тъй като сигналите на микрофона са малки, трябва да го усилим до ниво, което msp430 ADC10 може да използва с разумна резолюция. Бях използвал за тази цел двустепенен операционен усилвател.

Оп-усилвателят се състои от два етапа, всеки с около 100x усилване. Бях приел TLC272, тъй като той също е много често срещана част и работи с 3V. Пропускателната способност на печалбата от около 1,7 Mhz означава, че за нашата печалба от 100x, можем само да гарантираме, че ще работи добре (т.е. поддържане на желаната печалба) под 17 Khz. (1,7 Mhz / 100).

Първоначално възнамерявам да направя този спектроанализатор да измерва до 16-20Khz, но в крайна сметка открих, че около 8Khz е достатъчно добър, за да показва музика. Това може да бъде променено чрез смяна на LM358 с нещо с аудио-рейтинг и промяна на честотата на дискретизация. Просто потърсете честотната лента на печалбата на оп-усилвателите, които изберете.

Вземане на проби и БПФ

Използваната функция FFT е кодът "fix_fft.c", който много проекти са приели, той се носи в интернет от няколко години. Опитах 16 -битова версия и 8 -битова версия. В крайна сметка се задоволих с 8 -битовата версия, тъй като за моята цел не видях голям напредък в 16 -битовата версия.

Нямам добро разбиране за механизма на FFT, освен че това е времева област към преобразуване на честотна област. Това означава, че скоростта (времето) на звуковите проби, след подаване към функцията за изчисляване на FFT, ще повлияе на честотата на амплитудата, която получавам в резултат. Така че, като коригирам скоростта към пробата звук, мога да определя честотната лента като резултат.

TimerA 0 CCR0 се използва за запазване на времето за вземане на проби. Първо определяме броя, от който се нуждаем, за да постигнем честотната лента (съответства на нашата тактова честота DCO от 16Mhz). т.е. TA0CCR0 настроен на (8000/(BAND_FREQ_KHZ*2))-1; където BAND_FREQ_KHZ е 8 за мен. Може да се промени, ако имате по-добър операционен усилвател и / или искате той да е различен.

Честотни ленти и амплитудно мащабиране

Фърмуерът обработва 16 ленти при едно размахване и времето за улавяне произвежда 500Hz разделяне между тези банки. LED матрицата е от 8 колони и ще показва само 8 ленти / амплитуди. Вместо да се показва по един на всеки два диапазона, се използва нелинеен списък с честотни ленти за показване на по-динамичните честотни ленти (по отношение на музиката). Списъкът е с 500Hz пропуски в долния край, 1KHz пропуски в средните ленти и 1.5Khz ленти във високите.

Амплитудата на отделните ленти се намалява до 8 нива, които са представени от броя на хоризонталните „точки“на дисплея на LED матрицата. Нивата на амплитуда се намаляват чрез нелинейна карта, която превежда резултатите от FFT в един от 8-те нива точки. Използва се един вид логаритмично мащабиране, тъй като най-добре представя нашето възприятие за нивата на звука.

Има вградена AGC логика и анализаторът на спектъра ще се опита да намали нивата на амплитудата, когато има няколко пикови нива, открити в предишните цикли. Това се прави с плъзгаща се линейка за сравняване на таблица.

Стъпка 6: Работа с устройството

  • Краткото натискане на клавиша в режим на показване преминава през дисплей без точка, една точка, 2 точки и 3 точки.
  • Продължителното натискане влиза в режим на настройка, последващото продължително натискане завърта през менюто.
  • Елементите от менюто преминават през „Hamming Window Option“, „Dimmer“, „Sampling / Refresh Rate“.
  • В режим на настройка „Прозорец за късане“, кратките натискания преминават през цикъл без забиване, чукане 1, чукане 2, чукане 3, продължително натискане потвърждава настройката.
  • В режим на настройка „Dimmer“, кратките натискания циклират през наличните нива на яркост от 0 до 3, продължителното натискане потвърждава настройката.
  • В режим на настройка 'Sampling / Refresh rate', кратките натискания преминават през наличните честоти на опресняване от 0 до 7, 0 означава без забавяне, продължителното натискане потвърждава настройката.
  • Мултиплексирането на светодиодни сегменти включва закъснения за компенсиране на разликите в яркостта за отделни редове.

Препоръчано: