АНАЛИЗ ПРОГРАММЫ ДЛЯ «УЧЕБНОГО» МИКРОКОНТРОЛЛЕРА (АНАЛОГО-ЦИФРОФОЙ ПРЕОБРАЗОВАТЕЛЬ)
Аналого-цифровой преобразователь (АЦП) преобразует непрерывную аналоговую величину (напряжение или ток) в цифровой код, соответствующий этой величине. Для простоты понимания будем считать, что в данном примере на вход АЦП подается постоянное напряжение U, которое может находится в пределах от 0 до 2,55В (2550мВ), а на выходе будет формироваться восьмиразрядный двоичный код, находящийся соответственно в пределах от 0 до 255 (двоичный вид: от 00000000В до 11111111В), т.е. единице выходного кода соответствует 10 мВ входного напряжения (рис.4).
U (0÷2550 мВ) АЦП 8 N (0÷255)
Рис.4 - Структурная схема АЦП
На рис.5 изображена функциональная схема АЦП на базе микроконтроллера, реализующего метод последовательных приближений. На этом рисунке: МК – микроконтроллер; ЦАП – цифроаналоговый преобразователь, который преобразует цифровой код в аналоговую величину (в данном случае в напряжение); К – компаратор (устройство сравнения), имеющий два входа: прямой "+" и инверсный "-", причем на выходе компаратора будет логическая единица, если напряжение на прямом входе больше чем на инверсном, и логический ноль в обратном случае.
|
|
U<UЦАП
"1"
U _ U>UЦАП МК
К "0"
+ Т0
BUS 8 N
Nп
UЦАП ЦАП 8 P1
Рис.5 - Функциональная схема АЦП
АЦП по методу последовательных приближений работает следующим образом. Допустим, на вход АЦП подано напряжение U=1652 мВ. На первом цикле МК формирует промежуточный код Nп=27=128. Этот код выдается микроконтроллером через порт P1 на вход ЦАП, который преобразует его в соответствующее напряжение UЦАП=1280 мВ (для данного АЦП). Компаратор К сравнивает входное напряжение U и напряжение UЦАП. Для первого цикла U>UЦАП (1652 мВ > 1280 мВ), поэтому на выходе компаратора формируется логический ноль. МК через вход Т0 анализирует результат сравнения и если (Т0)=0 (U>UЦАП), то сохраняет сформированный промежуточный код Nп, и не сохраняет при (Т0)=1 (U<UЦАП). В данном случае МК сохраняет промежуточный код Nп. На втором цикле МК формирует промежуточный код Nп =Nп+26=128+64=192. Этот код через порт P1 подается на вход ЦАП, который преобразует его в соответствующее напряжение UЦАП=1920 мВ. Компаратор К сравнивает входное напряжение U и напряжение UЦАП: U<UЦАП (1652 мВ < 1920 мВ), поэтому на выходе компаратора формируется логическая единица. МК через вход Т0 анализирует результат сравнения и в данном случае не сохраняет полученный промежуточный код Nп, т.е. остается предыдущий промежуточный код Nп=128 и т.д. все восемь циклов. Последний сохраненный промежуточный код Nп будет выходным кодом N, который в конце измерительного цикла выдается через порт BUS. Табл. 7 поясняет процесс формирования кода N.
|
|
Таблица 7 – Формирование выходного кода N при U=1652 мВ
№ цикла | 2i | Промежуточный код Nп=Nп+2i | UЦАП, мВ | Т0 | N |
1 | 27=128 | 128 - сохранен | 1280 | 0 | 1 |
2 | 26=64 | 128+64=192 – не сохранен | 1920 | 1 | 0 |
3 | 25=32 | 128+32=160 - сохранен | 1600 | 0 | 1 |
4 | 24=16 | 160+16=176 – не сохранен | 1760 | 1 | 0 |
5 | 23=8 | 160+8=168 – не сохранен | 1680 | 1 | 0 |
6 | 22=4 | 160+4=164 - сохранен | 1640 | 0 | 1 |
7 | 21=2 | 164+2=166 – не сохранен | 1660 | 1 | 0 |
8 | 20=1 | 164+1=165 - сохранен | 1650 | 0 | 1 |
N=10100101B=A5H=165
Таким образом, выходной код N формируется в двоичном виде поразрядно, начиная со старшего.
На рис.6 приведена блок-схема алгоритма, реализующего метод последовательных приближений, а пример программы по данной теме – см. лабораторную работу №8. Следует заметить, что процесс формирования 2i осуществляется путем "проталкивания" единицы из признака С в "пустой" аккумулятор и дальнейшим ее "продвижением" с помощью команды RRC. Еще одно замечание – программа будет выполняться бесконечно, пока на микроконтроллер подано питание. Такое зацикливание характерно для работы реальных измерительных устройств, имеющих в своем составе микропроцессор.
Рис.6. Блок-схема алгоритма, реализующего метод последовательных приближений
Задания к практическому занятию №7:
1) для программы АЦП сформировать таблицу аналогичную табл. 5 при следующих входных напряжениях: 527 мВ; 960 мВ; 1213 мВ; 2322 мВ;
2) подсчитать время выполнения одного измерительного цикла для каждого значения входного напряжения.