Оглавление:

Макетный анализатор спектра звука MSP430: 6 шагов
Макетный анализатор спектра звука MSP430: 6 шагов

Видео: Макетный анализатор спектра звука MSP430: 6 шагов

Видео: Макетный анализатор спектра звука MSP430: 6 шагов
Видео: Программирование микроконтроллеров: работа с памятью, ограничения, языки, типы, что купить 2024, Ноябрь
Anonim
Image
Image
Макетный анализатор спектра звука MSP430
Макетный анализатор спектра звука MSP430

Этот проект основан на микрофоне и требует минимального количества внешних компонентов. Используются 2 батарейки для монет LR44, так что я могу иметь всю конструкцию, работающую в рамках мини-макета со 170 узлами связи. Используются и демонстрируются ADC10, TimerA interrupt LPM wake-up, TimerA PWM как вывод, использование кнопок, целочисленная арифметика.

Функции

  • 8-битное целочисленное БПФ 16 отсчетов с разделением 500 Гц
  • показывает 8 амплитуд 1K, 1,5K, 2K, 3K, 4K, 5K, 6K, 7,5K нелинейных
  • карта частичного логарифма для отображения амплитуд, ограниченная по мере уменьшения разрешения для 8-битного БПФ
  • TLC272 одноступенчатый микрофонный усилитель с 100-кратным 100-кратным усилением (вы можете испытать с 2-мя ступенями)
  • выбираемое меню дополнительное окно Хэмминга
  • меню регулировки 4 уровней яркости
  • Меню настройки 8 уровней частоты дискретизации / времени отклика
  • 2 батарейки LR44 с питанием "на борту"

Шаг 1: приобретение деталей

Вот что нужно для этого проекта.

  • MSP430G2452 (дополнительный чип от TI Launchpad G2 или любой 20-контактный микроконтроллер серии MSP430G 4K)
  • мини-макетная или перфорированная плата на 170 узлов для конструирования предусилителяa
  • TLC272 Двойной операционный усилитель
  • мини электретный микрофон
  • 47 кОм (подтягивающий), 100 кОм, 2 x 10 кОм, 1 кОм
  • 1 х 0,1 мкФ
  • перемычки
  • двухрядный штыревой штекер для держателя батареи
  • 2 батарейки типа таблетка LR44

Шаг 2: Планирование компоновки компонентов

Проект будет построен на мини-макете на 170 узловых точек. Расположение компонентов показано ниже. Особо следует отметить, что светодиодная матрица 8x8 должна быть размещена на MCU MSP430. Помимо компонентов, есть также соединительные перемычки, обозначенные символами «+ ------ +».

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 |. o o o o o o o o |…… |.. | b6 a7 | | c0 и r1 имеют один и тот же контакт и не будут отображаться | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | * возможно приложение иметь c6 + c0 + r1 | | | V + | | | G b6 b7 T R a7 a6 b5 b4 b3 | | это освободит b6 для часов xtal 32 кГц | | | TLC272 | | | | | | | из - + G | | | + a0 a1 a2 a3 a4 a5 b0 b1 b2 | | | +. + - + - + - + | + - + - + - + - + - + - + - + - + - + | | о || о о о. + - +.. R4 R6 C1 C2 R7 C4 R5 R2 | |…. о- [10к] - о……… | |. о- [1к] о о о………._. | | о ---- [10k] ----------- о……. о о | + ================================================= ==== +.1uF 100k 10k ADC Button + ----------------- +

мы используем только одну ступень 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 -ffunction-section -fdata-section -fno-inline-small-functions -Wl, -Map = nfft.map, --cref -Wl, --relax -Wl, --gc- разделы -I / energia-0101E0016 / hardware / msp430 / cores / msp430 -mmcu = msp430g2553 -o nfft.elf nfft.c

Я использую TI Launchpad G2 в качестве программатора для программирования MCU.

Шаг 5: понимание схемы

Понять схему
Понять схему
Понять схему
Понять схему

Принципиальная схема представлена ниже.

MSP430G2452 или аналогичный, требуется двойной операционный усилитель 4K Flash TLC272, GBW @ 1,7 МГц, @ усиление x100, пропускная способность до 17 кГц

* мы используем только одну ступень TLC272

._.

| MSP430G2452 | Vcc | | | + ----------------------- 2 | ADC0 | 1 - + | | | |, | Vcc | | | | подтягивания (47k) Vcc Vcc | --------------- | | | | _ | | | + -1 | ----. Vcc | 8- + | | | |, |, |, | ^.--- | 7 | | 16- + | | 10к | | 10к | | | / / ^ | | | | _ | | _ | 100k | _ | | / _ + / / / | | / | --- (см. макет макета) |.1u | | | | | / _ + / | | / | ------_ + - || --- | - [1k] - + - 2 | --- + | | | | | 15 GPIO | | | | + ---------- 3 | ----- + + - | - | 6 | P1.1-P1.7 | | 8x8 | | | + -4 | Земля + - | 5 | P2.0-P2.7 | | LED | | + | | --------------- | | | матрица | ((O)) |. | | / | | _ | | ВПК | | 10к | + -20 | Земля / | -------- | | _ | | | | _ | _ | _ _ | _ _ | _ _ | _ /// /// /// ///

Светодиодное вождение

Светодиодная матрица состоит из 8 х 8 элементов. Они управляются 15 контактами GPIO. Они мультиплексированы по схеме 8 строк и 8 столбцов. Поскольку после того, как мы используем 1 контакт для входа АЦП, остается только 15 контактов, при мультиплексировании строка 1 и столбец 0 разделяют один контакт. Это означает, что отдельные светодиоды в строке 1 и столбце 0 не могут гореть. Это компромисс, поскольку выводов GPIO просто не хватает для управления всеми светодиодными элементами.

Захват звука

Звук улавливается через встроенный конденсаторный микрофон на учебном бустер-паке. Поскольку сигналы микрофона малы, нам необходимо усилить их до уровня, который может использовать ADC10 msp430 с разумным разрешением. Для этой цели я использовал двухкаскадный усилитель на операционном усилителе.

Усилитель на операционном усилителе состоит из двух каскадов, каждый с примерно 100-кратным усилением. Мне пришлось взять на вооружение TLC272, так как это тоже очень распространенная деталь, и она работает с 3В. Ширина полосы усиления около 1,7 МГц означает, что для нашего 100-кратного усиления мы можем только гарантировать, что он будет хорошо работать (то есть поддерживать желаемое усиление) при 17 кГц. (1,7 МГц / 100).

Первоначально я собирался сделать этот анализатор спектра измеряющим до 16-20 кГц, но в итоге я обнаружил, что около 8 кГц достаточно для воспроизведения музыки. Это можно изменить, заменив LM358 на что-то звуковое и изменив частоту дискретизации. Просто посмотрите на полосу усиления выбранных вами операционных усилителей.

Выборка и БПФ

Используемая функция БПФ - это код "fix_fft.c", принятый во многих проектах, который уже несколько лет витает в Интернете. Я пробовал 16-битную версию и 8-битную версию. В конце концов я остановился на 8-битной версии, так как для моей цели я не увидел серьезных улучшений в 16-битной версии.

У меня нет хорошего понимания механизма БПФ, за исключением того, что это преобразование временной области в частотную. Это означает, что частота (время) звуковых образцов после подачи в функцию вычисления БПФ будет влиять на частоту амплитуды, которую я получаю в результате. Таким образом, регулируя частоту дискретизации звука, я могу в результате определить полосу частот.

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

Полосы частот и масштабирование амплитуды

Прошивка обрабатывает 16 полос за одну развертку, а время захвата обеспечивает разделение между этими банками в 500 Гц. Светодиодная матрица состоит из 8 столбцов и отображает только 8 полос / амплитуд. Вместо того, чтобы отображать одну каждые две полосы, используется нелинейный список полос частот, чтобы показать более динамичные полосы частот (с точки зрения музыки). Список состоит из промежутков 500 Гц в нижнем диапазоне, промежутков 1 кГц в средних полосах и полос 1,5 кГц в верхних частотах.

Амплитуда отдельных полос уменьшается до 8 уровней, которые представлены количеством горизонтальных точек на светодиодном матричном дисплее. Уровни амплитуды уменьшаются с помощью нелинейной карты, которая переводит результаты БПФ в один из 8 точки. Используется своего рода логарифмическое масштабирование, поскольку оно лучше всего отражает наше восприятие уровней звука.

Имеется встроенная логика АРУ, и анализатор спектра попытается уменьшить уровни амплитуды, если в предыдущих циклах обнаружено несколько пиковых уровней. Это делается с помощью таблицы сравнения скользящей линейки.

Шаг 6: Работа с устройством

  • Кратковременное нажатие клавиши в режиме отображения циклически переключает отображение без точки, одной точки, 2 точек и 3 точек.
  • Длительное нажатие входит в режим настройки, последующее долгое нажатие перемещает по меню.
  • Пункты меню проходят через «Параметр окна Хэмминга», «Диммер», «Частота дискретизации / обновления».
  • В режиме настройки «Окно Хэмминга» короткие нажатия циклически проходят через режим «Нет хамминга», «Хамминга 1», «Хамминга» 2, «Хамминга» 3, длительное нажатие подтверждает настройку.
  • В режиме настройки «Диммер» короткое нажатие переключает доступные уровни яркости от 0 до 3, длительное нажатие подтверждает настройку.
  • В режиме настройки «Частота дискретизации / обновления» короткое нажатие циклически переключает доступные частоты обновления от 0 до 7, 0 означает отсутствие задержки, длительное нажатие подтверждает настройку.
  • Мультиплексирование светодиодных сегментов включает временные задержки для компенсации разницы яркости отдельных строк.

Рекомендуемые: