![]() |
![]() |
||||||||||||
Простой регулятор громкости на TDA7448 с матрично-светодиодной индикацией
Автор: WiseLord, wiselord1983@gmail.com Предлагаемое устройство представляет собой простой шестиканальный регулятор громкости на базе TDA7448 с управлением по шине I²C. В качестве микроконтроллера применён популярный AVR ATmega8, в качестве индикатора - две светодиодные 8x8 матрицы GNM15881BG. Устройство управляется с помощью трёх кнопок и механического энкодера типа PEC12. Также поддерживается регулировка с помощью пульта ДУ, работающего по протоколу RC5. Фото платы блока управления: И с обратной стороны: Кнопки и фотоприёмник расположены на самой плате с лицевой стороны, для подключения же энкодер подключается шлейфом к шестиконтактному разъёму. Кнопка энкодера может дублировать кнопку 3. Для управления динамической развёрткой были применён популярный сдвиговый регистр 74HC595 и транизсторная сборка ULN2803. Естественно, никто не мешает вместо сборки применить дискретные полевые или биполярные (с резисторами в базе) транзисторы. Подобная схема управления матрицами была использована автором статьи о простых светодиодных часах, там же можно найти информацию о том, как заменить ULN2803 на транзисторы. Схема блока управления регулятором громкости выглядит следующим образом: Поскольку 16 выводов МК задействованы на управления анодами матриц, с управлением кнопками и энкодером пришлось немного помучиться. Все кнопки и механический энкодер подключены к одному входу МК, подтянутому резистором к линии питания. На выходах ULN2803 на фоне единиц "гуляет" ноль развёртки строк. Если в какой-то момент нажать одну из кнопок или повернуть энкодер так, что он замкнётся на линию BUTTON, то по приходу этого ноля на соответствующую линию, ULN2803 вытянет через диод линию BUTTON в нулевое состояние, а уже микроконтроллер, зная, в какой фазе развёртки он находится в данный момент, обработает это действие. Желательно использовать диоды Шоттки с меньшим по сравнению с обычными диодами падением в прямом направлении. Я, правда, применил некие купленные на рынке S1M, судя по всему, с обычным p-n-переходом, но тоже всё нормально работает. Схема самого регулятора громкости без изменений взята из даташита: Плата для TDA7448 - отдельная, и изготовить её много проще платы управления: И со стороны деталей: Сама микросхема по сути является регулятором шести отдельных полностью равнозначных каналов. То есть, каждый из них регулируется независимо. На практике при использовании TDA7448 в качестве регулятора громкости для 5.1 системы это неудобно, поэтому эти 6 каналов сведены в "виртуальные" каналы:
Эти пять режимов перебираются по кругу кнопокй 3, после чего энкодером регулирует выбранный параметр. При отсутствии в течение 2 секунд каких-либо действий экран возвращается в режим управления громкостью. Каждый режим сопровождается своей собственной "иконкой" 5x5. Например, для регулировки баланса: Кнопка 1 включает-выключает систему. Кстати, если кто-то будет проверять проект в Proteus (или собирать реальное устройство), не забудьте, что начальное состояние - дисплей выключен, так что надо нажать эту кнопку, чтобы что-то начало выводиться на экран. Кнопка 2 включает-выключает режим MUTE. Помимо кнопок, система может управляться пультом, работающим по стандарту RC5. Коды кнопок (STANDBY, MUTE, VOL_UP, VOL_DOWN, MENU) стандартные, поэтому система должна сразу же заработать с любым подобным пультом от любого телевизора вроде "Горизонт". В качестве ИК-приёмника можно использовать TSOP2138 или аналоги. По поводу FUSE-битов: берём заводские установки, к которым применяем следующие изменения:
Для avrdude в результате должны получиться lfuse=0x24 и hfuse=0xD1. Скриншоты приводить не буду, так как программаторов много и у всех всё по-разному. Можно использовать калькулятор FUSE-битов. Как это работает вживую, можно посмотреть в коротком видео. В качестве светодиодных матриц были применены GNM15881BG (с общим анодом), у которых выводы 5, 2, 7, 1, 12, 8, 14, 9 - аноды, а выводы 13, 3, 4, 10, 6, 11, 15, 16 - катоды. Но можно применять и любые другие матрицы, при необходимости повернув на 90 градусов (матрицы с ОК). Этот регулятор громкости был сделан "just for fun", большей частью для того, чтобы просто разобраться с динамической индикацией на 74HC595. Поэтому он получился достаточно простым, без излишних наворотов. Из 8кБ FLASH-памяти израсходовано всего 3кБ, и есть возможности для дальнейшего его развития. Например:
В общем, некоторый простор для развития проекта имеется, главное, чтобы это было кому-то интересно, а я постараюсь учесть возможные пожелания. Успехов в повторении.
P.S. На 1 ноября 2015 г. добавлена поддержка других аудиопроцессоров: - TDA7439 - 4 стерео входа, громкость/НЧ/СЧ/ВЧ/предусиление/баланс;
Файлы: Все вопросы в Форум.
|
|
||||||||||||
![]() |
![]() |


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