Компания Mixed Signal Integration выпускает интересную микросхему MSGEQ7, которая представляет собой 7-ми полосный фильтр для графического эквалайзера. Данный 8-ми выводной чип способен из входного аудиосигнала выделить частотные полосы 63Гц, 160Гц, 400Гц, 1кГц, 2.5кГц, 6.25кГц и 16кГц:

В данном материале я хотел бы рассказать о практическом применении данной микросхемы. Для этого мы соберем простейший 5-ти полосный аудио анализатор спектра с применением Arduino. Т.к. ставилась цель показать практическое применение MSGEQ7, то я не стал делать светодиодную матрицы (многоуровневые бары), и в качестве уровня аудиосигнала для каждого бара задействовал ШИМ. Т.е. чем больше уровень определенной частоты, тем ярче будет светить отвечающий за эту частоту светодиод.
Блок схема MSGEQ7:

Даташит на MSGEQ7 (см. прикрепленные файлы внизу статьи) предлагает нам следующую схему включения:

Для подключения к контроллеру нам потребуются выводы Reset, Strobe и Out. Логику взаимодействия с MSGEQ7 лучше всего иллюстрирует диаграмма из даташита:

К контроллеру ардуино я подключил следующим образом:
- RESET к 11 выводу Arduino;
- STROBE к 12 выводу Arduino;
- OUT к 0 выводу Arduino (аналоговый вход);
Код программы:
#define msg7RESET 11
#define msg7Strobe 12
#define msg7DCout 0
const int LEDpins[7] = {3,5,5,6,9,9,10}; // массив выводов для светодиодов. Т.к. используется только 5, то некоторые частоты повторяются
void setup() {
for (int x=0; x<7; x++) {
pinMode(LEDpins[x], OUTPUT); // инициализация выходов для LED
}
pinMode(msg7RESET, OUTPUT);
pinMode(msg7Strobe, OUTPUT);
}
void loop() {
digitalWrite(msg7RESET, HIGH); // осуществляем сброс MSGEQ7
delay(5);
digitalWrite(msg7RESET, LOW);
for (int x = 0; x < 7; x++){ // семь частот - семь стробирующих импульсов
digitalWrite(msg7Strobe, LOW);
delayMicroseconds(35); // ждем установления значения 35 мкс
int spectrumRead = analogRead(msg7DCout); // считываем значение с аналогового входа
int PWMvalue = map(spectrumRead, 0, 1024, 0, 255); // преобразовываем диапазон 0-1024 к диапазону 0-255 для ШИМ
if (PWMvalue < 50) // небольшой программный фильтр шума
PWMvalue = PWMvalue / 2;
analogWrite(LEDpins[x], PWMvalue);
digitalWrite(msg7Strobe, HIGH);
}
}

Список радиоэлементов
| Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
|---|---|---|---|---|---|---|
| Микросхема | MSGEQ7 | 1 | Поиск в магазине Отрон | |||
| Плата Arduino | Arduino Uno | 1 | Поиск в магазине Отрон | |||
| C2, C3, C6 | Конденсатор | 0.1 мкФ | 3 | Поиск в магазине Отрон | ||
| C7 | Конденсатор | 33 пФ | 1 | Поиск в магазине Отрон | ||
| R1, R3 | Резистор | 22 кОм | 2 | Поиск в магазине Отрон | ||
| R2 | Резистор | 200 кОм | 1 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- MSGEQ7.pdf (182 Кб)
- MSGEQ7.ino (1 Кб)








Опубликована:
Вознаградить




Комментарии (4)
|
Я собрал (0) |
Подписаться
Для добавления Вашей сборки необходима регистрация
Может кто сталкивался с подобным, ответьте мне, в чем проблема?