Рассмотрим конкретное применение цифрового потенциометра в качестве регулятора громкости. Я решил использовать микросхему AD5242, это два потенциометра с интерфейсом I2C. Микросхема допускает питание от двуполярного источника. Но при таком питании напряжение может быть в диапазоне -2.5÷2.5 В. Моем случаи питание организовано от отладочной платы и состовляет +3.3В. В случаи однополярного питания для работы с двуполярным сигналом, потребуется положительное смещение. Так как музыкальный сигнал имеет симметричную форму, то логично выбрать смещение равное VCC/2. Это позволит подавать на вход сигнал с максимально амплитудой VCC/2.
Входная цепь.
Выбор схемы формирования напряжения смещения имеет большое значение. Первое, что приходит в голову для организации смещения это использовать простой делитель напряжения из потенциометра и резистора .
Значение резистора R1 равно полному сопротивлению потенциометра , таким образом в средней точке делителя напряжение равно VCC/2. Все просто, но данная схема имеет огромный недостаток. Крайние выводы потенциометра A2 и B2 имеют разный потенциал и при движении движка, постоянное напряжение на выходе будет меняться скачкообразно. Фронт данных скачков спокойно преодолевает разделительный конденсатор и попадет на вход усилителя, создавая щелчки при изменении громкости. Причем щелчки будут очень хорошо заметны на слух и это конечно неприемлемо.
Также из-за разности потенциалов на выводах потенциометра существует и еще одна проблема. Некоторые цифровые потенциометры в своем составе имеют схему детектирования нуля. То есть они переключают движок в момент перехода сигнала через ноль, что естественно положительно сказывается на вносимых искажениях. При таком включении функция детектирования нуля работать естественно не будет. К сожалению микросхеме AD5242 нет данной функции.
Для устранения шумов предлагается схема смещением постоянном током на основе мостика Уитстона.
При отсутствии сигнала на плечах потенциометра будет постоянное смещение VCC/2 . Ток через потенциометр не течет и потенциалы выводов A2 и B2 равны. Соответственно и напряжение на выходе всегда равно VCC/2, независимо от положения движка. Включение потенциометра по данной решает и проблему скачкообразного изменения выходного напряжения и не мешает работе схеме детектирования перехода через ноль .
Номиналы элементов тоже имеют свою роль Сin, R1 и R2 оказывают наибольшее влияние на входной импеданс, их номиналы должны быть достаточно большие. R2 и R3 напротив должны быть не очень большого сопротивления. Входной переменный сигнал будет делится между потенциометром и этими резисторами, если их номинал будут не очень большой то потери сигнала будут незначительны. Вся схема является фильтром низких частот, так что необходимо рассчитать значения номиналов, чтобы сигнал частотой 20 Гц ослаблялся минимально.
Все формулы и пример для микросхемы DS1802 приведены в документе Using a DS1802 Pushbutton Digital Potentiometer to Create an Audio Preamplifier with Attenuator.
Выходная цепь и управление.
Так выход схемы имеет довольно большое выходное сопротивление и маленький ток нагрузки около 1,5 мА. Для буферезации выхода был применен Rail-to-Rail операционный усилитель (ОУ) MCP6002.
Управление микросхемой происходит по интерфейсу I2C.
Slave Address Byte — адрес потенциометра с признаком чтения/записи.
Data Bytes — собственно выбор положения движка потенциометра.
На Instruction Byte стоит остановится поподробнее.
nA/B — выбор потенциометра.
RS — сброс потенциометра в середину шкалы.
SD — режим shutdown, обеспечивает максимальное ослабление входного сигнла. В таком режиме движок подключается к выводу B, вывод A отключается вовсе. При этом значение регистра потенциометра не сбрасывается, данную функцию можно использовать для организации режима Mute.
O1 и O2 — управление двумя логическими выходами микросхемы.
Заключение.
Учитывая все нюансы был разработан тестовый модуль на основе AD5242. Модуль показал себя хорошо, щелчки и искажения сигнала отсутствуют.
Схема и плата модуля выполнены в Altium Designer и приложены к статье.
В проекте Keil v.5 данный модуль используется совместно с модулем фотоприемника TSOP2136. Подробное описание модуля фотоприемника и алгоритма разбора посылок NEC можно найти в этой статье — Моя реализация протокола NEC.
Хорошая статья! спасибо разработчику)