Использование BA3834 как альтернативы MSGEQ7 в эквалайзерах и цветомузыке

bort707

★★★★★★✩
21 Сен 2020
2,923
868
Большая популярность проектов эквалайзеров и цветомузыки, таких как например DMS-308 V2 14 Band Digital Spectrum Analyzer. привела к резкому повышению спроса на микросхему частотного фильтра MSGEQ7. Цена на нее взлетела в несколько раз, но что еще хуже - рынок наводнен подделками. так что достать рабочую MSGEQ7 стало сложно.
Но ведь чип MSGEQ7 - не единственный пример подобного фильтра. Беглый поиск по базе данных даташитов показал, что существует примерно с десяток мс аналогичного назначения. Некоторые из них редкие и найти их сложно, но вот мс BA3834 выглядит довольно интересно. Эта микросхема 7ми-полосного частотного фильтра очень близка по характеристикам к MSGEQ7, при этом свободно продается на Али (40р за шт примерно) и ее (пока?) не подделывают.

Я заказал и получил 5шт BA3834F , сделал несколько тестов и хочу поделится результатами. Суть данного проекта - обсудить особенности работы с BA3834 и возможность замены MSGEQ7 на эту мс в различных проектах эквалайзеров и цветомузыки.

Для начала - даташит на BA3834F

Использованная схема подключения
ba3834.jpg
(внимание, на микросхеме с буквой S в конце обозначения сигнал SEL располагается на ноге с другим номером)

Как видно, схема практически полностью повторяет таковую из даташита (картинка 3). Я добавил только делитель напряжения для выходного сигнала на резисторах R2 R3. так как использовал МК СТМ32, входные сигналы которого не должны превышать 3.3в. Для микроконтроллеров на 5в делитель не нужен, сигнал с пина Aout можно напрямую подавать на аналоговый пин ардуино.

Результаты работы микросхемы - на видео. Для нагоядности я взял один из рекламных роликов из темы про DMS-308 V2 14 Band Digital Spectrum Analyzer. , запустил его проигрывание на своем ПК, а звук направил на вход BA3834. Результаты работы мс отображаются в виде эквалайзера на RGBматрице, установленной под экраном
Как видно- микросхема работает, полоски на двух эквалайзерах бегают почти синхронно. Недостаток высоких на моем эквалайзере, думаю обьясняется более высоким качеством звука у автора видео - он его явно берет с качественного музыкального центра, а я свое - со звуковухи компа после пережатия на ютубе
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,035
904
Раз уж есть такая тема - решил ответить здесь, несмотря на то, что первоначально затронул этот аспект в ветке @technotrasher по цветомузыке на MSGEQ7.
Обе микросхемы имеют встроенные средства "разряда" пиковых детекторов, которые в обеих микросхемах используют конденсаторы для хранения, но управляются они (с моей точки зрения) несколько странно.
Вот, например, выдержка из datasheet MSGEQ7:
"The multiplexor readout rate also control the decay time (10% decay per read), so no external pins are needed for this function."
(вольный перевод: детектированный пик-контроллером уровень снижается на 10% перед каждым его чтением)
Примерно тоже самое видим в BA3834:
"Features
...3) Discharge time constant circuit for each band is on the chip.
...
Reset pulse width TR = 10 us
*2 Automatically generated internally based on the output selecy signal. For the duration that this signal is "H", a resistor is connected to the peak hold capacitor, and the output level drops by -3dB (Typ.) for the pulse."

(вольный перевод: Имеет разряжающую цепь для каждой полосы на борту. Разряжающий резистор подключается в начале каждой смены полосы к конденсатору, накопившему пиковый сигнал, в связи с чем выходной уровень падает на -3дБ за типичный импульс, длительностью 10мкс.)
Замечу, что 3дБ по напряжению - это примерно -30% от имеющегося уровня.
То есть, если в предыдущий период времени сигнал в полосе был равен некоторому уровню Х, то максимальное изменение этого сигнала вниз ограничено 10% для MSGEQ7 (0,9Х) и 30% для BA3834 (0,7Х) на один цикл чтения. Причём, и в том, и в другом случае перед чтением должно быть изменение полосы для чтения, просто так этот сигнал разряда не формируется.
Эту особенность необходимо учитывать в динамичных музыкальных фрагментах. Наш глаз хорошо различает изменения с частотой примерно в 10Гц, актуализировать уровни чаще этого значения бессмысленно - это не будет ни эффектным, ни заметным. При падении уровня со 100% до, допустим, 10% потребуется 21 цикл опроса для MSGEQ7 и 6 для BA3834. Чтобы это адекватно отображать с частотой 10Гц каждую полосу MSGEQ7 нужно опрашивать с частотой 210Гц (период около 5мс), 7 полос будут опрашиваться с частотой 1470Гц (период 0,7мс). Для BA3834 это составляет 60Гц (17мс) на полосу, 420Гц (2,4мс) на все полосы.
 
  • Лойс +1
Реакции: technotrasher

bort707

★★★★★★✩
21 Сен 2020
2,923
868
@poty, если я правильно понял - в случае измерения сигнала все время с одного и того же полосового фильтра не получится один раз выставить селекторы A B C и далее просто измерять аналоговый сигнал, нужно обязательно переключать каналы или включать-выключать SEL. чтобы конденсатор фильтра разряжался и результаты измерений были адекватны?
 

poty

★★★★★★✩
19 Фев 2020
3,035
904
Насчёт SEL не уверен, на диаграммах это не показано, а вот при переключении каналов - да, именно это я и уточнил (и это напрямую связано с частотой переключения/опроса).
 

bort707

★★★★★★✩
21 Сен 2020
2,923
868
Чтобы это адекватно отображать с частотой 10Гц каждую полосу MSGEQ7 нужно опрашивать с частотой 210Гц (период около 5мс), 7 полос будут опрашиваться с частотой 1470Гц (период 0,7мс). Для BA3834 это составляет 60Гц (17мс) на полосу, 420Гц (2,4мс) на все полосы.
Смотрю существующие проекты - никто из авторов даже близко не приближается к этим значениям. У @technotrasher в его проекте интервал опроса MSGEQ7 - 50мс. то есть частота 20 Гц. У Mark Donners в его коде для DMS 307 интервал опроса не менее 20мс - т е 50 Гц. При этом у Марка отображается все вполне адекватно. Так что может авторы даташита имели в виду что-то другое
В моем коде частоту опроса BA3834 менял от 70 до 25 Гц (от 2 до 6мс на полосу) - на вид разницы не заметно.
 

bort707

★★★★★★✩
21 Сен 2020
2,923
868
Кстати, раз уж мы загоаорили о странностях даташита - кто-нить может мне пояснить вот этот абзац:
ba3834_datasheet.JPG
Речь, судя по всему, идет о том, что в некоторых случаях нужно ставить диоды на пины А В С и SEL, чтобы защитить микросхему от обратного тока. Не могу понять, в каких случаях это нужно. Что такое "FL drive", упомянутый в тексте - это сокращение нигде больше в даташите не упоминается.
Ссылка на полный даташит в первом сообщении ветки
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,035
904
@bort707, это, скажем так, "динамика" изменения уровня в полосе. Я взял предельный вариант, когда сигнал - это, допустим, удар по маленькому барабану. Крутой фронт до 100% и такой же срез. В этом случае при опросе в 20мс уровень упадёт примерно через 400мс для MSGEQ7 и через 180мс - для BA3834. @technotrasher напрямую отсчёты не использует, насколько я понял, возможно, у него есть какой-то программный компенсатор, вольный или случайный. То есть - это явно не всегда будет возникать.
По поводу данных из datasheet - я вижу несколько вариантов расшифровки, но все они как-то не очень вяжутся с приведённой фразой. То есть, я вижу, что диод может защитить от переполюсовки по входному сигналу из-за, допустим, индуктивной составляющей в чём-то, подключенном к выходу микроконтроллера. Я понимаю, что входной импеданс управляющего порта значительно ниже типичного для микропроцессора и может так получиться, что внутренний REF-сигнал может "проникнуть" в управляющий порт микропроцессора и сжечь его. Но, скажем прямо, это притянуто за уши и никак не следует из фразы.
 

bort707

★★★★★★✩
21 Сен 2020
2,923
868
В даташите есть упоминание. что изменение сопротивления референсного резистора Rref сдвигает частоты полосовых фильтров. Правда, никаких конкретных цифр не приведено, кроме рекомендуемых пределов для Rref - от 80 до 120к Непонятно, есть ли какая-то опасность повредить микросхему, если выйти за эти границы, но я пока решил их не превышать.
Для измерения сдвига частот присоединил вместо Rref переменник и снял частотные характеристики. Выяснилось, что частоты меняются довольно плавно, однако на предельных (из даташита) значениях различаются весьма существенно. Ниже табличка, для краткости даю только наборы частот для дефолтной настройки (в центре) и для Rref = 80к и 120к соответственно
ba3834-rref.JPG
Результат, как мне кажется, отличный :)
Если взять две BA3834, на одну установить Rref = 80k, на другую 120к - получаем 14-полосный эквалайзер с почти равномерным распределением частот:
ba3834-dualCh.JPG
чего, собственно, я и добивался.

То есть на основе мс BA3834 можно строить полный аналог таких эквалайзеров как DMS 307 и 308
 
Изменено:

VictorArx

★★✩✩✩✩✩
22 Мар 2021
472
79
Вечер добрый коллеги! Скажите правильно ли я понимаю, что подаём логическую единицу с Arduino на входы ABC микросхемы BA3834 в таком порядке: A; B; A+B; C; C+A; C+A+B?
 

VictorArx

★★✩✩✩✩✩
22 Мар 2021
472
79
@bort707, Так я сначала подумал, а потом глянул в даташит.

Позвольте ещё вопрос. Как или чем задаётся частота опроса частотного фильтра?
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,035
904
Частотой смены состояний пинов АВС. То есть - скетчем.
 

bort707

★★★★★★✩
21 Сен 2020
2,923
868
Понятно. А можно попробовать SEL?
а чего его пробовать?
@VictorArx,у меня впечатление, что вы совсем не понимаете, как работать с микросхемой.
Почитайте в прежней теме про цветомузыку,

там @poty расписывал алгоритм.
 
Изменено:
  • Лойс +1
Реакции: technotrasher

VictorArx

★★✩✩✩✩✩
22 Мар 2021
472
79
@VictorArx,у меня впечатление, что вы совсем не понимаете, как работать с микросхемой.
Есть такое, не скрываю. Заказал на али , буду изучать. Кстати раньше микрухи были с шагом ножек 2.5 мм. Теперь присылают с 1.25. Как её паять, феном? Кстати чем отличие этой микросхемы с S и F
 
Изменено:

bort707

★★★★★★✩
21 Сен 2020
2,923
868
Кстати раньше микрухи были с шагом ножек 2.5 мм. Теперь присылают с 1.25. Как её паять, феном? Кстати чем отличие этой микросхемы с S и F
1.27 запросто паяется обычным паяльником.
Версии S и F отличаются типом корпуса и расположением ног SEL и DIF, в остальном они одинаковы.


@VictorArx, а что собираетесь мастерить на этом чипе? Цветомузыку? Эквалайзер? Что-то еще?
 
Изменено:

bort707

★★★★★★✩
21 Сен 2020
2,923
868
Прослушивая разные треки с выводом на мою самоделку, заметил интересную особенность - на , так сказать, "многоголосых" записях - полоски на матрице, как ни странно, становятся ниже, а на записях с отдельными выделяющимися частотами - выше. А тут на другом форуме человек тоже обратил на это внимание - и я задумался.

В даташите видно, что входной сигнал подается на два входа. На одном идет разделение на частоты, а другой, цитата:

Differential input amplifier rejects common-mode noise.

Если я правильно понимаю - уровень, общий для всех частот, принимается за ноль и вычитается из входного сигнала. Поэтому в тех местах записи. где сигнал идет сразу по всем частотам - общий уровень отклика срезается . Ну и настройка уровня нуля, как это делается, например, в цветомузыке Алекса - становится ненужной, чип отрезает шумы сам.
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,035
904
Исследования продолжаются! :) И это - правильно!
@bort707, я попробую ответить на оба вопроса.
Сначала про differential input amplifier и common-mode noise. BA3834 имеет дифференциальный вход, на который возможно подать балансный сигнал. Балансный сигнал имеет шину hot (в некоторых зарубежных источниках иногда называют active, потому и буква А в обозначении входа), шину cold (отсюда - буква C у входа) и необязательную шину земли (gnd) и используется по большей части в профессиональных системах потому, что позволяет избавиться от наведённых на длинные кабели шумов с помощью высокого коэффициента подавления common-mode шумов. Под сигналом в балансных системах понимают Uсигнал = (Uhot-Ucold). При этом Uhot=-Ucold.
Профессиональные кабели, как правило, не имеют никакого экранирования и, тем не менее, обеспечивают передачу очень низких уровней сигнала на большие расстояния с довольно высоким качеством и без шумов. Кабели представляют собой обычную витую пару (пару проводников, расположенных близко друг от друга). Электромагнитные помехи, воздействуя на этот кабель, вызывают одинаковые токи шумов в каждом из них. Такое воздействие называется common-mode noise - по-русски - синфазная помеха.
Одной из особенностей балансного входа является то, что шина hot и шина cold обязаны иметь одинаковый импеданс относительно земли (Rвх=Rвх-hot=Rвх-cold) как со стороны источника сигнала, так и со стороны входа потребителя сигнала. Одинаковые наведённые токи шумов Iш=Iш-hot=Iш-cold образуют на каждом входе одинаковые напряжения шумов Uш=Iш*Rвх=Uш-hot=Uш-cold, складывающиеся с напряжением сигнала в каждой шине Uhot+Uш, Ucold+Uш. Результирующий сигнал оказывается свободным от шумов: Uсигнал = (Uhot+Uш)-(Ucold+Uш) = (Uhot-Ucold). Именно об этом и написано в фразе, которую мы разбираем.
В примере datasheet дифференциальный вход включен в режиме single-ended (небалансного, обычного... - в русском языке нет адекватного названия этому типу включения), в этом режиме вход cold заземляется. Таким образом теряется способность подавлять синфазную помеху, потому что входной импеданс входа cold относительно земли обнуляется, как и, собственно, сигнал.

Теперь по поводу разного уровня сигнала в "спектрально простых" и "спектрально сложных" фрагментах. Если обратиться к ветке @technotrasher , откуда произошло наше обсуждение, то в самом начале, когда я говорил о преимуществах простой фильтрации над разложением полного сигнала по ряду Фурье программным способом, я уже упоминал эту проблему. Попытаюсь ещё раз объяснить, в чём она заключается.
Возьмём обычный синусоидальный сигнал с частотой, допустим, 1кГц и амплитудой 10В. RMS этого сигнала будет = 7,07В. Разложим его на гармонические составляющие. Получим одну гармонику с амплитудой 7,07В:
изображение_2021-10-16_163659.png
А теперь возьмём два сигнала: 1кГц и 2кГц, чтобы общий RMS был тем же 7,07В. Получим 2 гармоники по 5В:
изображение_2021-10-16_164547.png
А теперь проделаем тоже самое с 6 сигналами: 100Гц, 300Гц, 1кГц, 3кГц, 10кГц, 15кГц:
изображение_2021-10-16_165808.png
Принцип понятен?
А теперь - усугубим. У нас нет отдельных гармоник, как я тут намоделировал - музыкальный спектр по большей части непрерывен. Часть гармоник попадает в полосу фильтров ближе к центральной частоте и тогда сохраняется принцип, продемонстрированный выше. Полосовые фильтры у нас неидеальные и то, что попадает на границу полосы - ослабляется на 3дБ. Полосы фильтров, исходя из datasheet, не пересекаются, а значит то, что попадает между полос - ослабляется ещё сильнее. Всё это "отбирает" мощность от тех гармоник, которые проходят-таки через фильтры. В результате - Standard output level для этой микросхемы - не 5В, как хотелось бы думать, а 0,65 - 1,7В, в зависимости от того, насколько удачная часть музыкального сигнала попадает в полосу видимости фильтров.
Я это к тому, что ровно та же проблема возникает при программном преобразовании Фурье: чем шире полоса сигнала, тем меньшая часть попадает под гармоническую базу преобразования, сокращая динамический диапазон. С учётом того, что в типичном музыкальном сигнале ВЧ часть и так на 5-10 дБ меньше СЧ+НЧ, в этой части диапазона динамический диапазон сокращается ещё больше. А разрешение АЦП у нас фиксированное, а это - ограничение динамического диапазона снизу ещё больше....