Правильная ссылка на эту страницу
http://az-design.ru/Support/HardWare/NSC/D19900125Elc010.shtml

Дешевый аналого-цифровой преобразователь с широтно-импульсной модуляцией

УДК 681.335.2.003

Кевин, Доэрти (Kevin Daugherty)
Фирма National Semiconductor Corp. (Уэст-Блумфилд, шт.Миссури)

Kevin Daugherty. Try PWM for low-cost A-D conversion, ED, 1990, No.2, pp.51—54.

Схема преобразования, построенная на микроконтроллере с несколькими внешними компонентами, является дешевой альтернативой интегральным преобразователям, встроенным в микроконтроллер. Преобразование выполняется микроконтроллером программно.

При массовом производстве изделий автомобильной, промышленной и бытовой электроники на основе микроконтроллеров часто требуются дешевые, но качественные аналого-цифровые преобразователи. Областями приложения автомобильной электроники являются потенциометрические установки регулирования освещения, периодичности работы стеклоочистителей и управления по заданным значениям; индикаторы уровня топлива; преобразование сигналов для датчиков температуры и давления и индикаторы напряжения аккумулятора, которые могут найти также применение в переносном оборудовании. Поскольку сигналы здесь изменяются, как правило, медленно, нет необходимости в дорогом и специализированном аналого-цифровом преобразователе.

Прежде всего нужно определить требования к аналого-цифровому преобразователю со стороны системы в таких терминах, как быстродействие, разрешение, точность, цена и технологичность. Затем следует сделать оптимальный выбор среди доступных изделий. Типовое время восьмиразрядного преобразования для преобразователей, включенных в состав ИС микроконтроллеров, составляет от 12 до 20 мкс. Преобразователи такого типа просты в применении, но удорожание изделия в этом случае при массовом производстве может составить более 1,50 долл. Как это ни удивительно, но дешевле может обойтись добавление к микроконтроллеру нескольких внешних компонентов.

Например, внешними компонентами для аналого-цифрового преобразования с однократным интегрированием являются источник постоянного тока, конденсатор и компаратор. Источник тока заряжает конденсатор с формированием линейно нарастающего напряжения. Это напряжение поступает на один вход компаратора, в то время как измеряемое напряжение Vin — на второй вход. Для коррекции начального разброса параметров конденсатора и источника тока необходим цикл калибровки. Для этого таймер микроконтроллера должен отсчитать количество тактов, в течение которых конденсатор заряжается до известного опорного напряжения Vref, поданного на компаратор в качестве порогов. В дальнейшем отсчет таймера используется как эталонный. После калибровки конденсатор должен быть разряжен до нуля через транзистор (в случае источника с вытекающим током) или заряжен до величины Vref (в случае источника с втекающим током).

Затем микроконтроллер начинает преобразование, давая возможность источнику тока линейно заряжать конденсатор и измеряя интервал времени, необходимый для заряда компаратора до порогового напряжения, равного теперь Vin. Если известно время заряда до предела преобразования Vref, то результат преобразования равен отношению двух отсчетов. Типовое время преобразования при таком способе равно произведению времени цикла исполнения команды на 2*256 бит, или приблизительно 500 мкс.

Способ с использованием RC-цепи позволяет обойтись меньшим количеством компонентов, хотя необходимой точности добиться труднее. Этот способ предусматривает заряд конденсатора RC-цепи напряжением Vref и сравнение напряжения на конденсаторе с неизвестным напряжением Vin. Величину Vin характеризует время заряда конденсатора, или количество тактов, как и при однократном интегрировании. Для коррекции разброса параметров схемы также необходим цикл калибровки.

После калибровки конденсатор разряжается и микроконтроллер начинает отсчет времени заряда до порогового напряжения компаратора, равного Vin. Основное отличие от однократного интегрирования заключается в том, что конденсатор в RC-цепи заряжается нелинейно. Это вызывает трудности при вычислении результата, и если нужна повышенная точность, требуется апроксимировать кривую заряда конденсатора подходящей функцией.

Если характеристики и стоимость реализации способов интегрирования и заряда конденсатора в RC-цепи не оправдывают отказа от схемы с интегральным аналого-цифровым преобразователем, можно рассмотреть третий подход, а именно широтно-импульсную модуляцию (ШИМ). Способ ШИМ использует небольшое количество компонентов, не требует калибровки, отличается короткой программой и его реализация обходится не более чем в 0,30 долл. (на внешние компоненты). Общепринятым в способе ШИМ является заряд конденсатора в RC-цепи импульсами переменной скважности. Чтобы напряжение пульсаций на конденсаторе находилось в пределах допустимой погрешности, постоянная времени RC-цепи должна быть намного больше периода импульсов.

При диапазоне входных напряжений, равном, например, 5 В, сопротивлении резистора 100 кОм и цикле команд 1 мкс емкость конденсатора C должна составлять 0,64 мкФ (емкость равна произведению тока на отсчет, поделенному на цену младшего разряда, т.е. C=50 мкА*256 мкс/20 мВ). После каждого изменения напряжения должно быть отведено достаточное время на установление его уровня. При этом время преобразования, составляющее приблизительно 500 мс, может оказаться слишком большим для некоторых применений.

Правда, время преобразования может быть сокращено модификацией исходного способа. Вместо одного импульса используют несколько более коротких, расположенных через равные интервалы, что позволяет уменьшить постоянную времени. При этом появляется еще одно преимущество — повышение помехоустойчивости вследствие усреднения или суммирования нескольких импульсов.

Усовершенствованный способ ШИМ с повышенным быстродействием может обеспечить 10-мс восьмиразрядное преобразование. Изменением количества тактов преобразования можно подобрать точность и быстродействие в пределах 10 разрядов. Время преобразования Tcon определяется произведением числа тактов преобразования (разрешающей способности), времени командного цикла и числа программных циклов. Tcon= (число тактов) * (время командного цикла) * (20 циклов).

Рассмотрим базовую схему, состоящую из восьмиразрядного КМОП-микроконтроллера COP822C, счетверенного компаратора LM2901, двух резисторов сопротивлением 100 кОм и пленочного конденсатора емкостью 0,01 мкФ (рис.1). Микроконтроллер выдает на RC-цепь импульсы перемейной скважности с размахом от напряжения, близкого к нулю, до напряжения питания Vcc. Возникающее при этом на конденсаторе ступенчато изменяющееся напряжение подается на инвертирующий вход компаратора и затем сравнивается с входным напряжением, поданным на неинвертирующий вход.

Аналого-цифровой преобразователь с широтно-импульсной модуляцией пригоден для массовых применений, требующих умеренного быстродействия, и содержит вос
Рис.1. Аналого-цифровой преобразователь с широтно-импульсной модуляцией пригоден для массовых применений, требующих умеренного быстродействия, и содержит восьмиразрядный микроконтроллер, компаратор, два резистора и конденсатор.

Состояние выхода компаратора опрашивается микроконтроллером через равные интервалы. В зависимости от уровня выходного сигнала компаратора на RC-цепь подается или напряжение питания Vcc, или нуль, чтобы напряжение на инвертирующем входе приближалось к Vin. В это время микроконтроллер СОР822С подсчитывает, сколько раз напряжение компаратора переключалось из низкого уровня в высокий или наоборот, отсчитывая при этом суммарное количество переключений. Преобразование завершается по достижении заданного количества переключений. Время пребывания во включенном состоянии Ton, остающееся в счетчике программы, соответствует входному напряжению, которое равно

(1)

Отметим, что напряжение на выходе L1 переключается не точно от нуля до Vcc. Более точное определение преобразования дает математический анализ. Если n — полное количество импульсов Ton, а m — полное количество импульсов Тon, то напряжение Vc на конденсаторе как функция времени равно

Vc(t) = Vc+n[(VOH-VC)(1 -e- t/RC)] — m[(Vc—VOL)(1-e- t/RS)],

где t — время в секундах, VOH — напряжение логической единицы на выходе микроконтроллера, VOL — напряжение логического нуля. Если в начале преобразования Vc=Vin и К=1—e-t/RC, то

Vin = Vin+KnV0H-KnVin-KmVin+KmV0L

или

0=KnVOH+KmVOL-KVin(n-m).

Если предположить, что существует падение напряжения на выходе, равное Vos (выходное напряжение смещения), т.е. V0H=Vref—VOS, решение последнего уравнения относительно Vin дает

Vn = [nVref/(n+m)]-[(nVOS-mVOL)(l/(n+m)].

(2)

Первый член в этом уравнении отражает идеальный случай без погрешности, влияние которой отражается вторым членом уравнения. Поскольку величина RC в уравнении отсутствует, она не влияет на погрешность.

При сопротивлении нагрузки 100 кОм напряжение на выходе микроконтроллера COP822C переключается между уровнями, отличающимися от нуля и Vcc на 10—20 мВ. Результирующая погрешность равна падению напряжения, умноженному на его скважность (см. уравнение 2). К счастью, напряжения смещения имеют тенденцию к компенсации в середине диапазона. Если же Vin близко к нулю или Vcc, то влияние падения напряжения уменьшается благодаря либо малому падению на резисторе, либо малому коэффициенту заполнения.

Точность преобразования зависит в значительной степени от используемых внешних компонентов. Выбор сопротивления резистора для RC-цепи является результатом компромисса между значениями входного и выходного напряжений смещения. Для уменьшения величины выходного напряжения смещения микроконтроллера требуется достаточно большое внешнее сопротивление. С другой стороны, это сопротивление должно быть весьма малым, чтобы сократить погрешность из-за входного тока смещения IB OS компаратора. Ток IB OS У компаратора LM2901 может достигать 200 нА при повышении температуры. В этом случае при сопротивлении резистора 100 кОм погрешность достигает 20 мВ.

Если сопротивление RC-цепи выбрано, то последовательно с неинвертирующим входом компаратора должно быть включено такое же сопротивление чтобы скомпенсировать погрешность входного тока. Емкость конденсатора С выбирается так, чтобы максимальное изменение напряжения VMAX на конденсаторе за время T опроса выхода компаратора не превышало 1 единицы младшего значащего разряда (МЗР): С = (VMAX/R) (T/1M3P). Емкость должна быть по возможности небольшой, чтобы напряжение на конденсаторе нарастало до Vin с наибольшей скоростью. Конденсатор должен быть пленочным, т.е. с малой утечкой, во избежание увеличения погрешности.

Повысить точность можно применением компаратора типа LP339, который является версией LM2901 с меньшим током. Входной ток смещения у него равен всего 5 нА, а входное напряжение смещения — только 5 мВ (вместо 15 мВ у LM2901). Дополнительным преимуществом LP339 является возможность подключения RC-цепи к нескольким входам компараторов.

Синфазное напряжение как для LM2901, так и LP339 составляет от 0 до Vcc — 1,5 В. Чтобы получить диапазон преобразования от 0 до Vcc, компаратор следует запитать от источника напряжением, хотя бы на 1,5 В большим напряжения питания микроконтроллера. Микроконтроллер COP888G содержит два компаратора с диапазоном синфазных напряжений от 0,4 В до Vcc —1,5 В и входным напряжением смещения нуля 25 мВ. Минимальные дополнительные затраты на внешнюю RC-цепь получаются при построении двухканального аналого-цифрового преобразователя именно с этим микроконтроллером

Возможные варианты

К RC-цепи могут быть подключены параллельно несколько других схем, или можно использовать для возбуждения цепи схему 74HC04 с шестью дополнительными парами и инвертор (с типовым значением VOS, равным 3 мВ). Это дополнение сокращает погрешность, вносимую напряжением VOS микроконтроллера, если нужно получить пониженное сопротивление резистора или точность более восьми разрядов.

В другом варианте схема содержит мультиплексор-усилитель LM604 для обслуживания нескольких каналов без добавления команд. Входы А и В устройства LM604 выбирают канал, а наличие вывода выбора кристалла позволяет включать параллельно несколько LM604. Между выходом LM604 и входом микроконтроллера необходимо подключить резистор для ограничения тока величиной 100 мкА в случае, если напряжение питания LM604 больше, чем микроконтроллера.

Напряжение питания Vcc микроконтроллера и нуль задают диапазон входных напряжений компаратора. Для семейства микроконтроллеров СОР800 этот диапазон может находиться между 2 и 6 В. При относительных измерениях (Vin изменяется пропорционально Vcc) нестабильность Vcc не имеет существенного значения. Однако при измерениях абсолютных величин эту нестабильность следует учитывать, так же как и другие источники погрешностей.

На рис.2 приведена блок-схема программы аналого-цифрового преобразования с участием СОР800. Программные счетчики микроконтроллера для счета времени преобразования и То n первоначально загружаются максимальными значениями, которые впоследствии могут уточняться в соответствии с требуемыми быстродействием и точностью. Затем программа опрашивает сотояние выхода компаратора и определяет, какой уровень — Vcc или нуль — следует установить на выходе L1. Если в момент опроса напряжение Vc на конденсаторе больше Vin, то на RC-цепь подается низкий уровень и содержимое счетчика Тon и счетчика времени преобразования уменьшается на единицу. Если Vc меньше Vin, то устанавливается высокий уровень и вводится задержка для выравнивания времени удержания высокого и низкого уровней. Это важно, поскольку длительность каждого импульса влияет на результат преобразования.

Блок-схема программы, содержащей всего 37 операторов. Для выравнивания длительностей высокого и низкого уровней импульсов использованы команды NOR.
Рис.2. Блок-схема программы, содержащей всего 37 операторов. Для выравнивания длительностей высокого и низкого уровней импульсов использованы команды NOR.

После того как процесс повторится 256 раз, содержимое счетчика Топ вновь загружается максимальной величиной. Предполагается, что в начале преобразования конденсатор заряжен до напряжения Vin (уравнение 2). Это достигается в течение первых 256 циклов при условии, что 256 × 20 мкс = 5 × постоянная времени RC-цепи. После такой начальной установки начинается преобразование и процесс продолжается до нуля в счетчике времени преобразования, т.е. после 512 циклов при восьмиразрядном преобразовании.

Первая строка программы для микроконтроллеров семейства СОР800 загружает аккумулятор числом 3 (см. таблицу). Эта величина используется для слежения за счетом при начальной установке напряжения на конденсаторе. Затем загружаются регистры времени Топ и общего времени преобразования, а также регистры умножителя для расширения предела счета за 256. Затем очищается разряд переноса, который будет использоваться для перехода от девяти к восьми разрядам. Устанавливается регистр В микроконтроллера, указывающий на регистр данных L. Это позволяет использовать для задания состояния выхода L1 компаратора одноцикловые команды SBIT 1, [В] и RBIT 1, [В], сокращающие время цикла, а значит, и время преобразования.

Программа аналого-цифрового преобразования с ШИМ для семейства СОР800

        LD     A,#03      ; Загрузка регистра А для начальной установки
        LD     0F0,#0FF   ; Загрузка счетчика времени преобразования
        LD     0F1,#3     ; Умножитель 2*256=512 отсчетов плюс 256
                          ; для начальной установки
        LD     0F2,#0FF   ; Загрузка счетчика Топ
        LD     0F3,#2     ; Умножитель 2*256=512 возможных состояний счетчика Тon
        LD     0FF,#0D0   ; Загрузка регистра В для регистра данных L
        RC                ; Очистка переноса для подготовки результата
        LD     0D0,#01    ; Загрузка регистра порта L, L0 — слабый подброс, 
                          ; L1 — высокий уровень
        LD     0D1,#02    ; Загрузка регистра конфигурации порта L,
                          ; L0 — вход, L1 — выход
LOOP:   IFBIT  0, 0D2     ; Опрос состояния выхода компаратора
        JMP    HIGH       ; Переход, если L0=1
        NOP               ; Выравнивание времени сброса и установки
        RBIT   1,[В]      ; Установка низкого уровня на L1
        DRSZ   0F2        ; Вычитание из счетчика Тоn, если низкий уровень
        JMP    COUNT
        DRSZ   0F3        ; Вычитание из умножителя Тоn, если больше 256 отсчетов
        JMP    COUNT
HIGH:   SBIT   1,[В]      ; Установка высокого уровня на L1
        NOP    
        NOP    
        NOP    
        NOP    
        NOP    
        NOP               ; Выравнивание циклов высокого и низкого уровней
COUNT:  DRSZ   0F0        ; Вычитание из счетчика времени преобразования
        JMP    LOOP
        IFEQ   A,0F1      ; Установка счетчика Тоn для первого вхождения в цикл
        LD     0F2,#0FF
        DRSZ   0F1        ; Вычесть из умножителя
        JMP    LOOP
        LD     A,0F2      ; Загрузка аккумулятора величиной Тon
        IFBIT  I,0F3      ; Проверка счетчика Тоn на 256 отсчетов
        SC                ; Установка переноса, если больше 256
        RRC    А          ; Подготовка восьмиразрядного результата
        X      А,00       ; Сохранения результата в ячейке памяти 00
        LD     0D0,#00    ; Отключение порта во избежание разряда конденсатора
        LD     0D1,#00
END

На последнем шаге начальной установки выводу L0 присваивается функция входа и выводу L1 — функция выхода с высоким уровнем. Команда IFBIT опрашивает выход компаратора. Если здесь присутствует высокий уровень, следующая команда устанавливает L1 в состояние 1. Шесть команд NOP (нет операции) выравнивают длительности высокого и низкого уровней в импульсах микроконтроллера. Если на выходе компаратора присутствует 0, то команда JMP пропускается и выход L1 сбрасывается в 0. Команда NOP перед командой сброса обеспечивает в точности одинаковую длительность низкого и высокого уровней независимо от предыдущего состояния L1.

Каждый раз, когда L1 сбрасывается в 0, содержимое счетчика Тon уменьшается на единицу командой DRSZ и следующая команда опускается, если содержимое счетчика Топ становится равным нулю. Когда это случается, умножителю Тon дается отрицательное приращение. По завершении цикла команда DRSZ дает отрицательное приращение регистру времени преобразования. После первых 255 опросов условие для команды IFEQA, 0F1 выполняется и регистр Тon перезагружается. Затем содержимому ячейки 0F1 дается отрицательное приращение и цикл продолжается до нуля в умножителе (OF1).

В этой точке программы аккумулятор загружается величиной Топ и команда IFBIT I, OF3 сравнивает Топ с числом 256. Если разряд 1 умножителя Топ имеет состояние 1, команда SC устанавливает разряд переноса. Затем содержимое аккумулятора вращается вправо командой RRC А с переносом для получения восьмиразрядной точности. Команда X А, 00 после этого сохраняет результат в ячейке 00 памяти.

Последние две команды не являются обязательными и предназначены для отключения порта L микроконтроллера. Это предотвращает разряд конденсатора в интервале между преобразованиями и сокращает тем самым время начального его заряда.

Об авторе

Кевин Доэрти, старший инженер по применениям в фирме National Semiconductor, получил степень бакалавра наук по электронике (Университет Уэйна в Детройте).

Выходные данные:

Журнал "Электроника" том 63, No.03 (832), 1990г - пер. с англ. М.: Мир, 1990, стр.21

Electronics Design Vol.38 No.1 January 11, 1990 A Penton Publication

Electronics Design Vol.38 No.2 January 25, 1990 A Penton Publication

Kevin Daugherty. Try PWM for low-cost A-D conversion, ED, 1990, No.2, pp.51—54.

Раздел: МЕТОДЫ, СХЕМЫ, АППАРАТУРА

Тема:     Аналого-цифровые преобразователи





Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:44 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/HardWare/NSC/D19900125Elc010.shtml