Состоит регулятор из двух основных микросхем: микроконтроллера ATiny26 и специализированного чипа TDA7448. Я добавил индикатор громкости (линейку из 7-и светодиодов), чтобы примерно знать, какой установлен уровень, ведь в роли ручки регулятора выступает неограниченно вращающийся энкодер.
Содержание статьи / Table Of Contents
↑ Решение задачи № 3 – регулятор громкости
Взяв за основу срисованную мной c платы разобранного «MICROLAB M-500» принципиальную схему, я дополнил её тремя каналами УЗЧ и блоком управления громкостью. В итоге получилась полная схема обновлённого устройства, которую я разбил на функциональные блоки для удобства.POWER SOURCE – двухполярный блок питания;
SUBWOOFER CHANNEL – канал басового усилителя;
FRONT RIGHT CHANNEL – передний правый канал;
FRONT LEFT CHANNEL — передний левый канал;
CENTRE CHANNEL – центральный канал;
REAR RIGHT CHANNEL – тыловой правый канал;
REAR LEFT CHANNEL – тыловой левый канал;
DIGITAL VOLUME CONTROL – плата управления громкостью;
FRONT VOLUME BAR – линейка светодиодов, показывающая текущий уровень громкости.
Модернизировать оригинальную схему питания «MICROLAB M-500» не стал, т.к. основную мощность от него забирает канал басов. Остальные каналы не требуют высокой мощности и им достаточно небольшого тока для воспроизведения музыки даже на высокой громкости.
А я себе собрал настольную систему и «втапливать» громкость мне нужды нет принципиально.
Управление чипом 6-канального электронного регулятора громкости TDA7448 осуществляется по двухпроводной I2C линии.
Я запланировал применить две ручки громкости: одна на корпусе, а вторая – выносная. Попытался применить мелкий микроконтроллер ATTiny13, т.к. требовалось всего-то передавать TDA7448 коды громкости и опрашивать энкодеры. Но у ATTiny13 слишком мало выводов. А попытка коммутировать выводы МК между энкодерами провалилась, т.к. возникла непобедимая помеха 1 кГц (частота опроса энкодера), и я слышал писк в колонках.
«Придушил жабу» и взял контроллер немного побогаче — ATTiny26. Добавил светодиодный индикатор громкости, чтобы лишние ноги МК также ушли в дело. И остался доволен!
↑ Печатная плата многоканального регулятора громкости
Печатная плата вышла двухсторонней и миниатюрной — 40x40 мм. На одной стороне расположилась микросхема TDA7448, а на другой — контроллер ATTiny26. По габаритам корпусов они «один в один».
↑ Сборка в корпус
Используя лакированные проводки от наушников, вывел контакты для индикатора громкости на отдельные штырьки и позже подключил к ним удлинительный шлейф до передней крышки корпуса.Также решил пустить проводку от блока питания через съёмные разъёмы, для удобства. Всё это безобразие стало выглядеть вот так.
В этот момент радости не было предела — оно работало! Всё регулировалось как задумано.
Для улучшения теплового режима добавил небольшой радиатор на заднюю крышку корпуса.
Ещё тут видно 6 RCA-входов (на каждый канал). Выключатель чуть выше управляет каналом басов — берём звук либо от передних двух каналов через смеситель, либо с гнезда RCA, как независимый канал.
Слева сверху вкручен разъём выносного энкодера для регулировки громкости, ведь корпус сабвуфера у меня находится под столом, и тянуться к нему неудобно.
Слева также находятся клеммы для подключения трёх дополнительных колонок (тыловая левая, тыловая правая и центральная колонки).
Все разъёмы между корпусом и платой (задней крышкой) сделал съёмными, для удобства монтажа.
Ниже показано, как всё выглядит после наведения порядка внутри корпуса.
На передней панели: штатный регулятор уровня басов исполняет свою обычную роль и, заменённый на энкодер, регулятор общей громкости.
Удачно вписалась шкала громкости из 7 светодиодов. Ранее тут стоял один красный светодиод, который сигнализировал о наличии питания.
↑ Программная часть
Регулятор работает как «Master Volume», т.е. регулирует уровень сигнала сразу во всех 6-ти каналах. При желании, систему можно доработать: добавить независимые регулировки уровней по каналам. Мне это не потребовалось, т.к. все каналы я сбалансировал однократно (при установке) средствами микшера Windows.Логика работы программы управления самая простая. При подаче питания микроконтроллер считывает из своей памяти EEPROM значение громкости, которое было до выключения питания и отправляет его на TDA7448. Получился полезный эффект: звук появляется не резко, а плавно нарастает до заданной громкости.
Была у меня одна загвоздка касаемо памяти EEPROM. Она ведь у контроллера не вечная, всего на 100 тысяч циклов записей/стираний, а у TDA7448 имеется 80 ступеней регулировки громкости и если сохранять каждый раз текущее значение громкости, то по моим подсчётам, ресурсов памяти EEPROM хватит примерно на 1 год. Решил эту проблему с помощью таймера задержки, т.е. уровень громкости сохраняется через пару секунд, с момента окончания изменения громкости. Так ресурса EEPROM должно хватить примерно на 10 лет, если менять громкость каждый день по 30 раз.
Можно было бы использовать всю область памяти EEPROM и менять ячейки для сохранения значения громкости при каждой записи, но это уже чересчур для меня.
У энкодера в конструкции предусмотрена кнопка. Я использовал её для режима «MUTE». При нажатии на ручку энкодера, микроконтроллер начинает отправлять чипу TDA7448 команды понижения громкости до 0. Повторное нажатие возвращает последнюю громкость.
Программа занимает чуть больше половины памяти микроконтроллера ATTIny26, который работает на частоте 1 МГц. Фьюзы у контроллера все заводские, менять ничего не нужно.
↑ Файлы
🎁 Прошивка для заливки (hex) — hex.zip 1.44 Kb ⇣ 51🎁 Программа в CodeVision AVR 3.12 (исходник) — code_source.zip 62.67 Kb ⇣ 54
🎁 Печатная плата в Sprint Layout v6.0 — pcb.zip 145.42 Kb ⇣ 63
↑ Заключение
Ура, воплотил мечту в реальность! Уже пару лет моё рабочее место за компьютером окружают пять колонок и сабвуфер. Слушаю объёмный звук и очень доволен результатами.Спасибо за внимание!
Всем удачи!
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.