Мощные усилители высокого класса с линейным блоком питания обычно требуют дополнительных сервисных функций "обвязки".
В первую очередь, это плавная подача питания для исключения начального броска тока при зарядке буферных конденсаторов большой емкости. Для этого сетевое напряжение подают на БП через два реле. Первое подает питание на дополнительную обмотку трансформатора БП, либо запитывает его через термистор с обратной характеристикой сопротивления от температуры (NTC), либо через какой-нибудь иной балласт (мощный резистор, лампа и тп.). Второе реле подает на БП полное напряжение питания после небольшой задержки.
Во-вторых, такие усилители обычно работают на дорогостоящие акустические системы. При возникновении неисправности в схеме усиления не исключена подача полного напряжения питания на АС, что, из-за большой мощности блока питания и довольно высокого напряжения питания выходных каскадов с высокой вероятностью приведет к выходу динамиков АС из строя. Поэтому мощные усилители высокого класса непременно оснащаются схемой защиты АС, которая контролирует наличие постоянной составляющей на выходах УНЧ, и в случае аварии отключает АС.
В третьих, подключение АС к выходам УНЧ должно происходить с небольшой задержкой, во время которой успевают устояться переходные процессы после включения УНЧ.
Выключение УНЧ происходит в обратном порядке: сначала отключаются АС, а затем - блок питания УНЧ.
Это позволяет избежать щелчков и ударов в АС.
И, наконец, встает вопрос регулировки громкости. Использование обычных переменных резисторов не отвечает требованиям к аппаратуре высокого класса.
Их недостатки:
- сравнительно быстрый износ, появление шумов и шорохов при регулировании громкости;
- низкая точность передаточной характеристики (должна быть обратной логарифмической);
- значительный дисбаланс между каналами;
- невозможность дистанционного регулирования;
- для снижения наводок регулятор приходится устанавливать возле входных каскадов и снабжать механическими приспособлениями вроде валов, проходящих иногда почти через весь корпус УНЧ;
- для регулирования уровня при использовании дифференциальных сигналов на входе (что характерно для профессиональной аппаратуры) приходится использовать счетверенные регуляторы, которые редки и дорого стоят.
Существуют специальные прецизионные переменные резисторы, однако они стоят еще дороже, при сохранении ряда перечисленных недостатков.
Также, для дистанционного регулирования приходится применять узел мотор-редуктора со специальным драйвером (управление + контроль крайних положений).
Альтернативным вариантом является ступенчатый аттенюатор на реле и наборе резисторов (см., например, "регулятор Никитина"). Он лишен перечисленных недостатков, хотя и требует для реализации специальных малосигнальных реле реле и прецизионных резисторов нестандартных номиналов (или применение комбинации резисторов стандарных номиналов). Тем не менее, его преимущества налицо:
- можно разместить узел рядом со входными цепями;
- можно обеспечить хорошее экранирование;
- оказывает минимальное влияние на сигнал;
- доступно дистанционное реглуирование;
- без увеличения сложности можно работать с дифференциальным сигналом.
Очевидно, что выполнения перечисленных (и некоторых других) функций удобно привлечь узел управления на микроконтроллере.
Какие задачи он должен выполнять?
- обеспечивать включение и выключение УНЧ, т.е. дежурный и рабочий режим;
- выполнять плавное включение путем коммутации реле предварительной и полной подачи питания;
- контролировать работу узла защиты АС, и подключать АС к выходу УНЧ только в случае, если узел защиты не выдает сигнал аварии. Подключение осуществляется после некоторой задержки, когда переходные процессы после включения УНЧ устоялись. В случае, если узел защиты АС выдал сигнал аварии - не позволять использовать УНЧ, выдавать индикацию о характере неисправности. (для надежности саму защиту, как критически важный узел, рекомендуется реализовать на аналоговых элементах, не доверяя ее МК. В продаже есть множество готовых блоков);
- контролировать температуру выходных каскадов УНЧ. В случае перегрева - выдавать предупреждение, а в случае критического нагрева - выдавать предупреждение и, возможно, отключать АС и БП;
- принимать команды с пульта дистанционного управления как в дежурном, так и в рабочем режиме;
- управлять релейным аттенюатором как от сигналов пульта ДУ, так и с местного поста управления (экондер);
- показывать величину введенного ослабления сигнала;
- сохранять уровень громкости в EEPROM;
- показывать уровень входного сигнала;
- управлять коммутацией входов, при необходимости (выбранный вход сохраняется в EEPROM);
- как дополнительная функция - отображать в дежурном режиме что-нибудь полезное, например, время;
Для этих задач я разработала блок управления УНЧ на МК, который предлагаю Вашему вниманию.
Использован МК Atmega328p.
Блок использует OLED-индикатор 0,96 дюйма на чипе SSD1306 (1309 и 1315 скорее всего тоже будут работать). В качестве ручки управления используется энкодер с нажимным валом (нажатие включает-выключает режим MUTE).
Про управление с ИК-пульта ДУ на протоколе RC5 можно прочитать в соседней теме в этой же ветке.
Для того, чтобы все реагировало без задержек и в реальном времени, использованы прерывания, в процедурах которых происходит только необходимая обработка и выставляется флаг. Остальная обработка выполняется в цикле do-loop при проверке флагов от прерываний.
Энкодер сидит на самых первых в приоритере аппаратных прерываниях INT0 и INT1, приемник RC5 - на прерывании ICP, кнопка экнодера и кнопка "вкл-выкл" - на общих прерываниях PCINT.
АЦП для измерения уровня входного сигнала работает в непрерывном режиме с генерацией прерывания. По нему происходит отбор некоторого кол-ва сэмплов и выставление соотв. флага. Схема подключения (в макете) использует два резистора сопротивлением 36...68 кОм (одинаковые), соединение которых подключено на вход АЦП (использован канал 7), конец одного соединен с общим проводом, а конец второго - с выводом AFRE МК, на котором присутствует опорное напряжение. Таким образом, на входе АЦП в отсутствие сигнала имеется половина опорного напряжения, а отсчет АЦП ~ 512. Входной аудиосигнал подается на вход АЦП (и точку соединения резисторов) через конденсатор емкостью 0,1... 1 мкФ. Для оцифровки стерео-сигнала, чтобы избежать проникновения сигнала в соседний канал, возможно, использую ОУ. Буду благодарна за предложения вариантов (объединить два стерео-сигнала, желательно - дифференциальных, т.е. отвязанных от "массы", и подать на вход АЦП, с минимальным взаимодействием между каналами).
Также используется прерывание от Timer2 для периодического обновления информации (порядка 1 с).
Код, шрифты и прочее доступны по ссылке: https://cloud.mail.ru/public/kq2T/88iaDqPXr
. При долгом изучении и проработке этого вопроса пришёл для себя к некоторым моментам.

. Тут скорее играет роль -"это я смог, и только у меня" 