Примечание к выполнению задания

ЛАБОРАТОРНАЯ РАБОТА № 7

Синтез и исследование работы АЦП двойного интегрирования

 

Цель работы.

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

Введение.

Подавляющее большинство датчиков, использующихся в технических системах, выдают сигнал в аналоговом виде. Считывать, да и вообще обрабатывать информацию лучше все-таки в цифровой форме, которая является универсальной и не зависит от природы физической величины. Встает задача преобразования аналоговой величины в дискретную. Если подумать, то термин «аналоговый» не слишком хорошо отражает сущность явления – точнее говорить «непрерывный». Интересно, что непосредственный цифровой способ отображения информации на том же 7-сегментном индикаторе, хотя и значительно более корректен, чем аналоговый, не всегда может оказаться более правильным. Датчик количества топлива в том же автомобиле, который проектировщики традиционно заставляют врать, занижая показания, иначе слишком много водителей оказывалось бы в 100 метрах от ближайшей заправочной станции, является аналоговым. А обладателю часов с цифровым дисплеем приходится в уме производить довольно сложные арифметические действия, вычисляя интервал времени, вместо того чтобы просто мысленно передвинуть стрелки на циферблате. Как видите, проектирование устройств отображения не слишком простое дело, и не может производиться только из соображений компактности схемы или высокой точности измерений, а непременно должно учитывать требования эргономики и удобства пользования.

Основной принцип оцифровки любых сигналов очень прост. В некоторые моменты времени t1, t2, t3 и т.д. мы берем мгновенное значение аналогового сигнала и как бы прикладываем к нему линейку, проградуированную в двоичном масштабе. Обычная линейка содержит крупные деления (метры), поделенные каждое на десять частей (дециметры), каждая из которых также поделена на десять частей (сантиметры), и ещё на десять частей (миллиметры). Двоичная линейка содержала бы деления, поделенные пополам, затем еще раз пополам и т. д. – на сколько хватит разрешающей способности. Если вся длина такой линейки составляет, к примеру, 2,56 м, а самое мелкое деление – 1 см (то есть мы можем померить ей длину с точностью не хуже 1 см), то таких делений будет ровно 256, и их можно представить двоичным числом размером 1 байт или 8 двоичных разрядов. Ничего не изменится, если мы меряем не длину, а напряжение. При выбранной разрешающей способности и числе разрядов мы можем измерить величину не больше некоторого значения, которое соответствует максимальному числу, в данном случае 255. Иначе придется или увеличивать число разрядов (удлинять линейку) или менять разрешающую способность в сторону ухудшения (растягивать ее). Все изложенное здесь и есть сущность работы аналого-цифрового преобразователя – АЦП.

Нет в жизни совершенства. Наиболее точными и одновременно самыми медленными являются интегрирующие АЦП. Их следует рассмотреть подробно, потому что: во-первых, они достаточно просты схемотехнически, (иногда даже есть смысл самому соорудить такой узел схемы на дискретных элементах, чем подбирать подходящую БИС), и во-вторых, этот тип АЦП часто применяется в радиолюбительской. Интегрирующих АЦП вообще-то не меньше десятка, но мы рассмотрим наиболее простые.

Схема самого простого интегрирующего АЦП показана на рис. 1. Это АЦП с однократным интегрированием. В начале преобразования на вход С динамического D-триггера поступает положительный фронт, который устанавливает выход Q в состояние логической единицы. Она является разрешающим уровнем для элемента «И–НЕ», и на вход счетчика поступают импульсы. Одновременно через выход  запирается транзистор VT1. Конденсатор начинает заряжаться от источника стабильного тока. При равенстве значения входного измеряемого напряжения и напряжения на конденсаторе компаратор срабатывает и обнуляет триггер (выход на логическом элементе «И–НЕ» запираются, транзистор открывается и разряжает конденсатор, счетчик обнуляется). Количество импульсов, накопленных в счетчике к этому моменту, пропорционально входному напряжению.

Рисунок 1 – АЦП однократного интегрирования

У схемы на рис. 1. единственное достоинство – простота, и целая куча недостатков. Главным ее недостатком является то, что результат преобразования тут зависит от всего на свете – от стабильности источника тока и генератора линейного напряжения (и каждого его элемента в отдельности, в первую очередь – конденсатора), от стабильности порога компаратора, от неидеальности ключа для сброса и т. п. Еще хуже то, что схема в данном варианте срабатывает от мгновенного значения входного сигнала и потому весьма восприимчива к его дребезгу и вообще любым помехам. А если тактовая частота случайно окажется кратной частоте помехи (в первую очередь сетевой с частотой 50 Гц), то мы вообще можем получать каждый раз значения, весьма далекие от истины. Поэтому такая схема годится лишь для измерения сигналов постоянного тока – для контроля напряжения батареек или чего-нибудь в этом роде.

В то же время преобразование длится все равно достаточно долго, так как обычные значения тактовой частоты, при которых схема еще работает приемлемо, лежат в диапазоне максимум десятков килогерц, то есть для достижения разрешающей способности в восемь разрядов (больше все равно не выжать) частота отсчетов составит в лучшем случае 100 Гц, на практике же еще меньше. Может быть, использовать этот факт и измерять не мгновенное, а среднее значение сигнала за время преобразования? Сделать это несложно: подаём измеряемое напряжение на вход генератора линейного напряжения, а опорное – на компаратор. Тогда сигнал будет интегрироваться за время преобразования, причем интегрироваться очень точно, мы будем получать истинное среднее арифметическое значение сигнала за это время. Но легко увидеть, что сама функция преобразования при этом окажется обратной – то есть время заряда (и значение выходного кода на счетчике) окажется обратно пропорциональным значению входного напряжения. Это неудобно, так как сильно усложняет обработку результата.

Можно использовать какой-нибудь хитрый метод деления частоты с использованием реверсивного счетчика, можно попробовать инвертировать входной сигнал и затем сдвинуть его в положительную область, но все это приводит к усложнению схемы, причем неоправданному – сама по себе точность преобразования в любом случае не увеличится, избавляемся мы только от помехи. По всем этим причинам АЦП с однократным интегрированием, несмотря на его простоту, в настоящее время не употребляют вообще и даже не выпускают в виде специализированных микросхем. Единственная область, где можно было бы рекомендовать использовать такой метод – использование микропроцессоров, имеющих встроенный компаратор. В этом случае с помощью одного внешнего резистора и конденсатора можно получить простейший преобразователь аналогового сигнала в код. Но и эта рекомендация потеряла в настоящее время всякий смысл, так как доступны микроконтроллеры со встроенными «нормальными» АЦП, без всяких внешних элементов, причем мультиканальными, с гарантированной точностью, и разрешением до 10-ти и даже 12-ти разрядов, чего для большинства практических нужд более чем достаточно.

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

Рисунок 2 – Цикл работы АЦП двойного интегрирования
(1 – при сдвиге порога компаратора; 2 – идеальный случай; 3 – при изменении емкости конденсатора)

Посмотрим сначала на график, обозначенный цифрой 2. В первую стадию цикла работы за фиксированное время такта t2t1 конденсатор интегратора заряжается током, который определяется входным (измеряемым) напряжением Uвх. Во второй стадии этот конденсатор разряжается точно известным током, определяющимся опорным напряжением Uоп, до момента равенства напряжения нулю (t3). Чем больше входное напряжение, тем до большей величины зарядится конденсатор в первой стадии, и тем дольше он будет разряжаться во второй. Легко показать, что отношение интервала времени t3t2 к известному времени такта t2t1 будет равно отношению входного напряжения Uвх к опорному Uоп. Таким образом, измерив полученный интервал времени t3t2 обычным методом с помощью счетчика, как это сделано в схеме на рис. 1, мы получим на выходе код, пропорциональный входному напряжению.

На самом деле напряжение, до которого разряжается конденсатор, задается порогом компаратора и может в общем случае быть отличным от нуля на величину d за счет отклонения порога, например, при изменении температуры. Но так как в начале цикла измерения напряжение определялось тем же значением порога, то, как вы видите из графика 1 на рис. 2, в данном случае имеет значение только изменение порога за время преобразования. А оно даже в самых неповоротливых АЦП такого типа не превышает долей секунды, потому это изменение можно не принимать в расчет. На результате не скажется и изменение емкости конденсатора, так как при этом наклон прямой и заряда, и разряда изменится в одинаковой степени (график 3).

В самых точных АЦП такого типа дополнительно проводят цикл «коррекция нуля», когда на вход подают нулевое напряжение и результат потом вычитают из значения кода, полученного в рабочем цикле. Мало того, всю схему можно заводить от любого RC-генератора при условии, что время такта t3t2 и частота заполнения «ворот» для подсчета длительности результирующего интервала t2t1 задаются от одного и того же генератора. Но чудес не бывает – точность и стабильность преобразования здесь полностью определяются точностью и стабильностью значения Uоп. От этого никуда не денешься, это общее условие для всех без исключения конструкций АЦП и ЦАП.

Сконструированное нами АЦП относится к типу ПНВ: преобразователей напряжение – время. Ранее широко использовались ПНЧ: преобразователи напряжение – частота (в основном на основе микросхемы 555), однако большинство их реализаций обладает тем же недостатком, что и однократный интегратор, то есть в них точность напрямую зависит от качества компонентов.

Схема, реализующая метод двойного интегрирования, представлена на рисунке 3.

Рисунок 3 – Структурная схема АЦП двойного интегрирования

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


Задание.

Разработать структурную схему АЦП двойного интегрирования, построенную на базе микропроцессора К1816ВЕ48, и описать алгоритм ее работы. Считаем, что реализации переключателей S1 – S2 использованы транзисторные ключи, управление которыми осуществляется по линиям P1.0 и P1.1 соответственно. Выход компаратора подключен ко входу T0 микропроцессора.

Разработать и отладить программу управления АЦП. Пользуясь эмулятором, исследовать работу АЦП, получить периоды Т2 и Т3, записать их значения в регистры R6и R7, по значению опорного напряжения Uоп определить значение входного напряжения. Для заинтересованных студентов – предложить алгоритм вычисления входного напряжения.

Примечание к выполнению задания.

Следует заметить, что эмулятор не позволяет моделировать работу подключённых внешних устройств. При срабатывании ключа S2 (за счет установки P1.1 в единицу) запускаем таймер. Срабатывание компаратора эмулируем изменением состояния входа T0. При этом необходимо остановить таймер, занести полученное значение t2t1 в регистр R6, очистить содержимое таймера, и после отключения S2 и включения S1 снова запустить таймер. При новом изменении состояния на входе T0 остановить таймер, занести полученное значение t3t2 в регистр R7. Для расчета входного напряжения опорное напряжение определяются из таблицы 1.

Таблица 1 – Значение опорного напряжения

i 0 1 2 3 4 5 6 7 8 9
Uоп, В 3 4 5 6 7 8 9 10 12 15

где i – последняя цифра номера зачетной книжки.

Содержание отчета.

1. Цель работы.

2. Структурная схема АЦП на основе микропроцессора.

3. Описание работы АЦП.

4. Алгоритм программы.

5. Текст программы на языке Ассемблер.

6. Выводы по работе.

Контрольные вопросы.

1. Нарисуйте формат слова состояния программы и расскажите о флагах, устанавливаемых по результатам выполнения операций обработки данных в АЛУ.

2. Как измерить период времени между двумя событиями?

3. Как организовать задержку времени для микропроцессора К1816ВЕ48?

4. Опишите работу системы прерываний микропроцессора К1816ВЕ48.

5. Какие команды работы с таймером существуют?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: