sonyps4.ru

Простой АЦП - приставка к ПК. Схема, описание

Аналоговые (АЦП) входы контроллера. Не каждому и не сразу понятно, что это такое и с чем его едят. Потому попытаюсь объяснить своими словами.

Вообще, что такое "аналоговый" вход? У контроллера два типа входов: цифровой и аналоговый. Цифровой может принимать только два значения: ноль и единица. Ноль - нет напряжения, единица - есть напряжение. Информация передается на цифровой вход импульсами во времени. А вот аналоговый вход способен принимать не только эти два значения, но вообще любое напряжение.

У контроллера NM8036 имеются два аналоговых входа (см. ). На каждый из этих входов может быть подано любое напряжение в пределах от 0 до напряжения питания (5 в). Например, 1,8 вольта, или 3,2 вольта... Короче, любое, но не более 5 вольт.

Что с этим напряжением делает контроллер? Очень просто: измеряет и представляет его в цифровом виде. Причем, делает он это в пределах от 0 до 1023. Это бинарные данные (bin-data), в которых верхний предел (1023) приравнивается к напряжению в 5 вольт. Это и есть Аналого-Цифровое Преобразование (АЦП).

Но фактическое напряжение - оно и есть фактическое. 5 вольт - они и есть 5 вольт. Это значение рассматривается здесь, как "Вольты". И правильно, вольты и есть.

Но здесь можно представить это напряжение и в других физических величинах (Физика). Например, подключили мы ко входу датчик давления или влажности, или тоже датчик температуры, но не цифровой, как DS1820, а терморезисторный. Этот терморезисторный датчик выдаст нам напряжение от 0 до 5 вольт (электронщики, не возбуждайтесь! Это лишь для примера.), но ведь нам важно знать температуру, а не напряжение!

Вот мы и калибруем эти значения. Нижний предел в настройках (см. Управление отоплением частного дома. Advanced Manager.) установим, например, в 16 градусов, а верхний - в 30 градусов. Вот такой вот у нас датчик, видите ли, подключен. А количество знаков после запятой поставим 2. И префикс укажем: С (то бишь, градусов цельсия).

И что мы при этом получим? А получим то, что когда датчик пришлет на вход напряжение, например, в 2,5 вольта, контроллер быстренько все пересчитает и выдаст нам три варианта результатов: 512 (bin-data), 2,5в (Вольты) и 23.00 С (градусов цельсия). Вот таким образом можно настроить работу практически с любым датчиком, выдающим на своем выходе аналоговое значение напряжения.

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

Простой выключатель на 2 положения. Может иметь на выходе Data либо 0 вольт, либо 5 вольт. Подключается тремя проводами: Vcc (+5в), Data (данные) и Gnd (общий провод). Таким выключателем можно устанавливать два разных режима работы нагрузок при программировании системы.

Переключатель на большее количество положений может обеспечить возможность программирования и большего количества режимов. Вот, скажем, на 3 положения. Каждое положение имеет свое напряжение на выходе. Самое нижнее положение - на выходе 1,25 в, среднее 2,5 в и верхнее 3.75 в. Увеличивая количество резистров в цепочке, можно увеличивать и количество положений переключателя.

Это были варианты ступенчатой регулировки, но ведь есть и вариант плавного регулирования. Здесь величина выходного напряжения зависит от положения движка переменного резистора. Можно применить, например, для ручной регулировки температуры. Сделать программу так, чтобы она поддерживала температуру в помещении такой, какая задана регулятором. Автоматическая регулировка - это одно, но нередко хочется где-то что-то повернуть, щелкнуть, чтобы было потеплее, или, наоборот, попрохладнее. Человек ведь существо привередливое.

Или применить такую схему для контроля, скажем, за уровнем воды в емкости, в колодце... Это несложно: поплавок на нитке, намотанной на ручку переменного резистора. Подпружиненной, естественно. Но это так, навскидку, без детальной проработки.

Если же продолжать фантазировать, то можно еще измерять уровень освещенности и в нужное время включать/отключать лампу... Короче, возможностей у этих аналоговых входов масса, NM8036 вполне может осилить немало задач не только в управлении отоплением частного дома, но и для решения многих других задач. О возможностях программирования поговорим в следующих статьях.

Кстати, по поводу регулировки температуры в помещении есть очень даже неплохое решение, взятое мною из . В ответ на чей-то вопрос автор сообщения Brokly (он же автор Advanced Manager) привел пример применения аналогового входа. Привожу дословно:
Вы бы еще сложнее че нить придумали. Поставьте контактный настенный термостат, подключите к аналоговому входу, и пусть алкаши сами его крутят. И уборщицу освободите, и пъяным забава. Да и контроллеру меньше работы, сработал термостат - можно не греть.

Как тебе такое, Мастер? А мне, знаешь, понравилось.

Продолжение следует...


Всем привет. Сегодня мы затронем серьезную тему под названием АЦП. Как всегда начну с характеристик АЦП, на примере, ATmega8. И так на борту имеется 6-канальный аналого-цифровой преобразователь(АЦП) который имеет 4 канала с 10-разрядной точностью и 2 канала с 8-разрядной точностью.
И так что-же значит «10-разрядной точностью». Это значит что измерение будет разбито на 2 10 частей, и для того что бы определить шаг измерения нужно поделить напряжение АЦП на 2 10 =1023(т.к. отсчет с 0), например, если измеряемое напряжение равно 2.56В, то наш шаг составит 2.56/1023=0,0025В. Далее нужно будет просто умножить шаг на значение регистра ADCH(старший бит) и ADCL(младший бит), где хранится результат преобразования.


Теперь подробнее:
Для управления АЦП нам нужно записать нужные числа в регистры управления АЦП под названиями ADMUX и ADCSRA(ADCSR)
ADMUX – регистр мультиплексора АЦП.

Биты 7:6 (REFS1:REFS0) - биты выбора опорного напряжения. Если мы будем менять эти биты во время преобразования, то изменения вступят в силу только после текущего преобразования. В качестве опорного напряжения может быть выбран AVcc (напряжение источника питания), AREF или внутренний источник опорного напряжения 2.56В.

Биты 7:6
REFS1:REFS0
00 AREF
01 AVcc, с внешним конденсатором на AREF
10 Резерв
11 Внутренний 2.56В источник, с внешним конденсатором на AREF

Бит 5 – ADLAR. Определяет как результат запишется в регистры

Биты 3:0 – MUX3:MUX0 – Биты выбора канала.
MUX3:0
0000 ADC0
0001 ADC1
0010 ADC2
0011 ADC3
0100 ADC4
0101 ADC5
0110 ADC6
0111 ADC7

Следующий регистр – ADCSRA где хранятся главные настройки АЦП

Бит 7 – ADEN. Разрешение АЦП.
0 – АЦП выключен
1 – АЦП включен

Бит 6 – ADSC. Запуск преобразования (в режиме однократного преобразования)
0 – преобразование завершено
1 – начать преобразование

Бит 5 – ADFR. Выбор режима работы АЦП
0 – режим однократного преобразования
1 – режим непрерывного преобразования

Бит 4 – ADIF. Флаг прерывания от АЦП. Бит устанавливается, когда преобразование закончено.

Бит 3 – ADIE. Разрешение прерывания от АЦП
0 – прерывание запрещено
1 – прерывание разрешено
Прерывание от АЦП генерируется (если разрешено) по завершении преобразования.

Биты 2:1 – ADPS2:ADPS0. Тактовая частота АЦП, а точнее делитель тактовой частоты МПС
ADPS2:0
000 2
001 2
010 4
011 8
100 16
101 32
110 64
111 128

Чем больше частота - тем быстрее преобразование, но больше погрешность.

Вот так происходит преобразование

Ну и в качестве примера сделаем вольтметр на 10В.
Расчетная часть будет выглядеть так:
Будем использовать старший байт ADCH поэтому количество измерений будет 2 8 =255. Опорное напряжение – внутренний источник на 2.56В. Далее рассчитываем шаг 2.56/255=1мВ. Для того что бы измерить наши 10В нужно поставить делитель напряжения, несложными расчетами подбираем наиболее правдоподобные резисторы на 56КОм и 15КОм, тогда наш коэффициент равен 4.73. Окончательная формула выглядит так
Значение в Вольтах = ADCH*0.01*4.73;


Имеется погрешность в одну десятую т.к. делитель подобран не идеально (если кто то захочет собрать схему можно поставить подстроечник). Только не забывайте ставить емкостно-индуктивный фильтр.

Теперь программная часть:
Как всегда создаем проект в кодвижине (CodeVision) удаляем все и пишем:
// с библиотеками всё понятно #include #include #include #include #include //наши переменные char result; unsigned char volt; //выбор порта для ЖКИ-порт В #asm .equ __lcd_port=0x18 ; #endasm //Функция инициализации void ADC_init() { ADMUX = 0xf0; //если более понятно пишем 0b11110000 ADCSRA = 0x8d; //0b10001101 } //Функция измерения unsigned char ADC_result(unsigned char adc_input) { ADMUX=adc_input | (ADMUX & 0xF0); //выставляем канал delay_us(30); //задержка для стабилизации ADCSRA |= 0x40; while((ADCSRA & 0x10)==0); //Ждём флаг окончания измерения ADCSRA|=0x10; return ADCH;//Возвращаем старший байт } //Наша главная функция void main() { ADC_init(); volt=ADC_result(0)*0.01*4.73*10; //умножение на 10 для точности до десятых sprintf(result,"V=%i.%u",volt/10,volt%10); lcd_init(16); lcd_gotoxy(0,0); lcd_puts(result); }

Дерзайте!
Хотите подробнее – читайте даташит, ну или бегите на форум.

Так сложилось, что основной МК с которым я работаю постоянно и на котором делаю подавляющее большинство задач это ATTiny2313 — он популярен, а, главное, это самый дешевый контроллер из всей линейки AVR с числом ног более 8. Я их брал числом около трех сотен за 18, чтоль, рублей штучка. Но вот западло — у него нет АЦП . Совсем нет. А тут он понадобился — нужно замерить сигнал с датчика. Засада. Не переходить же из-за такой фигни на более фаршированную ATTiny26 — она и стоит дороже и фиг где купишь у нас, да и что тогда делать с той прорвой ATTiny2313 что уже закуплена? Пораскинул мозгами…

А почему бы не сварганить АЦП последовательного сравнения? Конечно, быстродействие и точность будет не фонтан, зато, не меняя тип МК и всего с двумя копеечными деталями дополнительного обвеса, я получу полноценный, хоть и тормозной, 8ми разрядный АЦП, вполне удовлетворяющий моим скромным запросам!

Как работает АЦП последовательного сравнения.
Что у нас есть в ATTiny2313 аналогового? Правильно — . Теперь достаточно подать на его вход замеряемый сигнал и методично сравнивать с опорным напряжением, линейно изменяя величину опорного напряжения. На каком из опорных напряжений произойдет сработка компаратора, тому и примерно равен измеряемый сигнал +/_ шаг изменения опорного.

Осталось получить переменное опорное напряжение, а чем, из сугубо цифрового выхода контроллера, можно вытянуть аналоговый сигнал? ШИМом! Предварительно его проинтегрировав. Для интеграции используем простейший RC фильтр. Конденсатор у нас будет интегрировать заряд, а резистор не даст сдохнуть порту при зарядке кондера. Результатом прогона ШИМ’а через подобный фильтр станет достаточно стабильное постоянное напряжение.

Осталось только прикинуть номиналы фильтра. Частота среза — частота, начиная с которой, фильтр начинает глушить переменную составляющую, у Г образного RC фильтра равна обратной величине из его постоянной времени w=1/RC . Я воткнул кондер на 0.33Е-6 Ф и резистор на 470 Ом, получилось что w=6447 рад/c . Поскольку угловая частота нам никуда не уперлась, то делим ее на 2pi = 6.28 получили около килогерца, 1026.6 Гц, если быть точным. Раз частота ШИМ а у нас запросто может быть порядка десятков килогерц, то на выходе будет гладенькая такая постоянка, с незначительными пульсациями.

Теперь заворачиваем эту ботву на вход компаратора, на второй пускаем наш измеряемый сигнал и начинаем развлекаться с кодом. Получилась вот такая схема, собранная , что и . Тут, правда, не ATTiny2313, а Mega8 у которой АЦП есть, но мы пока забудем о его существовании. Красными линиями нарисован наш фильтр.

Код будет простецкий, чтобы не заморачиваться выложу и отдельные исходники в виде файлов:

  • — Головной файл
  • — Таблица векторов прерываний
  • — Инициализация периферии
  • и — Макросы и макроопределения

Прокомментирую лишь главную функцию Calc .
При вызове процедуры Calc у нас первым делом:

  1. Конфигурируется аналоговый компаратор и, главное, активизируются его прерывания.
  2. Затем в сканирующий регистр (R21) закидывается начальное значение сканирования 255.
  3. После чего это значение забрасывается в регистр сравнения ШИМ OCR1AL . ШИМ был заранее, в разделе init.asm сконфигурирован и запущен, так что сразу же на его выходе появляется сигнал скважностью (скважность это отношение длительности сигнала к периоду этого сигнала) 1 т.е., фактически, пока это просто единица.
  4. Выжидаем в функции Delay некоторое время, чтобы закончился переходный процесс (конденсатор не может мгновенно изменить свое напряжение)
  5. Уменьшем значение сканирующего регистра (что при загрузке в OCR1AL уменьшит скважность на 1/255), проверяем не стало ли оно нулю. Если нет, переходим на пункт 3.
Итогом станет последовательное уменьшение скважности сигнала с 1 до 0, с шагом в 1/255 , что будет преобразовано после фильтра в уменьшающееся напряжение. А, так как в главной процедуре у меня Calc вызывается циклически, то на входе компаратора будет пила.

Как видно, вверху есть некоторый срез. Это связано с тем, что максимальное напряжение, которое может выдать нога МК, с учетом падений на всех резисторах, порядка 4.7 вольта, а с задающего потенциоматера я могу и все 5 выкрутить. Ну еще и верхушки заваливаются чуток. Если понизить частоту, то диапазон несколько расширится.

Вот так, применив немного смекалки, а также две дополнительные детали общей суммой в один рубль и десяток строк кода, я сэкономил кучу бабла =)

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

Введение

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


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

Основные характеристики АЦП

АЦП имеет множество характеристик, из которых основными можно назвать частоту преобразования и разрядность. Частота преобразования обычно выражается в отсчетах в секунду (samples per second, SPS), разрядность – в битах. Современные АЦП могут иметь разрядность до 24 бит и скорость преобразования до единиц GSPS (конечно, не одновременно). Чем выше скорость и разрядность, тем труднее получить требуемые характеристики, тем дороже и сложнее преобразователь. Скорость преобразования и разрядность связаны друг с другом определенным образом, и мы можем повысить эффективную разрядность преобразования, пожертвовав скоростью.

Типы АЦП

Существует множество типов АЦП, однако в рамках данной статьи мы ограничимся рассмотрением только следующих типов:

  • АЦП параллельного преобразования (прямого преобразования, flash ADC)
  • АЦП последовательного приближения (SAR ADC)
  • дельта-сигма АЦП (АЦП с балансировкой заряда)
Существуют также и другие типы АЦП, в том числе конвейерные и комбинированные типы, состоящие из нескольких АЦП с (в общем случае) различной архитектурой. Однако приведенные выше архитектуры АЦП являются наиболее показательными в силу того, что каждая архитектура занимает определенную нишу в общем диапазоне скорость-разрядность.

Наибольшим быстродействием и самой низкой разрядностью обладают АЦП прямого (параллельного) преобразования. Например, АЦП параллельного преобразования TLC5540 фирмы Texas Instruments обладает быстродействием 40MSPS при разрядности всего 8 бит. АЦП данного типа могут иметь скорость преобразования до 1 GSPS. Здесь можно отметить, что еще большим быстродействием обладают конвейерные АЦП (pipelined ADC), однако они являются комбинацией нескольких АЦП с меньшим быстродействием и их рассмотрение выходит за рамки данной статьи.

Среднюю нишу в ряду разрядность-скорость занимают АЦП последовательного приближения. Типичными значениями является разрядность 12-18 бит при частоте преобразования 100KSPS-1MSPS.

Наибольшей точности достигают сигма-дельта АЦП, имеющие разрядность до 24 бит включительно и скорость от единиц SPS до единиц KSPS.

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

АЦП прямого преобразования

АЦП прямого преобразования получили широкое распространение в 1960-1970 годах, и стали производиться в виде интегральных схем в 1980-х. Они часто используются в составе «конвейерных» АЦП (в данной статье не рассматриваются), и имеют разрядность 6-8 бит при скорости до 1 GSPS.

Архитектура АЦП прямого преобразования изображена на рис. 1

Рис. 1. Структурная схема АЦП прямого преобразования

Принцип действия АЦП предельно прост: входной сигнал поступает одновременно на все «плюсовые» входы компараторов, а на «минусовые» подается ряд напряжений, получаемых из опорного путем деления резисторами R. Для схемы на рис. 1 этот ряд будет таким: (1/16, 3/16, 5/16, 7/16, 9/16, 11/16, 13/16) Uref, где Uref – опорное напряжение АЦП.

Пусть на вход АЦП подается напряжение, равное 1/2 Uref. Тогда сработают первые 4 компаратора (если считать снизу), и на их выходах появятся логические единицы. Приоритетный шифратор (priority encoder) сформирует из «столбца» единиц двоичный код, который фиксируется выходным регистром.

Теперь становятся понятны достоинства и недостатки такого преобразователя. Все компараторы работают параллельно, время задержки схемы равно времени задержки в одном компараторе плюс время задержки в шифраторе. Компаратор и шифратор можно сделать очень быстрыми, в итоге вся схема имеет очень высокое быстродействие.

Но для получения N разрядов нужно 2^N компараторов (и сложность шифратора тоже растет как 2^N). Схема на рис. 1. содержит 8 компараторов и имеет 3 разряда, для получения 8 разрядов нужно уже 256 компараторов, для 10 разрядов – 1024 компаратора, для 24-битного АЦП их понадобилось бы свыше 16 млн. Однако таких высот техника еще не достигла.

АЦП последовательного приближения

Аналого-цифровой преобразователь последовательного приближения (SAR, Successive Approximation Register) измеряет величину входного сигнала, осуществляя ряд последовательных «взвешиваний», то есть сравнений величины входного напряжения с рядом величин, генерируемых следующим образом:

1. на первом шаге на выходе встроенного цифро-аналогового преобразователя устанавливается величина, равная 1/2Uref (здесь и далее мы предполагаем, что сигнал находится в интервале (0 – Uref).

2. если сигнал больше этой величины, то он сравнивается с напряжением, лежащим посередине оставшегося интервала, т.е., в данном случае, 3/4Uref. Если сигнал меньше установленного уровня, то следующее сравнение будет производиться с меньшей половиной оставшегося интервала (т.е. с уровнем 1/4Uref).

3. Шаг 2 повторяется N раз. Таким образом, N сравнений («взвешиваний») порождает N бит результата.

Рис. 2. Структурная схема АЦП последовательного приближения.

Таким образом, АЦП последовательного приближения состоит из следующих узлов:

1. Компаратор. Он сравнивает входную величину и текущее значение «весового» напряжения (на рис. 2. обозначен треугольником).

2. Цифро-аналоговый преобразователь (Digital to Analog Converter, DAC). Он генерирует «весовое» значение напряжения на основе поступающего на вход цифрового кода.

3. Регистр последовательного приближения (Successive Approximation Register, SAR). Он осуществляет алгоритм последовательного приближения, генерируя текущее значение кода, подающегося на вход ЦАП. По его названию названа вся данная архитектура АЦП.

4. Схема выборки-хранения (Sample/Hold, S/H). Для работы данного АЦП принципиально важно, чтобы входное напряжение сохраняло неизменную величину в течение всего цикла преобразования. Однако «реальные» сигналы имеют свойство изменяться во времени. Схема выборки-хранения «запоминает» текущее значение аналогового сигнала, и сохраняет его неизменным на протяжении всего цикла работы устройства.

Достоинством устройства является относительно высокая скорость преобразования: время преобразования N-битного АЦП составляет N тактов. Точность преобразования ограничена точностью внутреннего ЦАП и может составлять 16-18 бит (сейчас стали появляться и 24-битные SAR ADC, например, AD7766 и AD7767).

Дельта-сигма АЦП

И, наконец, самый интересный тип АЦП – сигма-дельта АЦП, иногда называемый в литературе АЦП с балансировкой заряда. Структурная схема сигма-дельта АЦП приведена на рис. 3.

Рис.3. Структурная схема сигма-дельта АЦП.

Принцип действия данного АЦП несколько более сложен, чем у других типов АЦП. Его суть в том, что входное напряжение сравнивается со значением напряжения, накопленным интегратором. На вход интегратора подаются импульсы положительной или отрицательной полярности, в зависимости от результата сравнения. Таким образом, данный АЦП представляет собой простую следящую систему: напряжение на выходе интегратора «отслеживает» входное напряжение (рис. 4). Результатом работы данной схемы является поток нулей и единиц на выходе компаратора, который затем пропускается через цифровой ФНЧ, в результате получается N-битный результат. ФНЧ на рис. 3. Объединен с «дециматором», устройством, снижающим частоту следования отсчетов путем их «прореживания».

Рис. 4. Сигма-дельта АЦП как следящая система

Ради строгости изложения, нужно сказать, что на рис. 3 изображена структурная схема сигма-дельта АЦП первого порядка. Сигма-дельта АЦП второго порядка имеет два интегратора и две петли обратной связи, но здесь рассматриваться не будет. Интересующиеся данной темой могут обратиться к .

На рис. 5 показаны сигналы в АЦП при нулевом уровне на входе (сверху) и при уровне Vref/2 (снизу).

Рис. 5. Сигналы в АЦП при разных уровнях сигнала на входе.

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

Рассмотрим структурную схему сигма-дельта модулятора, изображенную на рис. 3, и представим ее в таком виде (рис. 6):

Рис. 6. Структурная схема сигма-дельта модулятора

Здесь компаратор представлен как сумматор, который суммирует непрерывный полезный сигнал и шум квантования.

Пусть интегратор имеет передаточную функцию 1/s. Тогда, представив полезный сигнал как X(s), выход сигма-дельта модулятора как Y(s), а шум квантования как E(s), получаем передаточную функцию АЦП:

Y(s) = X(s)/(s+1) + E(s)s/(s+1)

То есть, фактически сигма-дельта модулятор является фильтром низких частот (1/(s+1)) для полезного сигнала, и фильтром высоких частот (s/(s+1)) для шума, причем оба фильтра имеют одинаковую частоту среза. Шум, сосредоточенный в высокочастотной области спектра, легко удаляется цифровым ФНЧ, который стоит после модулятора.

Рис. 7. Явление «вытеснения» шума в высокочастотную часть спектра

Однако следует понимать, что это чрезвычайно упрощенное объяснение явления вытеснения шума (noise shaping) в сигма-дельта АЦП.

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

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

Немного истории

Самым старым упоминанием АЦП в истории является, вероятно, патент Paul M. Rainey, «Facsimile Telegraph System,» U.S. Patent 1,608,527, Filed July 20, 1921, Issued November 30, 1926. Изображенное в патенте устройство фактически является 5-битным АЦП прямого преобразования.

Рис. 8. Первый патент на АЦП

Рис. 9. АЦП прямого преобразования (1975 г.)

Устройство, изображенное на рисунке, представляет собой АЦП прямого преобразования MOD-4100 производства Computer Labs, 1975 года выпуска, собранный на основе дискретных компараторов. Компараторов 16 штук (они расположены полукругом, для того, чтобы уравнять задержку распространения сигнала до каждого компаратора), следовательно, АЦП имеет разрядность всего 4 бита. Скорость преобразования 100 MSPS, потребляемая мощность 14 ватт.

На следующем рисунке изображена продвинутая версия АЦП прямого преобразования.

Рис. 10. АЦП прямого преобразования (1970 г.)

Устройство VHS-630 1970 года выпуска, произведенное фирмой Computer Labs, содержало 64 компаратора, имело разрядность 6 бит, скорость 30MSPS и потребляло 100 ватт (версия 1975 года VHS-675 имела скорость 75 MSPS и потребление 130 ватт).

Литература

W. Kester. ADC Architectures I: The Flash Converter. Analog Devices, MT-020 Tutorial.

Оценка 1 Оценка 2 Оценка 3 Оценка 4 Оценка 5

Микросхема PCF8591 обладает следующими возможностями:

Единственный источник питающего напряжения;
- сохранение работоспособности в диапазоне питающих напря-жений от 2,5 до 6 В;
- низкий ток потребления;
- три вывода задания slave-адреса;
- четыре аналоговых входа с возможностью программирования включения (прямое и дифференциальное);
- использование A/D преобразования с последовательным при-ближением и 8-разрядным диапазоном чисел;
- мультиплексированный D/A преобразователь с одним аналого-вым выходом.

Данная микросхема выполнена по технологии КМОП, имеет 4 аналоговых входа и 1 аналоговый выход, управляемые посредством задания данных на шине I2C. Биты А2...А0 в slave-адресе микросхемы задаются внешними сигналами по традиционному способу: подключением соответствующих выводов либо к общему проводу, либо к напряжению питания. Это позволяет использовать до 8 однотипных микросхем. В составе PCF8591 имеется только один A/D преобразователь , но использование методов мультиплексирования расширяет входные возможности микросхемы. Вход АЦП последовательно подключается к 4 сигнальным входам, и происходит считывание информации с них. К сожалению, мультиплексирование нельзя использовать для D/A преобразования, поэтому аналоговый выход только один. Максимальная скорость преобразования данных ограничена максимальным быстродействием шины I2C.

Рисунок 1. Расположение выводов микросхемы PCF8591

Рисунок 2. Блок-схема, отражающая внутреннее устройство и взаимодействие элементов микросхемы

Таблица 1. Назначение выводов PCF8591

Символ Вывод Описание
AIN0 1 Аналоговый вход (A/D)
AIN1 2 Аналоговый вход (A/D)
AIN2 3 Аналоговый вход (A/D)
AIN3 4 Аналоговый вход (A/D)
А0 5 Адресный вход 0
A1 6 Адресный вход 1
A2 7 Адресный вход 2
Vss 8 Общий провод микросхемы (питание)
SDA 9 Линия SDA шины I2C
SCL 10 Линия SCL шины I2C
OSC 11 Вывод подключения внешнего генератора
EXT 12 Внешний/внутренний генератор
AGND 13 Аналоговая «земля»
Vref 14 Опорное напряжение
AOUT 15 Аналоговый выход (D/A)
Vdd 16 Напряжение питания«+»

Slave-адрес микросхемы задается, как показано на рис.3. Он содержит фиксированную часть (биты 7...4) и изменяемую часть (биты 3...1). Бит 0, как всегда, несет в себе признак «R/W» (чтение/запись).

Рисунок 3. Slave-адрес микросхемы

Второй байт, следующий за slave-адресом, носит название байта контроля и управления. Этот байт конфигурирует микросхему под задачи пользователя. Во-первых, с его помощью можно включить аналоговый выход или отключить его. Во-вторых, возможно настро-ить аналоговые входы как в прямом, так и в дифференциальном включении. В-третьих, возможна установка (двумя битами) номера канала A/D, в котором будет происходить преобразование. Если ус-тановлен флаг автоинкремента, после каждого A/D преобразования номер входного канала будет увеличиваться на единицу. Режим ав-тоинкремента наиболее рационально использовать совместно с внут-ренним генератором, поскольку в таком режиме он будет работать непрерывно. Как сказано в документации, задержка пуска генератора при переключении каналов ведет к ошибкам преобразования данных. Рекомендуется также отключать аналоговый выход (переводить его в Z-состояние), если он не используется. Эта мера позволит сократить ток потребления микросхемы. На рис. 4 показаны возможные со-стояния байта контроля и управления.

Рисунок 4. Со-стояния байта контроля и управления

D/A преобразование

Третий байт, который должна получать микросхема PCF8591, - это байт данных для цифроаналогового преобразователя. Естественно, в этом случае в байте контроля и управления (рис. 4) должен быть активизирован аналоговый выход.

Физически D/A преобразователь состоит из резисторной матрицы, показанной на рис. 5. Точки соединения резисторов образуют ответвления, которые с помощью переключателей связываются с выходной линией. Управляет схемой декодер ответвлений. Выходное напряжение (L)AC out) подается затем на усилитель с автоматаческой балансировкой нуля (auto-zeroed unity gain amplifier). Этот усилитель может быть либо включен (через байт контроля и управления), либо переведен в высокоимпедансное (2) состояние выхода.

Рисунок 5. D/A преобразователь

Важно отметить, что D/A преобразователь используется также в процедуре A/D преобразования по методу последовательного приближения. Данный метод подробно описан в литературе, и возвращаться к нему в рамках этой книги нет смысла.

Рисунок 6. Процедура D/A преобразования

Процедура D/A преобразования показана на рис. 6. Любая точка на графике в диапазоне 00h...FFh может быть определена по формуле:

где VA0UT - выходное напряжение D/A преобразователя; VREF - опорное напряжение; VAGND - потенциал аналоговой «земли»; D - соответствующий разряд байта данных.

Обратите внимание также на рис. 7. Возможна работа с микросхемой посредством передачи цепочки байтов данных, следующих один за другим. Уровень напряжения, соответствующий заданному, появляется на выходе в момент выдачи сигнала АСК. В момент выдачи сигнала АСК, подтверждающего прием байта контроля и управления (рис. 4) на выходе микросхемы, появляются данные, содержащиеся в регистре DAC с момента окончания предыдущего цикла работы микросхемы.

Рисунок 7.

Чтобы выполнить A/D преобразование, вначале нужно передать байт контроля и управления с признаком R/W = 0. Затем осуществить считывание данных согласно рис. 8.

Рисунок 10. Дифференциальный режим измерения

Чтобы обеспечить стабильность A/D и D/A преобразований, необходим специальный источник опорного напряжения, подключаемый к выводам Vref и AGND микросхемы. Встроенный генератор не-обходим для обеспечения цикла преобразования A/D и для корректировки буферного усилителя с автоматической подстройкой нуля.

Чтобы задействовать внутренний генератор, вывод ЕХТ должен быть замкнут к Vss. Тогда на выводе OSC появится сигнал частоты преобразования, который можно проконтролировать. Если вывод ЕХТ подключить к VDD, внугренний генератор перейдет в высокоимпедансное состояние и на вывод OSC можно подавать сигнал от внешнего генератора.

Литература:
Б. Ю. Семенов, «ШИНА I2C В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ»



Загрузка...