В статье "Предусилитель на SSM2018T" [1] описан
высококачественный предварительный усилитель, построенный на базе микросхемы
SSM2018T. Кроме функции регулировки громкости предусилитель имеет коммутатор
входных источников звука, а также реле для приглушения звука (функция "Mute").
Предусмотрен буфер на входе усилителя (ОУ в корпусе DIP8 для оперативной
смены микросхемы), дополнительный выход (сразу после SSM2018T для подключения
усилителя наушников), выходной буфер (ОУ в корпусе DIP8 для оперативной
смены микросхемы), а также дифференциальный усилитель.
Управление SSM2018T можно сделать как аналоговым - посредством переменного
резистора и кнопок, так и цифро-аналоговым - посредством связки валкодер
(кнопки "+" и "-") + микропроцессор + ЦАП. Конечно же аналоговый вариант
будет проще, но в таком варианте будет затруднительно организовать все
режимы работы предварительного усилителя (режим приглушения при
включении/выключении усилителя, визуализация режимов работы, дистанционное
управление). В качестве примера, ниже привожу ссылку на временную схему
управления предварительным усилителем на базе SSM2018T.
Временная схема управления
Поскольку знакомство с основами программирования микроконтроллеров Atmel
у меня прошло успешно, то контроллер предварительного усилителя я решил
сделать на базе ATmega8. Он является гибкой управляющей системой предварительного
усилителя, который сопряжен с усилителями мощности и CD-проигрывателем.
Контроллер берет на себя управление всем стереокомплексом как с панели
предварительного усилителя, так и с пульта дистанционного управления.
• Общее описание
В принципе, данная схема родилась на основе статей Леонида Рюмика [2,3].
Использовались те же принципы построения схемы, подключение обвески к портам
ввода-вывода МК. Из аппаратных возможностей в МК задействован аппаратный АЦП
для оцифровки сигналов кнопок управления, внешнее прерывание INT0 для детектирования
сигнала с ИК приемника, EEPROM, детектор пониженного напряжения.
Схема контроллера для предварительного усилителя.
Описание схемы. Как видно из схемы контроллера
в нем выделено 4 основных функциональных блока, размещаемых в корпусе предварительного
усилителя:
- Левая плата управления, на которой расположены кнопки включения
питания предварительного усилителя, выбора источника звука и индикаторы
соответствующего режима ("Power", "Input1-Input5");
- ЖКИ (4 строки по 20 символов) и фоторезистор для реализации схемы регулировки
уровня подсветки индикатора;
- Правая плата управления, на которой расположены валкодер, ИК приемник,
кнопка приглушения звука ("Mute") и входа в меню ("Menu");
- Плата микроконтроллера, которая объединяет все вышеназванные блоки и к
которой подключается вся периферия в том числе блок питания.
Как уже было сказано, для подключения к МК [4] 8 кнопок был
задействован аппаратный АЦП (канал 5, порт PC5). Поскольку АЦП имеет разрядность
10 бит, то к нему возможно подключить практически какое угодно количество кнопок
(в идеале до 1024), правда учитывая разброс номиналов резистивного делителя это
количество резко сокращается до 64. В данном случае применено всего 8 кнопок
(диапазон напряжений 80-1200мВ, интервал 160мВ) и "защитный" интервал 40мВ.
"Защитный" интервал нужен для точного определения нажатой кнопки - например,
кнопке "Power" в программе определено значение 80мВ, тогда делитель напряжения
можно сделать с разбросом 40-120мВ. Для "обработки" таких кнопок в программе
создана функция key_adc.
Валкодер V1 контактного типа, поэтому обрабатывается в программе как обычная
кнопка - главным образом, устраняется дребезг контактов в функции key.
Можно применить полноценный валкодер, подключив его выходы к портам PD0, PD1.
ИК приемник A1 [5] подключается к порту PD2, который по
совместительству является портом внешнего прерывания INT0. Прерывание происходит
по спаду импульса, код попадает в функцию RC5decoder, которая возвращает
в программу значение соответствующей кнопки в шестнадцатиричном виде.
ЖКИ [6] подключается к МК по 4-х битной шине по линиям
PD4-PD7, управление происходит по двум портам: RS - PB0, EN - PB1. Для вывода
значений на индикатор в программе используются 4 функции: lcd_init - для
инициализации ЖКИ, lcd_com - для перевода курсора в нужное поле,
lcd_dat - для вывода единичного символа, lcd_puts - для вывода
строки. Все эти функции прописаны в файле lcd.c, который подключается в
make-файле.
Фоторезистор R10 является светочувствительным элементом в схеме регулировки
яркости подсветки ЖК индикатора в зависимости от освещения рабочей зоны
предварительного усилителя. Схема является полностью аналоговой и собрана на
отдельной микросхеме - компараторе DA1. VT1 служит для включения данной схемы
(подает минус питания на выводы 1,4 микросхемы).
Сдвиговые регистры (shift-регистры) DD2 и DD6 [7] подключены
к МК по 3-х проводной шине SPI. Тактирование регистров осуществляется портом PC1,
по порту PC0 в регистры передаются данные, а по портам PB2 и PB3 осуществляется
запись данных в соответствующий регистр (порт LCH регистров DD2 и DD6) с помощью
программной функции SPI8MSB, прописанной в файле spi.c, который
подключается в make-файле.
DD2 служит для индикации номера входа (к портам Q1-Q5 подключены
соответствующие светодиоды), управления реле входного селектора (порты Q1-Q5
выведены на вилку XS9) и управления реле приглушения звука (порты Q6-Q7
выведены на вилки XS10, XS11). Для включения соответствующего реле входного
селектора данные в регистр DD2 записываются через функцию input, а для
управления реле приглушения звука через функцию cntrmute.
DD6 служит для управления внешними нагрузками, в моем случае, таким образом,
осуществляется управление CD-проигрывателем Pioneer PD-S703 - к его матрице
кнопок управления подпаян разъем DB9, который соединяется с платой контроллера
предварительного усилителя (вилка XS17). При замыкании соответствующих контактов
КМОП-реле К1-К4 активируется одна из 8 команд проигрывателя (On/Off, Play,
Pause, FFD, RFD, Stop, Open, Shuffle). Данные команды подаются с пульта ДУ,
дешифруются функцией RC5decoder, при условии совпадения команды с
необходимой нам выполняется соответствующее действие с помощью функции
remote записи слова в регистр.
Микросхемы DD4, DD5 [8] - 12 битные ЦАП, ради которых
и затевалась схема контроллера.
Подключены к МК таким же образом как и регистры - по 3-х проводной шине SPI.
Тактирование и передача данных осуществляется теми же портами, что и на регистры,
разрешение записи данных в ЦАП осуществляется по портам PB4, PB5. Данные
заносятся в ЦАП программной функцией SPI12MSB, прописанной в файле
spi.c, который подключается в make-файле. В программе реализована
управляющая функция data, в которой преобразуются входящие данные
(уровень громкости в дБ) в 3-х разрядный шестнадцатиричный вид и передаются
в ЦАП внешней функцией SPI12MSB.
Микросхема DD1 [9] - часы реального времени, подключенные
к МК с помощью программной реализации шины I2C.
В данной программе работа микросхемы не реализована. Планируется ее дальнейшее
подключение для реализации отображения на ЖКИ текущего времени, организации
функции будильника и режима засыпания.
Схема блока питания предварительного усилителя.
Осталось рассказать об остальных портах МК: Порт PD3 предназначен для
включения реле блока питания (K1) для подачи напряжения питания на аналоговые
узлы предварительного усилителя, а также "активации" схемы регулировки яркости
подсветки ЖК индикатора. Порты PC2, PC3 служат для включения усилителей
мощности №1 и №2 с помощью функции amplifier. Порт PC4 предназначен
для организации "сервисного" режима усилителя мощности, например, отключение
акустических систем от его выхода.
Работа схемы. При подключении предварительного
усилителя к сети 220В с дежурного блока питания (трансформатор TV1) подается
+12,6В на вилку XS14.
Поскольку транзистор VT2 блока питания закрыт, то транзистор VT1 открыт и
светодиод HL1 горит красным цветом. При подаче питания на МК происходит
начальная инициализация контроллера с помощью функции init_main
(определение параметров портов ввода-вывода, заполнение ЦАП - принудительное
отключение звука, обнуление регистров, инициализация ЖКИ, вывод приветствия
"Wellcome", выключение дисплея индикатора, запуск АЦП и разрешение прерываний)
- теперь контроллер готов к приему двух команд:
- Включение предварительного усилителя кнопкой "Power" на передней панели;
- Включение предварительного усилителя кнопкой "Power" с пульта ДУ.
Управление предварительным усилителем с пульта ДУ повторяет процесс управления
кнопками на передней панели усилителя, отличие лишь в использовании
дополнительной функции RC5decoder для приема команды, которая запускается
при наличие внешнего прерывания по порту PD2, и наличии дополнительных команд
управления CD-проигрывателем.
При выполнении любой из двух команд происходит инициализация при включении
с помощью функции init_begin (включение реле K1 блока питания,
инициализация ЖКИ, вывод приветствия "Hello", чтение EEPROM и запись запомненных
при предыдущей работе данных в ЦАП и "входной" регистр, включение УМЗЧ №1
или 2, выключение режима приглушения звука и вывод данных на ЖКИ) и переход
в бесконечный цикл while(STBY == 1). При этом светодиод HL1 гаснет.
В цикле постоянно проверяются условия выполнения той или иной команды
(проверка нажатия кнопок входов №1-5, "Plus", "Minus", "Menu", "Mute", "Power")
и каждые 10 секунд происходит обновление данных ЖКИ. При наличии любой команды
происходит ее выполнение с помощью соответствующих функций и запоминание
параметров в EEPROM. Если встречается нажатие кнопки "Power" запускается
функция init_end (заполнение ЦАП - принудительное выключение звука,
обнуление "входного" регистра - отключение реле селектора и "Mute", очистка
дисплея индикатора, вывод прощания "See You!", отключение УМЗЧ №1 и 2,
отключение реле K1 блока питания, выключение дисплея индикатора), после
которой контроллер переходит в режим ожидания - бесконечный цикл while(1).
• Детали
На данном этапе до сих пор не сделана печатная плата для контроллера - вся
конструкция собрана на макетной плате. Для блока питания разведена плата и
есть собранный прототип (см.ниже).
Описание |
Ссылка |
Исходники программы управления для WinAVR
(makefile, подключаемые модули, краткое описание) |
|
Плата контроллера устройства в формате Sprint Layout |
|
Плата блока питания устройства в формате Sprint Layout |
|
Прошивка для микроконтроллера |
|
• Налаживание
Касаемо схемы блока питания - налаживание сводиться к установке
подстроечными резисторами (VR1, VR2) выходного напряжения ±15В.
Касаемо схемы контроллера - налаживание сводиться к установке
подстроечными резисторами (VR1, VR2) контрастности дисплея индикатора
и желаемой подсветки дисплея в зависимости от условий освещенности.
Относительно программы микроконтроллера наладка довольно сложная -
необходимо знать адрес вашего пульта дистанционного управления и
номера команд соответствующих кнопок, чтобы прописать их в заголовке
программы. Кроме этого, возможно понадобиться скорректировать напряжения
делителя кнопок и выбрать кнопки на пульте ДУ для управления внешними
нагрузками.
• Внешний вид конструкции
Блок питания (вид сверху).
|
Абсолютно черновой вариант схемы управления.
|
• Ссылки по теме
- Предусилитель на SSM2018T - статья о моем предварительном усилителе;
- Микроконтроллеры AVR. Ступень 1-10 - подборка статей Леонида Рюмика;
- Сайт журнала Радиохобби - для поиска статей Сергея Рюмика "Микроконтроллерное управление звуком-1,2,3";
- ATmega8 AVR 8-bit Microcontroller - datasheet на микроконтроллер;
- Photo Modules for PCM Remote Control Systems - datasheet на ИК приемник;
- LCD PC2004-A - спецификация использованного ЖКИ;
- 74HC595 Serial Input Shift Register - техническая документация на регистр 74HC595;
- DAC8512 Serial Input Complete 12-Bit DAC - datasheet на ЦАП;
- DS1307 64 x 8 Serial Real-Time Clock - datasheet на RTC.
Последнее обновление 08.10.2011
|