![]() |
![]() |
|||||||||||||||
Цифровой 8 канальный процессор обработки звука
Автор: AntoxaZ18 Всем привет, хочу поделиться с вами своим небольшим проектом. Я люблю слушать музыку в машине и дома, поэтому задумался о переходе на схему с поканальным усилением. От обычной схемы заключается в том, что отсутствуют пассивные кроссоверы на выходе усилителя, и на каждый динамик приходится отдельный канал. В чём преимущество такой схемы? Помимо увеличения мощности, улучшается и разрешение акустики за счёт того, что каждый диапазон усиливается своим усилителем. Так же это позволяет более точно настроить акустическую систему, так как каналы независимы друг от друга. Так как акустическая система обычно состоит из нескольких полос НЧ/СЧ/ВЧ, то необходимо разделить сигнал на отдельные полосы для каждого динамика: Где НЧ - частотная область работы сабвуфера СЧ - область работы среднечастотных динамиков Такую задачу можно решить с помощью перестраиваемых фильтров на операционных усилителях (кроссоверы линквица-райли). Но у этого решения есть недостатки: Исходя из задач были выдвинуты следующие требования: Схема Следующим этапом стало создание схемы устройства и выбор компонентов. В качестве выходного ЦАП я выбрал 8 канальный ЦАП А в качестве источника входного сигнала Компоненты выбирал не очень дорогие, так как это большей степени экспериментальный проект. Сердцем системы стал процессор STM32F745. Почему именно это процессор? Он имеет маленький, легкий для пайки корпус, а также достаточно серьезные возможности в области обработки сигналов. Имеет на борту все что нужно для работы со звуком: 7 каналов I2S + поддержка расширенных аудио протоколов типа TDM, 4 входа SPDIF, i2c, spi, ШИМ, аппаратное вычисление чисел с плавающей точкой и еще куча всего. Очень интересно было проверить его возможности на реальных задачах. Теперь пройдемся по получившейся схеме устройства: Она получилось достаточно гармоничной и лаконичной. Полная версия в формате Pcad и картинкой есть в приложении к статье. Схема подключения процессора: Процессор тактируется от внешнего кварца 8 МГц. Схема питания: Развязанный DC/DC преобразователь Ирбис. Максимальный ток модуля - 0,5А. Работает от 9 до 18 вольт. Выдает стабилизированное напряжение 6В и имеет вход Remote. Отдельные линейные стабилизаторы-отдельные для процессора, ацп, цап, аналоговой части свыходами 3,3 и 5В. К каждому подключены фильтрующие конденсаторы и ферритовые бусинки-фильтры.
Преобразователь USB->UART выполнен на базе микросхемы CP2103. Также с помощью нее осуществляется обновление программы процессора. Для сброса процессора и управления режимом загрузки (вывод BOOT0 процессора) необходимо настроить дополнительные выводы микросхемы.
SPDIF. Импульсы у него двуполярные, поэтому напрямую нельзя подавать на вход процессора. Для преобразования двуполярного в однополярный с помощью инвертора по схеме, которую рекомендует производитель чипов. Так же на входе стоит согласующий резистор 75 Ом. Конструкция Так как это проект экспериментальный и многое зависит от качества платы, я решил сэкономить время и заказал 2 шт на заводе Резонит. Саму плату развел с помощью лайт версии отечественной программы трассировщика TopoR, поэтому трассировка имеет некоторые особенности. Файлы платы буду в приложении. Сама плата на двух слоях и толщиной 2мм. Плату разводил с учетом корпуса, с ними у нас большие проблемы. Хотелось красивый корпус за вменяемые деньги и время. В итоге нашел на Алиэкспрессе достаточно неплохие на вид корпуса из алюминиевого профиля. В Китае можно найти разных типоразмеров. Нарезку пластиковых панелек сделали с другом на его мини чпу станочке, в сборе вышло достаточно симпатично. Плата в корпусе Программная часть Программа проста и сложна одновременно. Она должна запрашивать данные у АЦП, копировать на 8 каналов, обрабатывать их и отправлять в ЦАП. Особенность обработки состоит в том, что для реализации как эквалайзера так и кроссовера используются одинаковые фильтры, только с разным набором параметров.
Рассмотрим расчет на примере ФНЧ. Для расчета фильтров нам понадобятся 3 параметра: добротность Q, частота среза Fs, усиление/ослабление в дБ (dBgain). Переводим дБ в разы Рассчитываем параметры фильтра по следующим формулам: norm = 1 / (1 + K / Q + K * K); Формула для расчета выходного сигнала: Для создания фильтра 4 порядка используют последовательно 2 БИХ фильтра, настроенные на одинаковую частоту. Отличаются они только параметром Q (добротностью). Крутизна в данном случае уже составляет 12дб/октаву, аналогично можно продолжить далее. В таблице указаны параметры фильтров до 8го порядка (48 дБ/октава). Структура фильтра 8го порядка (фильтры 1 структуры): Тестирования производительности процессора показало возможность использования 25-30 фильтров на каждый канал на частоте дискретизации 48кГц или 12-15 фильтров на частоте дискретизации 96кГц при использовании библиотеки фильтров CMSIS DSP libarm_cortexM7lfsp_math.a кооторую можно скачать на сайте ARM.com. Параметры фильтров процессор хранит во внутренней энергонезависимой FLASH памяти. Исходники так же будут доступны в архиве, но так как проект немного не закончен то желающему воспроизвести мой опыт придется немного его доработать =) Проект написан в среде ECLIPSE компилятор использовался GCC 5.4. Измерения Выход ЦАП при подаче на вход АЦП синуса 1кГц АЧХ системы без фильтров (на входе белый шум) АЧХ системы кроссовер линквица-райли 4 порядка, частота среза 500Гц. Благодаря перестраиваемым на лету фильтрам можно задать какую угодно АЧХ. Выводы
Файлы: Все вопросы в Форум.
|
|
|||||||||||||||
![]() |
![]() |


![]() |
![]() |
|||
|
||||
![]() |
![]() |