Реклама ⓘ
Главная » Световые эффекты
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Похожие статьи:


Реклама ⓘ

Простой анализатор спектра на микросхеме MSGEQ7

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

Частотное распределение

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

Блок схема MSGEQ7:

Блок схема MSGEQ7

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

Схема включения MSGEQ7

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

Диаграмма работы 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 можно легко найти в продаже на Ali или eBay, да и в некоторых отечественных магазинах была замечена.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МикросхемаMSGEQ71 Поиск в магазине ОтронВ блокнот
Плата Arduino
Arduino Uno
1 Поиск в магазине ОтронВ блокнот
C2, C3, C6 Конденсатор0.1 мкФ3 Поиск в магазине ОтронВ блокнот
C7 Конденсатор33 пФ1 Поиск в магазине ОтронВ блокнот
R1, R3 Резистор
22 кОм
2 Поиск в магазине ОтронВ блокнот
R2 Резистор
200 кОм
1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (5) | Я собрал (0) | Подписаться

0
lazertok #
В силу того, что динамический диапазон света всего 25 дб - индикация в частотных полосах выглядит не информативно.
Ответить
0
Владислав #
Возникла проблема, есть две MSGEQ7, подключал к ARDUINO, одна выдает вообще полную ерунду(разный уровень сигнала на всех частотах, который постоянно меняется). Вторая выдает низкий сигнал на всех частотах, чтобы я не делал.
Может кто сталкивался с подобным, ответьте мне, в чем проблема?
Ответить
0
Стас #
Владислав, привет. Удалось решить эту проблему? Если да - поделитесь, пожалуйста.
Ответить
+1
RomanS #
Господа проблема только в качестве китайских микросхем. Поверьте мне. Покупал несколько раз на Ebay. В итоге из 7 чипов только один оказалось полностью рабочим. Остальные чем только не болели. И путанные данные по частотам, и по некоторым частотам всегда максимум, и часть по некоторым частотам не выдается ничего. Жуть!
Ответить
+1
Step99 #
В текущем коде не выдержаны явно тайминги микросхемы. Она может вести себя непредсказуемо.
tr - 100 ns (5 000 000 ns) - норм.
trs - 72 mks (0 mks) - не норм!
ts - 18 mks (0 mks) - не норм!
tss - 72 mks (35 mks) - не норм!
to - 36 mks (35 mks) - на пределе!
За счет времени выполнения промежуточного кода, паразитных емкостей, микруха может и успеет отреагировать, но не факт.
Ещё момент: выходные пины просто перезаписываются вместо усреднения, потому полосы 160Гц и 2,5кГц "выпадают" (не учитываются).
За статью спасибо, порядком времени. сэкономила.
PS: Сам пока не пробовал эту микруху юзать, жду с алика.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Набор для сборки - LED лампа
Набор для сборки - LED лампа
ELM327 OBD II — адаптер с поддержкой CAN Набор для сборки - УНЧ 2х60 Вт на TDA7294
вверх