Вы находитесь на странице: 1из 30

МИКРОПРОЦЕССОРНЫЕ СИСТЕМЫ

Лекция 8
Теория и практика аналого-
цифрового преобразования

Непомнящий Олег Владимирович


Подключение к «внешнему миру»
Аналого-цифровое преобразование
План лекции

1. Цифровой мир.
2. Оцифровка сигналов, аналоговый компаратор.
3. Типы аналого-цифровых преобразователей.
4. Цифро-аналоговые преобразователи.
5. Встроенный АЦП ATMega32.
Цифровой мир
Способы оцифровки сигналов
Способ 1: Задание порогового значения,
аналоговый компаратор
U
Входной
сигнал
Uref

Выход
компаратора

Входной сигнал + Выход компаратора


Uref -
Способы оцифровки сигналов
Способ 2: косвенное определение величины
входного сигнала
Vcc
Разряд
Vcc U конденсатора
Цифровой счетчик
Выходное значение

С до порога
Rsub Порог
переключения
Сигнал
«1» - Старт Резистивный
датчик
t
«0» - Сброс
Заряд
конденсатора
Vоп
V3<Vвх<V4
Параллельный АЦП
R
+ 0 Каждый делитель формирует
V6 -
R
напряжение для компаратора
+ 0 начиная с половины от
V5 -
опорного. Напряжения на
R
+ 0 выходе делителей

Выходное значение АЦП


V4 - Дешифратор
увеличиваются при переходе к
R
+ 1 каждому следующему
8:3

V3 -
компаратору с шагом 2х, где х –
R
+ 1 разрядность АЦП. Например,
V2 -
для 3-х разрядного АЦП нам
R
+ 1 понадобится 23-1=7
V1 - компараторов (см. Рисунок). Для
R
+ 1 8-ми разрядного АЦП
V0 - понадобится уже 255
R
компараторов.
АЦП Последовательного приближения
EOC, DRDY
Сигнал удержания Схема или BUSY
синхронизации
Компаратор Старт АЦП
Аналоговый Сигнал тактирования
вход УВХ
Регистр
последовательного
приближения (РПП)
ЦАП

Опорное напряжение Uоп Выход

По сигналу СТАРТ все разряды РПП сбрасываются в «0»,


кроме старшего. Если выходной сигнал ЦАП больше чем
величина измеряемого сигнала, то компаратор сбрасывает
бит в РПП, в противном случае бит остается установленным.
Затем в «1» устанавливается следующей наибольший
значащий разряд.
АЦП Последовательного приближения
Шаг Выход РПП Число Напряжение на выходе Напряжение АЦП (В)
компаратора (В) 5
1 1000 0000 128 2,5 4
2 0100 0000 64 1,25
3 0110 0000 96 1,875 3
4 0111 0000 112 2,1875
5 0110 1000 104 2,03125 2
6 0110 0100 100 1,953125
1
7 0110 0110 102 1,9921875
8 0110 0111 103 2,01171875 0
РЕЗУЛЬТАТ 01100110 1,9921875 128 64 96 112 104 100 102 103

Пусть на входе 2В. Если опорное напряжение 5В, а


разрядность 8 бит, то каждой единице числа соответствует
значение в 5/256 = 0,01953125В - это шаг измерения. На
первом шаге на выходе компаратора будет 0 поскольку выход
УВХ меньше, чем выход ЦАП. Это значение – 0. зафиксируется
в самом старшем разряде РПП, а в 1 установится следующий
разряд, получим число 0100 0000(2). И так далее 8 раз.
Цифро – аналоговый преобразователь с
суммированием токов
ЦАП подобного типа представляют
3
R/8~2 S4 собой набор резисторов, каждый из
которых подключается к
R/4~22 S3 операционному усилителю через
Rос
электронный ключ (Рисунок 9).
R/2~21 Каждый ключ — это транзисторная
S2 a
- схема, которая в свою очередь
= подключена ко входным весам
R~2 0
S1 + Uвых цифрового числа поданного на вход
= ЦАПа. Если в соответствующем
=
= U0 S5 весе числа 1, то ключ замкнут, иначе
ключ разомкнут. «Хитрость»
заключается в том, что номиналы
резисторов подбираются таким
образом, чтобы токи были
пропорциональны весу разряда в
числе.
АЦП последовательного приближения
ATMega32 – программная модель.
Общие сведения

Разрядность – 10 бит
Время преобразования – от 65 до 260 мс
Количество входных каналов – 8
Прерывание по завершению преобразования
Скорость оцифровки – 15кSPS
Имеет возможность однократного и циклического (непрерывного)
преобразования, а так же преобразования по сигналам от таймеров или от
внешнего прерывания.
При подаче питания или сбросе все регистры содержат 0
АЦП последовательного приближения
ATMega32 – программная модель.
Регистр мультиплексора АЦП –
ADMUX (ADC Multiplexer Selection Register)
биты 7,6 — REFS1, REFS0 – Выбор источника опорного напряжения;
Бит 5 — ADLAR – Выравнивание результата по левому краю;
Биты 0,1,2 — выбор канала АЦП от 0 до 7.

REFS1 REFS0 ADLAR 0 0 MUX2 MUX1 MUX0

Регистр данных АЦП – при ADLAR = 0


ADСL /ADCH (ADC Data Register)
ADСH - - - - - - ADC9 ADC8

ADСL ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0


7 0
АЦП последовательного приближения
ATMega32 – программная модель.

Регистр управления и состояния АЦП – ADCSRA


(ADC Control and Status Register A)
Бит 7 — ADCEN – Разрешение работы АЦП;
Бит 6 — ADSC – Запуск АЦП;
Бит 5 — ADATE – разрешение циклического преобразования;
Бит 4 — ADIF – Флаг прерывания от АЦП;
Бит 3 — ADIE – Разрешение прерывания от АЦП;
Биты 2,1,0 — ADPS2,1,0 – Коэффициент предварительного деления для
тактирования АЦП;

ADCEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

7 0
Регистр управления и состояния АЦП – ADCSRA
(ADC Control and Status Register A)
Биты 2,1,0 — ADPS2,1,0 – Коэффициент предварительного деления для
тактирования АЦП;
ADPS2 ADPS1 ADPS0 Делитель

0 0 0 2

0 0 1 2

0 1 0 4

0 1 1 8

1 0 0 16

1 0 1 32

1 1 0 64

1 1 1 128
АЦП последовательного приближения
ATMega32 – программная модель.

Регистр управления специальными функциями


(SFIOR - Special Function IO Register)
Биты 7,6,5 — ADTS2,1,0 – Выбор источника запуска АЦП;

0 0 0 – Свободный режим 1 0 0 – Таймер 0 (переполнение)


0 0 1 – Аналоговый компаратор 1 0 1 – Таймер 1 (сравнение)
0 1 0 – Внешнее прерывание 0 1 1 0 – Таймер 1 (переполнение)
0 1 1 – Таймер 0 (сравнение) 1 1 1 – Таймер 1 (захват)

ADTS2 ADTS1 ADTS0 - - - - -

7 0
Пример программного кода
; Продолжение программы
.include “m8535def.inc” ldi r20,0b00000111 ; - 7 канал АЦП
.org 0х0000 rjmp Init ; Таблица ; - опорное = AREF
.org 0х000e rjmp Int_ADC ; векторов ; его берем с платы
Init: ; - не выравнивать
ldi r16,high(RAMEND) ;Настройка out ADMUX,r20 ; Настроим
out SPH,r16 ;указателя ldi r20,0b10101000 ; - Разрешить
ldi r16,low(RAMEND) ;стека ; прерывания
out SPL,r16 ; - Циклический
clr r20 ;r20:=0 ; режим
out DDRC,r20 ; настройка ; - Делитель 2
; клавиатуры out ADCSRA,r20 ; Настроим
ldi r20,0x7F ; 7 пин АЦП sbi ADCSRA,0x06 ; Установить 6-й бит
out DDRA,r20 ; на ввод ; это старт АЦП
ser r20 ;r20:=255 sei ; разрешить прерывания
out DDRB,r20 ; настройка main: rjmp main ; infinity
out PORTB,r20 ; светодиодов Int_ADC: ; Обработчик преры-ния
ldi r20,0x7F ; 7 пин АЦП in r30, ADCL ; сначала младший байт
in r31, ADCH ; только потом старший
out PORTB,r30 ; проверка работы
reti
Функционирование программного кода
Где собака ?
Регистр мультиплексора АЦП –
ADMUX (ADC Multiplexer Selection Register)
Бит 5 — ADLAR – Выравнивание результата по левому краю;
REFS1 REFS0 ADLAR 0 0 MUX2 MUX1 MUX0

Регистр данных АЦП – при ADLAR = 0


ADСL /ADCH (ADC Data Register)
ADСH - - - - - - ADC9 ADC8

ADСL ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0

Регистр данных АЦП – при ADLAR = 1


ADСL /ADCH (ADC Data Register)

ADСH ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2

ADСL ADC1 ADC0 - - - - - -


Где собака ?
; Продолжение программы
ldi r20,0b00000111 ; - 7 канал АЦП
; - опорное = AREF
5 ; его берем с платы
; - не выравнивали там был 0, а надо выровнять - ставим 1 !!!
out ADMUX,r20 ; Настроим
ldi r20,0b10101000 ; - Разрешить
; прерывания
; - Циклический
; режим
; - Делитель 2
out ADCSRA,r20 ; Настроим
sbi ADCSRA,0x06 ; Установить 6 бит
; это старт АЦП
sei ; разрешить прерывания
main: rjmp main ; infinity
Int_ADC: ; Обработчик преры-ния
in r30, ADCL ; сначала младший байт
in r31, ADCH ; только потом старший
out PORTB,r31 ; проверка работы выводим СТАРШИЙ БАЙТ
reti
Функционирование программного кода
Встроенный компаратор ATMega32

Программируя
компаратор вывод
AIN0 можно
подключать к выводу
общего назначения
PB2 или к
внутреннему
источнику опорного
напряжения на 1.2 В.
AIN1 - к выводу PB3
или к одному из 8-и
входов модуля АЦП.
Компаратор для батарейки
Стабилитрон создает
опорное напряжение,
которое всегда
одинаково, а напряжение
с резистивного делителя
зависит от входного
напряжения

Например, на входе у нас 8 вольт. Со стабилитрона, рассчитанного на 3.3


вольта, выходит всегда одно и то же напряжение — 3.3 вольта. А с
симметричного резистивного делителя выходит половина напряжения, то есть
4 вольта. 4 это больше чем 3.3, (3.3 — 4 = -0.7 результат меньше нуля) с
компаратора выходит 0
Теперь если просядет батарейка и напряжение снизится до 6 вольт, то с
делителя будет уже 3 вольта, а с опорного как было 3.3 так и осталось. Зато
теперь на компараторе ситуация в корне поменялась — 3 меньше, чем 3.3
(3.3 — 3 = 0.3 результат больше нуля), а значит на выходе у него будет 1
Регистр управления компаратором
ACSR (Analog Comparator Control and Status Register)

ACD (Analog Comparator Disable) - включение компаратора. 1 -


запрещает работу аналогового компаратора, 0 - разрешает. По умолчанию
компаратор всегда включен. Для уменьшения энергопотребления в
спящих режимах, его рекомендуется отключать. При изменении бита ACD
нужно запрещать прерывания компаратора, сбрасывая бит ACIE. В
противном случае может произойти прерывание.
ACBG (Analog Comparator Bandgap Select) - подключение внутреннего
источника опорного напряжения (ИОН) на 1.23 В к положительному входу
компаратора (AIN0). 1 - подключает ИОН, 0 - отключает.
ACO (Analog Comparator Output) - этот бит хранит состояние выхода
аналогового компаратора, то есть результат сравнения входных
напряжений.
Регистр управления компаратором
ACSR (Analog Comparator Control and Status Register)

ACI (Analog Comparator Interrupt Flag) - флаг прерывания. Он


устанавливается аппаратно, когда происходит событие, определенное
битами ACIS1 и ACIS0. Если прерывания компаратора разрешены, то
вызывается обработчик. Флаг ACI сбрасывается аппаратно при
выполнении обработчика. Также он может быть очищен программно, если
записать в него 1.
ACIE (Analog Comparator Interrupt Enable) - разрешение прерываний
компаратора. Когда этот бит установлен в 1 и прерывания разрешены
глобально (установлен флаг I регистра SREG), компаратор генерирует
запрос на прерывание при изменении состояния его выхода.
ACIC (Analog Comparator Input Capture Enable) - подключает выход
компаратора к схеме захвата таймера Т1. 1 - выход компаратора
подключен к схеме захвата, 0 - не подключен.
Регистр управления компаратором
ACSR (Analog Comparator Control and Status Register)

ACIS1, ACIS0 (Analog Comparator Interrupt Mode Select) - эти биты


определяют событие, по которому будет вызываться прерывание
компаратора. Все варианты перечислены в таблице.

ACIS1 ACIS0 Событие

0 0 Любое изменение состояния выхода компаратора

0 1 Не используется

1 0 Выход изменяется с 1 на 0

1 1 Выход изменяется с 0 на 1
Регистр управления компаратором
Назначение конфигурационных битов регистра ACSR
Повторенье – мать ученья
Аналоговый, дискретный и цифровой сигнал
Òåðìèíû è îïðåäåëåíèÿ
• Аналоговый сигнал – это сигнал, значение которого
изменяются непрерывно во времени и пространстве.
• Дискретный сигнал – это сигнал значения которого
равноотнесены во времени и пространстве.
• Цифровой сигнал – это вариант дискретного сигнала,
значения которого во времени и по уровню определяются
выборками через равные промежутки времени - интервалы
дискретизации. Между выборками сигнал не меняется.
• Аналоговый компаратор – устройство, формирующее
выходной цифровой сигнал 0 или 1 как результат сравнения
двух входных аналоговых сигналов.
• Частота дискретизации – частота, с которой осуществляется
выборка (замер) сигнала для его преобразования в
цифровую форму (измеряется в Герцах)
Òåðìèíû è îïðåäåëåíèÿ
• Шаг дискретезации – это временной интервал, длительность
между двумя выборками, то есть обратная частоте
дискретизации величина (измеряется в секундах)
• Шаг квантования – это приращение (дельта) амплитуды
сигнала при его оцифровке. Определяется разрядностью
АЦП. Чем больше разрядность АЦП, тем меньше можно
сделать шаг квантования – то есть точнее оцифровать
сигнал.
• АЦП – Аналого-цифровой преобразователь – это устройство,
преобразующее входной аналоговый сигнал в цифровой
сигнал (в цифровой двоичный код).
• ЦАП – Цифро-аналоговый преобразователь — это
устройство, предназначенное для преобразования
цифрового кода в аналоговый сигнал по величине,
пропорциональной значению кода.
Íàãëÿäíûé ìàòåðèàë äëÿ ëåêöèè
1. Ëàáîðàòîðíûé ñòåíä STK-500 ñ «Ïðîøèòîé» ïðîãðàììîé
ÀÖÏ äëÿ äåìîíñòðàöèè
2. Îñöèëëîãðàô äëÿ äåìîíñòðàöèè ñèãíàëîâ
3. Ìóëüòèìåòð äëÿ èçìåðåíèé ñèãíàëîâ
4.Âèäåî-ôàéëû äåìîíñòðèðóþùèå ôóíêöèîíèðîâàíèå ÀÖÏ
Ñïàñèáî çà âíèìàíèå
(âàøè âîïðîñû ?)
Непомнящий Олег Владимирович

Вам также может понравиться