Журнал РАДИОЛОЦМАН, ноябрь 2019
Цифровые потенциометры (ЦП) – это повсеместно распространенные компоненты, доступные в различных корпусах, с разными вариантами сопротивления и разрешения. Однако немногие реализуют с их помощью что-либо, кроме обычной линейной функции зависимости сопротивления от установленного кода. Этот факт создает проблемы для приложений, которым необходим широкий (то есть, несколько декад) динамический диапазон регулировки усиления.
Представьте, например, усилитель с усилением, которое вы устанавливаете в диапазоне от 0 до 10,000 (80 дБ), используя 8-битный ЦП (с разрешением 1/256). При линейной зависимости сопротивления от положения движка (линейная функциональная характеристика) зависимость усиления от записанного кода также будет линейной. С каждым шагом, смещающим движок потенциометра вверх к одной из 256 позиций, коэффициент усиления инкрементируется приблизительно на 40 (то есть, усиление будет проходить значения 0, 40, 80, 120, 160 и т. д.).
Для кода положения движка 8 или больше (усиление более 300) это обеспечивает достаточно хорошее разрешение, позволяя получить шаг регулировки усиления 1 дБ или лучше. Однако при значениях ниже 8 разрешение по усилению существенно ухудшается. Например, если требуется установить усиление 100 или меньше, о достижении какой-либо приемлемой точности можно забыть. Единственным выбором будут значения около 80 или около 120.
Если бы был доступен точный, стабильный цифровой потенциометр с высоким разрешением и логарифмической характеристикой (логарифм сопротивления, пропорциональный записанному коду), организовать схему управления усилением, которая обеспечивала бы постоянное разрешение в дБ на инкремент во всем диапазоне регулировки, было бы легко. К сожалению, логарифмических цифровых потенциометров с хорошим разрешением (то есть, менее 6 дБ на шаг) не существует.
Но не все потеряно. Идея, представленная на Рисунке 1, реализует близкое к логарифмическому управление усилением с помощью обычного линейного ЦП (такого, например, как выпускаемый Analog Devices недорогой биполярный AD5200).
![]() |
||
Рисунок 1. | Линейный цифровой потенциометр моделирует логарифмическую функциональную характеристику. |
Обозначим десятичное представление положения движка потенциометра (0 – 255) как Dx. Расчетную формулу для зависимости коэффициента усиления усилителя VOUT/VIN от Dx легко вывести, если делать это поэтапно. Прежде всего, представим напряжение движка VW в виде функции входного напряжения VIN:
![]() |
(1) |
Теперь выражаем VOUT как функцию VW:
![]() |
(2) |
Затем объединяем выражения 1 и 2:
![]() |
(3) |
где G – коэффициент усиления.
![]() |
(4) |
![]() |
(5) |
И, конечно же:
![]() |
(6) |
и
![]() |
(7) |
Мы получаем:
![]() ![]() |
(8) |
Интересные особенности полученных уравнений для усиления включают в себя:
![]() |
||
Рисунок 2. | Зависимость усиления в дБ (ось y слева) и разрешения установки усиления (ось y справа) от Dx (ось x). |
- Обещанное (приблизительно) логарифмическое поведение Dx/(255 – Dx). Как видно из Рисунка 2, при R2/R1=100 установка Dx = 8 дает усиление примерно 10 дБ, далее при Dx равном 23, 128, 232 и 247 коэффициент усиления будет увеличиваться, соответственно, до 20 дБ, 40 дБ, 60 дБ и 70 дБ. Особенно важно то, что разрешение установки усиления остается не хуже 1 дБ во всем диапазоне 60 дБ (1000:1). Кроме того, Dx = 0 устанавливает нулевое усиление, а Dx = 255 разрывает обратную связь.
- Использования движка потенциометра в качестве входного контакта эффективно перемещает вывод движка внутрь контура обратной связи усилителя А1 (Рисунок 1), тем самым исключая его вклад в ошибку усиления и улучшая временнýю и температурную стабильность настройки усиления.
- Использование элемента RAB одновременно в качестве резистора обратной связи усилителя A1 и входного резистора A2 (Рисунок 1) снижает чувствительность к отклонению и температурному коэффициенту сопротивления RAB , оставляя R1 и R2 единственными доминирующими факторами, определяющими точность установки усиления.
- Если требуется разрешение, лучшее, чем 8 бит (1/256), можно выбрать такую микросхему, как 10-битный ЦП AD5292, с помощью которой точность управления усилением можно повысить в четыре раза. Только не забудьте в формулах для усиления 255 заменить на 1023! Или, в общем случае, для N-битного ЦП:
![]() |
(9) |