В техническое описание цифровых потенциометров (ЦП) семейства MCP4xxx компании Microchip включена (на странице 15, Рисунок 4-4) интересная схема применения, состоящая из управляемого ЦП усилителя с псевдологарифмической установкой коэффициента усиления. Однако, как объясняется в сопроводительном тексте Microchip, диапазон коэффициентов усиления, реализуемых этой схемой, начинает радикально меняться, когда установка потенциометра приближается к 0 или 256. Как указывает Microchip: По мере приближения движка к любому из концов потенциометра размер приращения коэффициента усиления на один шаг движка резко увеличивается. Эта схема рекомендуется для коэффициентов усиления от 0.1 до 10 В/В.
Это хороший совет. К сожалению, при этом фактически выбрасывается 48 из 256 8-битных положений движка, что составляет почти 20% доступного разрешения. Простая модификация схемы, показанная на Рисунке 1, позволяет избавиться от этого ограничения.
Рисунок 1. | Для ограничения диапазона усиления рекомендуемыми пределами при сохранении полного 8-битного разрешения добавлены два постоянных резистора. |
В результате получается красная кривая зависимости коэффициента усиления от кода, показанная на Рисунке 2.
Рисунок 2. | Псевдологарифмическая характеристика усиления, несколько улучшенная в результате простой модификации, показанной на Рисунке 1. |
Однако, несмотря на это улучшение, ключевым словом остается «псевдологарифмический». Это все еще не настоящая логарифмическая функция и, по сути, количественно даже не очень близка к ней, местами отклоняясь почти в два раза.
Можем ли мы сделать лучше? Да!
Простой (программный) трюк заключается в подготовке 257-байтной поисковой таблицы логарифмов, которая переводит установки усиления в диапазоне от 0.1 до 10.0 в коды ЦП, необходимые для формирования логарифмов этих коэффициентов усиления.
Обозначим индексную переменную таблицы буквой J. Тогда для 257-байтной таблицы (абсолютных) значений усиления G в диапазоне от 0.1 до 10.0 включительно получаем
Примеры:
J(0.1) = 0,
J(0.5) = 89,
J(1.0) = 128,
J(10.0) = 256,
и т. д.
Рассмотрение выражения для коэффициента усиления на Рисунке 1 показывает, что десятичный код N, необходимый для (абсолютного) коэффициента усиления G, равен:
таким образом
Полученная взаимосвязь между G, J и N представлена на Рисунке 3.
Рисунок 3. | Зависимость установки ЦП N(J) от индексной переменной таблицы логарифмов J(G), обобщающая взаимосвязь между G, J и N. |
Таблицу логарифмических коэффициентов усиления можно загрузить по ссылке [1]. Конечный результат, с настолько хорошим соответствием логарифму, насколько это позволяют 8 бит, представлен в виде прекрасной зеленой линии на Рисунке 4.
Рисунок 4. | Зависимость абсолютного коэффициента усиления [GАБС = 10(J/128 – 1)] от десятичного кода J. |