Аналоговый входной интерфейс для любого микроконтроллера

Panasonic XN02401 XN04601

Простой АЦП на Рисунке 1 идеально подходит для передачи аналоговых сигналов в чисто цифровой микроконтроллер. Его можно собрать, используя всего пять компонентов для поверхностного монтажа, которые стоят менее 50 центов, что примерно вдвое дешевле однокристального АЦП того же объема. Кроме того, для работы этой конструкции требуется только один вывод микроконтроллера. Хотя всегда можно купить микроконтроллер со встроенным АЦП, в некоторых случаях такое решение непрактично. Например, в моем случае к уже разработанному USB-совместимому микроконтроллеру с чисто цифровым интерфейсом потребовалось с минимальными затратами добавить аналоговый вход для потребительского приложения. В схеме на Рисунке 1 используются транзисторные сборки компании Panasonic. Q1/Q2 и Q3/Q4 – это пары транзисторов, объединенных в одном корпусе. На сборке Q1/Q2 сделан преобразователь напряжение-ток. Напряжение на эмиттере транзистора Q1 на величину падения на p-n переходе больше, чем на его базе. Напряжение база-эмиттер транзистора Q2 повторяет исходное входное напряжение на резисторе R1, а затем R1 преобразует это напряжение в ток.

Используя две транзисторные сборки и три дискретных компонента можно собрать аналоговый интерфейс для микроконтроллера.
Рисунок 1. Используя две транзисторные сборки и три дискретных компонента можно собрать
аналоговый интерфейс для микроконтроллера.

Сборка Q3/Q4 сконфигурирована стандартным токовым зеркалом. Ток, протекающий в коллекторе Q3, пропорционален току коллектора Q4. Выходное сопротивление коллектора Q4 велико, поэтому Q4 может считаться источником тока. Ток транзистора Q4 заряжает конденсатор C1 со скоростью, пропорциональной входному напряжению. Для значений номиналов компонентов, показанных на Рисунке 1, время преобразования изменяется от 3 мс при входном напряжении 4 В до 56 мс при входном напряжении 0.1 В. В схеме используется тот факт, что большинство микроконтроллеров общего назначения имеют двунаправленную структуру портов ввода-вывода. То есть, вывод порта можно запрограммировать как вход или как выход. Когда вывод настроен как вход, его входное сопротивление очень велико, и он может отслеживать линейно нарастающее напряжение во время заряда конденсатора C1. Когда выход запрограммирован как выход, на нем можно установить низкий логический уровень, чтобы он разряжал C1 для следующего цикла преобразования. Описанная последовательность действий реализует операцию цикла аналого-цифрового преобразования. Основные операции выполняются в следующей последовательности:

  1. На выводе микроконтроллера, к которому подключен АЦП, установить «лог. 0» для разряда конденсатора C1.
  2. Сбросить выбранный таймер микроконтроллера.
  3. Настоит вывод микроконтроллера как вход.
  4. Запустить таймер и позволить ему вести отсчет до тех пор, пока на входе микроконтроллера не будет считана «лог. 1».
  5. Остановить счетчик таймера.
  6. С помощью какого-либо подходящего масштабного коэффициента преобразовать число в таймере в выходное напряжение АЦП.
  7. Начать все сначала для подготовки следующего преобразования.

Значение, которого достигает счетчик таймера микроконтроллера при измерении времени, за которое пилообразное напряжение пересечет уровень переключения в «лог. 1», зависит от следующих факторов:

  • входного порога переключения выбранного микроконтроллера из «лог. 0» в «лог. 1»;
  • входного напряжения и, соответственно, скорости нарастания напряжения на конденсаторе C1;
  • емкости конденсатора C1, задающего скорость нарастания;
  • сопротивления резистора R2, задающего скорость нарастания;
  • разрешения таймера микроконтроллера.

Эти переменные можно свести в следующее выражение:

где

VL – пороговое напряжение переключения микроконтроллера из «лог. 0» в «лог. 1»;
K – масштабный коэффициент, связывающий коэффициент преобразования напряжение-ток входного каскада и разрешение таймера;
dT – время цикла преобразования.

Поскольку произведение C1VL для данной схемы также является константой, можно объединить его с K, чтобы образовать единственную константу преобразования K1. Следовательно, выражение может быть сведено к виду

В рассматриваемом случае тестовый код был написан для микроконтроллера PIC16F84 компании Microchip. Для этого устройства измеренное значение VL составляет 1.28 В, а таймер имеет разрешение 1 мкс. Вероятно, лучше всего определить коэффициент K1 эмпирически. Для этого нужно установить желаемое разрешение счетчика и позволить микроконтроллеру либо отображать время преобразования, либо отправлять его через отладчик. Тогда, используя точно измеренные значения VIN, можно будет легко определить K1. В этом случае K1 оказался равным 2 В × 5700 мкс = 11,400.

Константа K1 служит коэффициентом преобразования числа в счетчике таймера в напряжение. Для достижения высокого разрешения обычно используются вычисления с плавающей точкой. Математика с плавающей точкой может понадобиться, если необходимо отобразить числовое значение, но для многих приложений достаточно относительно условного представления положения движка потенциометра или какого-либо другого системного параметра. Формой представления информации в таких приложениях может быть, например, столбиковая диаграмма. Тогда использование в процессе преобразования математики с плавающей точкой будет напрасной тратой вычислительных ресурсов микроконтроллера. При тщательном выборе компонентов схемы вычисления с фиксированной точкой обычно могут обеспечить 8-битное разрешение (от 0 до 255) для диапазона входных напряжений от 0 до 4 В. Если масштабировать значение счетчика таймера, поделив его на 64,  вместо числа 5700 мкс при входном напряжении 2 В получим 89. Тогда, если нужно, чтобы это число 89 соответствовало половины шкалы 128, значение K1 станет равным 11,392. 16-битное слово без знака легко вмещает это значение, и вычисления с плавающей запятой при преобразовании здесь не нужны. Точность этого АЦП без каких-либо регулировок составляет около 5%. Разрешающая способность зависит от разрешения таймера и от плотности программного кода. Разрешение может во много раз превышать абсолютную точность. Более того, характеристика преобразователя монотонна.

Материалы по теме

  1. Datasheet Panasonic XN02401
  2. Datasheet Panasonic XN04601

EDN

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Analog-input circuit serves any microcontroller

Изготовление 1-4 слойных печатных плат за $2

10BASE-T1L Ethernet по витой паре: реализация на основе микросхем Analog Devices
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя