Например TDA7294

РадиоКот > Схемы > Аудио > Разное

Простой регулятор громкости на TDA7448 с матрично-светодиодной индикацией

Автор: WiseLord, wiselord1983@gmail.com
Опубликовано 03.09.2015.
Создано при помощи КотоРед.

Предлагаемое устройство представляет собой простой шестиканальный регулятор громкости на базе 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-битов: берём заводские установки, к которым применяем следующие изменения:

  • устанавливаем CKSEL* в режим работы в режиме 8МГц от внутреннего генератора
  • BODEN и BODLEVEL устанавливаем в 0 (сброс МК при понижении питания ниже 4В)
  • EESAVE = 0 для того, чтобы содержимое EEPROM не стиралось при перепрошивке FLASH.

Для 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кБ, и есть возможности для дальнейшего его развития. Например:

  • можно добавить поддержку часы реального времени вроде DS1307, работающие по той же I²C шине, что и TDA7448 и отображать в ждущем режиме время.
  • можно управлять не только TDA7448, но и, например, темброблоками вроде TDA7313/TDA7439.
  • незадействованные входы АЦП ADC6/ADC7 можно попробовать использовать для индикации уровня аудио сигнала, заведя на них аудиосигнал через операционный усилитель. Правда, этих выводов нет на ATmega8 в DIP-корпусе, так что эта опция возможна только для TQFP-корпуса.

В общем, некоторый простор для развития проекта имеется, главное, чтобы это было кому-то интересно, а я постараюсь учесть возможные пожелания.

Успехов в повторении.

 

P.S. На 1 ноября 2015 г. добавлена поддержка других аудиопроцессоров:

- TDA7439 - 4 стерео входа, громкость/НЧ/СЧ/ВЧ/предусиление/баланс;
- TDA7312 - 4 стерео входа, громкость/НЧ/ВЧ/баланс;
- TDA7313 (PT2313) - 3 стерео входа, громкость/НЧ/ВЧ/фронт-тыл/баланс/тонкоррекция;
- TDA7314 - стерео вход, громкость/НЧ/ВЧ/фронт-тыл/баланс/тонкоррекция;
- TDA7315 - стерео вход, громкость/НЧ/ВЧ/баланс;
- TDA7318 - 4 стерео входа, громкость/НЧ/ВЧ/фронт-тыл/баланс,
- PT2314 - 4 стерео входа, громкость/НЧ/ВЧ/фронт-тыл/баланс/тонкоррекция,
- TDA7448 - 6 каналов, громкость/фронт-тыл/баланс/центр/сабвуфер

 


Файлы:
Файлы прошивки
Проект Proteus
Исходники


Все вопросы в Форум.


ID: 2408

Как вам эта статья?

 Нравится
 Так себе
 Не нравится

Заработало ли это устройство у вас?

 Заработало сразу
 Заработало после плясок с бубном
 Не заработало совсем

35 21 5