Последний уровень раздела предыдущего изложения   Текущий уровень изложения предыдущего раздела   Текущий уровень изложения следующего раздела   Первый уровень изложения следующего раздела   Уровень:


Аналого-цифровой преобразователь

Аналого-цифровой преобразователь микроконтроллеров семейства MCS-51

Аналого-цифровой преобразователь микроконтроллера семейства MCS-51/52 (например, типа SAB 80515 фирмы Siemens или 80C51GB) обеспечивает 8 битное преобразование и имеет восемь мультиплексных каналов аналогового входного сигнала "на чипе". Кроме того, аналого-цифровой преобразователь имеет схему выборки-хранения и возможность программирования опорных напряжений, что позволяет увеличивать точность преобразования, сужая пределы измерения. Преобразование осуществляется методом последовательного приближения с использованием конденсаторной цепи. Длительность цикла преобразования от 15 до 29 машинных циклов. На рисунке показана блок-схема аналого-цифрового преобразователя (блоки, закрашенные желтым, являются гиперссылками).

В нем имеются три доступных для пользователей специальных функциональных регистра:

ADCON - Регистр управления преобразователем

(адрес - 0D8H, возможна побитовая адресация)


BD CLK - BSY ADM MX2 MX1 MX0 Бит
0DFH 0DEH 0D0H 0DCH 0DBH 0DAH 0D9H 0D8H Адрес

 

Регистр ADCON используется, чтобы

Символ Позиция Функция
MX0 ADCON.0 Выбор канала аналогового входного сигнала, см. таблицу.

 

MX2 MХ1 MX0 Выбранный Канал Вывод ИМС
0 0 0 Аналоговый входной сигнал 0 AN0
0 0 1 Аналоговый входной сигнал 1 AN1
0 1 0 Аналоговый входной сигнал 2 AN2
0 1 1 Аналоговый входной сигнал 3 AN3
1 0 0 Аналоговый входной сигнал 4 AN4
1 0 1 Аналоговый входной сигнал 5 AN5
1 1 0 Аналоговый входной сигнал 6 AN6
1 1 1 Аналоговый входной сигнал 7 AN7
MX1 ADCON.1
MX2 ADCON.2
ADM ADCON.3 Режим аналого-цифрового преобразования. Если ADM = 1 - непрерывное преобразование. Если ADM = 0, преобразователь останавливается после одного преобразования.
BSY ADCON.4 Флаг занятости. Этот флаг указывает, происходит преобразование (BSY = 1) или нет (BSY = 0).
- ADCON.5 Зарезервирован (должен быть 0).
CLK ADCON.6 (Используется не для управления АЦП) Включение синхронизации системы. Если равно 1, синхросигнал с t /12 частотой генератора подается на вывод P1. 6/CLKOUT. CLK = 0 блокирует синхронизирующий вывод.
BD ADCON.7 (Используется не для управления АЦП) Включение режима передачи со скоростью в бодах. Если равно 1, то осуществляется прием в режиме 1 и 3 последовательного порта из внутреннего генератора скоростей в бодах.

ADDAT - регистр результатав преобразования

Специальный функциональный регистр ADDAT, фиксирует результат преобразования (8 бит). Данные сохраняются в ADDAT, пока результат не замещается данными следующего преобразования. Новое значение появляется в ADDAT на 15-ом машинном цикле после того, как преобразование было начато. ADDAT может читаться и записываться программным образом. Если АЦП не используется, регистр ADDAT может использоваться и как дополнительный универсальный регистр.

DAPR - регистр программирования опорных напряжений АЦП

Регистр DAPR позволяет менять внутренние опорные напряжения IVAREF и IVAGND. Они могут программироваться с шагом в 1/16 относительно внешних опорных напряжений (VAREF-VAGND). Биты с 0 по 3 регистра DAPR определяют IVAGND, биты с 4 по 7 определяют IVAREF. Для нормальной работы АЦП требуется как минимум разность в 1 вольт между внутренними опорными напряжениями. Поэтому, внутреннее опорное напряжение IVAREF должны всегда программироваться на четыре шага выше, чем IVAGND (относительно внешнего образцового напряжения VAREF, которое равно 5В ± 5%).

Значения IVAGND и IVAREF определяются по формуле:

IVAGND = VAGND + DAPR (0 - 3) /16 (VAREF - VAGND)

причем DAPR (0 - 3) < 0 и DAPR (0 - 3) <13;

 

IVAREF = VAGND + DAPR (4 - 7) /16 (VAREF - VAGND)

причем DAPR (4 - 7) >3;

 

где DAPR (0 - 3) - содержание младшего полубайта, и DAPR (4 - 7) - содержание старшего полубайта DAPR, принимаемого как десятичное целое число без знака.

Если DAPR (0 - 3) или DAPR (4 - 7) = 0, внутренние опорные напряжения соответствуют внешним опорным напряжениям соответственно VAGND и VAREF .

Если VAINPUT > IVAREF, то результат преобразования будет равен 0FFH, если VAINPUT < IVAGN0, то результат преобразования - 00H (VAINPUT - напряжение аналогового входного сигнала).

Рисунок показывает, назначение разрядов регистра специальной функции DAPR.

 

Регистр программирования АЦП DAPR (0DAH)

7 6 5 4 3 2 1 0 Бит
Цифровое Значение для IVAREF Цифровое Значение для IVAGND  

 

Если используются внешние опорные напряжения VAGND = 0 V и VAREF = + 5V (относительно GND и VCC), то при помощи регистра DAPR могут быть установлены следующие значения внутренних опорных напряжений IVAGND и IVAREF, как показано в таблице.

 

Программирование внутренних опорных напряжений

Ступень DAPR (0-3) DAPR (4-7) IVAGND (V) IVAREF (V)
0 0000 0000 0.0 5.0
1 0001 0001 0.3125 -
2 0010 0010 0.625 -
3 0011 0011 0.9375 -
4 0100 0100 1.25 1.25
5 0101 0101 1.5625 1.5625
6 0110 0110 1. 875 1. 875
7 0111 0111 2. 1875 2. 1875
8 1000 1000 2.5 2.5
9 1001 1001 2.8125 2.8125
10 1010 1010 3.125 3.125
11 1011 1011 3.4375 3.4375
12 1100 1100 3.75 3.75
13 1101 1101 - 4.0625
14 1110 1110 - 4.375
15 1111 1111 - 4.6875

 

Комбинации отмеченные '-' не допускаются поскольку IVAREF должен быть, по крайней мере, четыре ступени выше, чем IVAGND.

Синхронизация АЦП и время преобразования

Преобразование начинается после записи стартового бита в регистр DAPR. Эта операция начнет новое преобразование, даже если текущее преобразование не завершено. Преобразование начинается со следующего машинного цикла. Флаг занятости будет устанавливаться в том же самом машинном цикле. Если значение, записанное в DAPR - 00H, это означает, что никакая корректировка внутренних опорных напряжений не желательна, и преобразование будет происходить в течение 15 машинных циклов, до полного окончания. Таким образом, время преобразования - 15 мкс при 12 МГц частоте тактового генератора. Для каждой корректировки внутренних опорных напряжений преобразование требуется дополнительно время 7 мкс. Таким образом, если должно программироваться только одно опорное напряжение, общее время преобразования будет занимать 22 машинных цикла, если же должны программироваться оба опорных напряжения, то время преобразования будет продолжаться 29 машинных циклов.

После того, как преобразование было запущено записью в соответствующий бит DAPR, аналоговое напряжение в выбранном входном канале выбирается в течение 5 машинных циклов (5 мкс при 12 МГц частоте генератора). Это напряжение будет оставаться неизменным на протяжении остальной части времени преобразования. Внешний аналоговый источник должен обеспечить ток достаточный, чтобы зарядить емкость выборки-хранения, равную 25pF, за 5 машинных циклов.

Преобразование выбираемого аналогового напряжения происходит между 6-ым и 15-ым машинным циклом после того, как была завершена операция выборки сигнала. В 15-ом машинном цикле преобразованный результат перемещается в ADDAT, флаг занятости (BSY) очищается, генерируется запрос на прерывание от АЦП и устанавливается флаг IADC (бит 0 в регистре управлении прерывания IRCON). Если установлено непрерывное преобразование, то следующее преобразование, автоматически начнется в следующем машинном цикле.

Примеры программирования внутренних опорных напряжений

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


Подбор значений внутренних опорных напряжений в зависимости от диапазона измерения внешнего аналогового напряжения



Увеличение разрешающей способности АЦП при помощи второго преобразования