Например TDA7294

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

Аудиопроцессор с микроконтроллерным управлением на TDA7313 и открытым исходным кодом прошивки

Автор: olew, trifonidi@yandex.ru
Опубликовано 11.02.2015.
Создано при помощи КотоРед.

   Целью данной публикации является желание довести до радиолюбителя, возможно начинающего осваивать программирование микроконтроллеров на языке C, программный материал на примере исходного кода моего проекта аудиопроцессора для УМЗЧ, а также конструкцию, выполненную на широко доступных деталях. По сему публикую здесь исходный код проекта ну и, конечно же необходимые для повторения схемы, чертежи и прошивку.

   В свою очередь целью создания моего проекта явилась необходимость создания достаточно простого по конструкции и удовлетворяющего по параметрам при этом аудиопроцессора для великолепного любительского усилителя (Николай Сухов. УМЗЧ ВВ. Радио, №6, 89, стр. 55 – 57, №7, 89, стр. 57 – 61.). См. в инете. Здесь хочу выразить свои глубочайшие благодарность, респект и уважение Автору за неповторимо прекрасное звучание его проекта.

   Сразу сделаю оговорку: такой усилитель лучше подключать напрямую (без предусилителя) к качественной звуковой карте, тем самым исключая лишние искажения звука.

Но иногда возникает необходимость подключить к усилителю, например, выход домашнего DVD, планшета, айфона и т.п. и тогда без аудиопроцессора не обойтись.

   Блок управления был умышленно создан с LED индикацией по причине того, что готовый промышленный LCD дисплей не вписывался в мою конструкцию по размерам, ну и его просто у меня не было. Зато были вездесущие семисегментные светодиодные индикаторы (от спутниковых ресиверов Arion и др., идущих сейчас под пресс). Их преимущество – красивое яркое свечение.

   Реализован полный интерфейс управления TDA7313 (ну за исключением лишь управления GAIN по входу – она фиксирована на уровне +3,75dB).

   Реализовано дистанционное управление параметрами по протоколу RC-5. Для него я использовал пульт от старого видеомагнитофона Philips.

   Можно использовать любой другой пульт, работающий по протоколу RC-5, прописав коды команд пульта в соответствующий модуль программы.

   С клавиатурой на панели самого аппарата не мудрил – всего 4 кнопки: «выбор параметра», «прибавить», «убавить» и кнопка быстрого отключения звука.

   Звуковые характеристики блока аудиопроцессора определяются спецификацией на TDA7313.

Аудиопроцессор конструктивно выполнен в виде трех блоков:

                                                                                                                                                                     1. Блок управления.

Схема блока управления

Плата блока управления (вид со стороны дорожек)

    Блок управления построен на контроллере PIC16F873 исходя из недорогой его стоимости и подходящих параметров. Именно: достаточное количество ножек, наличие I2C аппаратного интерфейса, достаточно простой программной инициализации регистров управления (почти все они после сброса по включению питания принимают подходящие значения. См. спецификацию на PIC16F873). Может быть применен так же и PIC16F873A, конечно с соответствующим переносом на него исходного кода, учитывая его спецификацию.

    Резисторы планарные (полно их сейчас везде). Тип транзисторов коммутатора анодов выбран из удобства их конструкции (найдете их в старых кассетных автомагнитолах LG).

Внимание! При монтаже не забудьте про перемычку между 8 и 19 выводами микроконтроллера. См. файл «плата контроллера резюме.lay6». Запаяйте её первой.

2. Блок индикации

- выполнен отдельно, т.к. это было конструктивно удобно.

Схема блока индикации

Плата блока индикации (вид со стороны дорожек)

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

3. Блок собственно аудиопроцессора

- выполнен отдельно для экранирования его от цифровых помех со стороны платы блока управления. Также это было сделано потому, что было изготовлено несколько вариантов блоков с разными аудиопроцессорами для выбора наилучшего звучания. Ну могу сказать с уверенностью, что TDA7313 от ST звучит лучше, чем PT2313L. У TDA7318 нет тонкомпенсации. У TDA7440 маловат диапазон регулировок и опять же нет тонкомпенсации. Конечно, интересна микросхема TDA7419 – но… это уже другая тема (навороченное управление).

Схема блока аудиопроцессора

Плата блока аудиопроцессора (вид со стороны дорожек)

   Схема и плата блока аудиопроцессора взяты вот из этой http://radiokot.ru/circuit/audio/filter/05/ публикации. Но мной сделана существенная , на мой взгляд, для качества звука доработка – разделение цифровой и аналоговой масс.

   Цифровая масса приходит со стороны блока управления. Аналоговую же массу следует подключить к массе входного каскада УМЗЧ. Если аудиопроцессор и УМЗЧ выполняются в отдельных корпусах, то последняя рекомендация осуществится сама-собой.

Управляющая программа.

   Написана с помощью MicroC pro v4.60 (rutracker.org в помощь). Исходный код здесь приводится, причем с обильным, на мой взгляд, комментарием. Можете его модифицировать как Вам угодно, использовать куски при написании собственных программ и т.п. Для этого и затевалась отчасти эта статья. Язык C лучше всего понимаешь на действующих примерах исходного кода, который не все выкладывают по понятным причинам. Пользуйтесь на здоровье. Сразу скажу, я не профессионал в языке C, но программу старался писать понятно и не запутывать. Все работает. Приму любые конструктивные замечания и предложения касаемо моей проги.

   Индикация работает через прерывания по TMR0. Подпрограмма обработки прерываний и функция вывода символов см. строки 113 – 159 кода.

   RC-5 код расшифровывается методом проверки состояния контрольного вывода контроллера через определенные стандартом RC-5 временные интервалы (здесь о стандарте: http://led-displays.ru/ir/philips_rc5.html , http://www.radiohlam.ru/teory/rc-5.htm , документ «Инфракрасное дистанционное управление.» (с)2007, А. Торрес, Нетания – поиск в помощь). Соответствующая подпрограмма см. строки 161 – 206 кода.

   Парсер команд, принятых с пульта, см. строки 248 – 263 кода. Здесь Вы можете подставить свои байты команд для своего пульта (стандарта RC-5 конечно же). Учтите, что в моей программе проверяется адрес устройства, адресуемого пультом. Бит toggle определяется, но я его не использовал. Если найдете ему достойное применение, дайте мне знать. Чтобы определить коды, передаваемые пультом, мной был собран анализатор кода пультов (См. http://slydiman.narod.ru/scr/rcexplorer.htm ) .

   Для работы с I2C шиной используется стандартная библиотека MicroC pro v4.60 для работы с аппаратным I2C интерфейсом.

Прошивка.

   В связи со спецификой MicroC pro v4.60 биты конфигурации контроллера были изначально включены в прошивку, но, видимо, разные программаторы по-разному их интерпретируют (н.п. мой китайский TL-866A в инверсе). Поэтому здесь привожу значение битов конфигурации:

 

Бит CP1 CP0 DEBUG -- WRT CPD LVP BODEN CP1 CP0 -PWRTE WDTE FOSC1 FOSC0
Значение 1 1 1 -- 1 1 0 0 1 1 1 0 0 1

 

, что соответствует такому состоянию контроллера:

Защита памяти программ отключена.

Внутрисхемная отладка отключена.

Запись во FLASH память программ разрешена.

Защита памяти данных отключена.

Вывод RB3/PGM функционирует как вывод порта, программирование через Vpp.

Сброс по снижению напряжения питания запрещен.

Таймер включения питания отключен.

Сторожевой таймер отключен.

Выбран внешний кристальный тактовый генератор.

О файлах.

 В файле "документация" - схемы, чертежи и эта статья в разных форматах.

В файле "проекты MicroC и Proteus" - исходный код и полные проекты программы.

В файле "прошивка" - она самая.

 

   Немного о файле проекта Proteus, находящемся в архиве вместе с проектом моей программы. Он создан в Proteus 7.7 sp2 (rutracker.org в помощь) на начальном этапе проектирования устройства, главным образом для визуализации процесса отладки индикации.

   При добавлении в него законченной версии прошивки может и закапризничать – таков предел возможностей протеуса. Однако для желающих посмотреть индикацию могу сказать что в проге (строка 238) иногда нужно изменить значение для предделителя, подключенного перед TMR0, на

OPTION_REG = 0b11010100; или OPTION_REG = 0b11010011;

Это зависит от производительности компьютера, на котором будете запускать проект.

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

Желаю удачи в повторении проекта.

Трифонов О.Г. г. Данилов Ярославской обл.

trifonidi@yandex.ru


Файлы:
документация
проекты MicroC и Proteus
прошивка


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


ID: 2064