Измерение сопротивления без использования АЦП

Следующая статья показывает нехитрый трюк как с помощью простейшего восьмилапого микроконтроллера без аналого-цифрового преобразователя на борту соорудить измеритель сопротивления датчика и передать измеренное значение в ПК или главному контроллеру через последовательный интерфейс (которого так же может не быть в списке периферии используемого МК). Таким образом, с помощью самого дешевого микроконтроллера и нехитрой программки можно превратить любой простой резистивный датчик в более-менее интеллектуальную подсистему, умеющую передавать значение сопротивления датчика в цифровом виде в хост-систему или главный микроконтроллер на плате.

ИЗМЕРЕНИЕ СОПРОТИВЛЕНИЯ БЕЗ ИСПОЛЬЗОВАНИЯ АЦП

Большинство процессов в производстве автоматизируется с использованием всеразличных датчиков. Большая часть этих датчиков, такие как, например, сенсоры паров аммиака, температуры, и им подобные, являются резистивными устройствами, электрическое сопротивление которых изменяется (чаще всего нелинейно) по мере изменения окружающих условий. Сопротивление датчиков может находиться в диапазоне от 1 мОма до 10 МОм. На рисунке 1 показан вариант схемы для измерения сопротивления датчика. В качестве контроллера в схеме используется восьмивыводный микроконтроллер AVR Tiny13V производства компании Atmel. Микроконтроллер Tiny13V работает в диапазоне питающих напряжений от 1.8 до 5.5В.

Схема измерения сопротивления

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

В предлагаемой разработке используется эквивалент генератора, основанный на принципе асинхронного мультивибратора в МК Tiny13 (рисунок 2). У генератора нет стабильного состояния, и сигнал на выходе постоянно колеблется между двумя квазистабильными состояниями. Выходная частота этого генератора зависит от величины сопротивления. По мере увеличения сопротивления, частота уменьшается, и величина сопротивления может быть легко выведена через измерение частоты колебаний.

Схема эквивалентного генератора

Рисунок 2 — Эквивалентная схема асинхронного мультивибратора собранного на МК.

Сопротивление, которое необходимо измерить, подключается между любыми двумя линиями ввода-вывода общего назначения микроконтроллера, а конденсатор C1 известного номинала подсоединяется к третьему выводу общего назначения. Заметьте, что PB0 и PB1 всегда находятся в противоположных состояниях для реализации элемента схемы «НЕ». Вывод PB2 измеряет уровень сигнала (высокое или низкое напряжение) на резисторе R1.

Изначально PB0 высокого уровня, PB1 – низкого, а вывод PB2 находится в высокоомном состоянии. В результате, конденсатор начинает заряжаться с постоянной времени RC. В первый момент времени конденсатор работает как замкнутая цепь, и на входе PB2 присутствует высокий уровень сигнала. По мере заряда конденсатора, напряжение на резисторе уменьшается, и, когда на входе PB2 будет низкий уровень, PB1 перейдет в высокое состояние, а PB0 – в низкое.

После этого, по мере разряда конденсатора, напряжение на резисторе возрастает, и, когда на входе PB2 будет присутствовать сигнал высокого уровня, PB0 перейдет в высокое состояние, а PB1, соответственно, в низкое. Таким образом, измерение частоты (или половины числа переключений за одну секунду) сигнала на входе PB0, дает величину обратно пропорциональную сопротивлению R1 (см. рисунок 1). Так для частоты f имеем:

R1 = k/f,

где k – коэффициент пропорциональности.

Результат измерения передается в ПК по последовательному интерфейсу RS-232. Поскольку Tiny13 не содержит UART, используется процедура программного UART. Полностью программа для измерения сопротивления по предложенному алгоритму доступна для закачки по ссылке.

Автор Ashish Aggarwal
Оригинальное название Microcontroller measures resistance without an ADC
Источник www.edn.com
Дата публикации 12/2008
Дата перевода 10/2009
Версия перевода 1.0

Скачать статью в формате PDF (98 кб)

Похожие статьи:

Комментарии

Есть 3 коммент. к “Измерение сопротивления без использования АЦП”
  1. DI HALT пишет:

    А зачем так сложно? Не проще ли дергать конденсатор и через время заряда разряда вычислить сопротивление.

Поделитесь своим мнением