AVR. Учебный курс. Делаем АЦП из Аналогового компаратора. Автоматика управления отоплением дома своими руками, ч.3. Входы АЦП

  • 10.05.2019

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

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

На страницах журнала "Радио" неоднократно публиковались конструкции на базе АЦП. Однако в них в основном использовались микросхемы с двоично-десятичным выходным кодом или кодом для семиэлементных индикаторов . Данный подход не удобен для ввода информации в ПК.

В предлагаемом вниманию читателей устройстве использована микросхема КР1107ПВ1, представляющая собой быстродействующий параллельный шестиразрядный АЦП . Она предназначена для преобразования напряжения в интервале -2...0 В в один из потенциальных кодов параллельного считывания: двоичный код (прямой и обратный) и код с дополнением до двух (прямой и обратный). Эта микросхема выбрана потому, что, во-первых, она доступна широкому кругу радиолюбителей и стоит относительно недорого, а во-вторых, имеет высокое быстродействие (максимальная частота преобразования - 20 МГц, время одного преобразования - не более 100 нc).

Принципиальная схема устройства приведена на рис. 1.

За основу взята рекомендуемая схема включения КР1107ПВ1А , которая существенно упрощена без заметного ухудшения точности преобразования. Преобразуемый аналоговый сигнал через гнездо 1 розетки XS1 и резистор R4 поступает на инвертирующий вход ОУ DA1. Подобное включение использовано потому, что чаще приходится оцифровывать напряжение положительной полярности, а микросхема АЦП преобразует напряжение в интервале от 0 до -2 В. С движка подстроечного резистора R1 снимается напряжение смещения нуля. Резисторы R5 и R4 определяют требуемый коэффициент усиления ОУ. Усиленный аналоговый сигнал поступает через резисторы R7- R9 на выводы 10, 13, 15 АЦП.

Работой АЦП DA2 управляют тактовые импульсы, поступающие из ПК (через контакт 8 розетки XS2) на вывод 4. Кодирование производится после прохождения среза тактового импульса, а результат, полученный в процессе преобразования, передается в выходной регистр одновременно с фронтом очередного тактового импульса. Это позволяет фронтам тактового импульса производить следующую выборку, т. е. в тот момент, когда на выходе DA2 присутствует результат n-й выборки, на входе производится (п+2)-я выборка. Цифровой код снимается с выходов D1 - D6 и выводится на розетку XS2.

Необходимо обратить внимание, что обозначение выходов микросхемы противоположно их весу: выход D1 соответствует старшему разряду, a D6 - младшему. Вид кода (прямой, инверсный, дополнительный) на выходах микросхемы определяется уровнями сигналов на входах С1 и С2 микросхемы. Их подключение к шине +5 В соответствует подаче высокого уровня, а к общему проводу - низкого. Требуемый вид кода на выходе микросхемы задают комбинацией уровней сигналов на входах С1 и С2 в соответствии с табл. 1.

АЦП КР1107ПВ1А требует двуполярного питания напряжениями +5 и -6 В. Кроме того, необходимы два образцовых напряжения. Они определяют диапазон оцифровываемых напряжений. В данном случае одно из этих напряжений (Uoбp1) принято равным нулю (вывод 16 микросхемы соединен с общим проводом), а второе (Uoбp2) - равным -2 В, что в соответствии с определяет диапазон входных напряжений АЦП 0...-2 В. Образцовое напряжение -2 В снимается с движка подстроечного резистора R6, включенного в цепь напряжения питания отрицательной полярности. Конденсаторы С1 - С5 служат для устранения помех.

При сборке устройства используют резисторы МЛТ, ОМЛТ, оксидные и керамические конденсаторы любого типа. Подстроечный резистор R1 - также любого типа, R6 - желательно проволочный многооборотный, например, СП5-1В, СП5-14, СП5-15, СП5-2 и т. п. ОУ DA1 - практически любой, способный работать при пониженных напряжениях питания, например, КР140УД7. Для расширения частотного диапазона можно применить операционный усилитель К574УДЗ, у которого частота единичного усиления равна 10 МГц.

Питают устройство от двуполярного стабилизированного источника, обеспечивающего выходные напряжения +5 В при токе 35. ..40 мА и -6 В при токе 200 мА

Перед первым включением АЦП движок резистора R6 устанавливают в среднее положение. Включив питание, измеряют образцовое напряжение на выводе 9 микросхемы DA2 и возможно точнее устанавливают его равным -2 В. Требуемого смещения нуля добиваются подстроечным резистором R1. Контролировать положение нуля можно по выходному цифровому коду или постоянному напряжению на аналоговых входах АЦП (выводы 10, 13, 15 DA2). На этом настройку можно считать законченной.

К ПК АЦП подключают через интерфейс (рис. 2) устанавливаемый в свободный ISA разъем системной платы.

На плате интерфейса собраны четыре порта ввода/вывода с адресами ЗЕ0Н- ЗЕЗН. Элементы DD1.1-DD1.3 и DD2 образуют дешифратор адреса. На их входы поступают сигналы с шины адреса ПК, и если на ней появляется комбинация ЗЕ0Н-ЗЕЗН, на выходе DD2 формируется разрешающее напряжение низкого уровня. Сигналы, определяющие номер порта в адресном пространстве портов, соответствуют двум младшим битам шины адреса и подаются на дешифратор DD4. На него же поступают разрешающие сигналы по шине AEN (это означает, что в данном цикле отсутствует прямой доступ к памяти) и сигналы IOW, IOR, что соответствует записи во внешнее устройство и чтению из него. Сигнал с вывода 15 дешифратора поступает на вход Е шинного формирователя DD7 и разрешает передачу данных из АЦП на шину данных.

Сигнал, появляющийся на выводе 14 дешифратора DD4, служит для тактирования АЦП DA2, на выводе 13 - для сброса триггера DD6.1, а на выводе 12 - для разрешения подачи информации с него на шину данных. Триггер предназначен для синхронизации АЦП с внешним устройством, которое может вырабатывать синхроимпульсы или сигнал о готовности. Синхросигнал от внешнего устройства поступает через контакт 1 розетки XS2 на тактовый вход триггера. Состояние последнего считывается программой. Если обнаруживается высокий уровень на выводе 5 DD6.1, то это значит, что от внешнего устройства поступил импульс синхронизации. Как только состояние триггера прочитано, его необходимо сбросить, чтобы подготовиться к приему следующего тактового импульса.

Несколько слов о назначении портов. Порт с адресом ЗЕ0Н предназначен для чтения данных из АЦП (в битах D0-D5 содержится значение оцифрованного сигнала), с адресом ЗЕ1Н - для подачи тактового импульса на АЦП (при записи в этот порт любого байта происходит запуск преобразования аналогового сигнала в цифровой). Порт ЗЕ2Н служит для сброса триггера синхронизации DD6.1 после прочтения его состояния. Сброс происходит при записи любого байта в этот порт. Наконец, порт ЗЕЗН предназначен для чтения состояния триггера, которое отражается битом 5 байта, прочитанного из этого порта. Триггер нужен для того, чтобы зафиксировать синхроимпульсы малой длительности. Если при чтении из порта ЗЕЗН обнаружен высокий логический уровень на прямом выходе триггера (бит D5=1), то программа возвращает его в исходное состояние, записав в порт ЗЕ2Н любой байт.

Программа для чтения данных из АЦП, написанная на Паскале, приведена в табл. 2.

В качестве основы конструкции удобно использовать неисправную плату расширения для ISA слота. С нее удаляют все "высокие" элементы (конденсаторы, разъемы) и перерезают печатные проводники, идущие к контактным площадкам части, вставляемой в слот (вилка ХР1 на рис. 2). Детали монтируют на небольшой печатной плате, которую закрепляют с помощью стоек на плате расширения. Выводы устройства соединяют с контактами вилки ХР1 короткими отрезками монтажного провода. Назначение контактов ISA слота можно найти в .

В заключение отметим, что в большинстве случаев шести разрядов для представления аналогового сигнала вполне достаточно. Если АЦП с интервалом входных напряжений 0...2 В используется для измерения напряжения 2 В, погрешность не превысит 0,03 В (или 1,5%). При измерении напряжения 0,2 В погрешность возрастет до 15%. Для повышения точности измерений можно использовать АЦП большей разрядности или усилить измеряемое напряжение до значения, близкого к верхнему пределу интервала (например, изменить соотношение сопротивлений резисторов R5 и R4). При номиналах, указанных на схеме (см. рис. 1), устройство оцифровывает входные напряжения в интервале 0...0.5 В и способно работать с бытовым микрофоном.

Если же из соображений точности "оцифровки" слабых сигналов необходима более высокая разрядность, микросхему КР1107ПВ1А можно заменить восьмиразрядным преобразователем К1107ПВ2 (естественно, с учетом различий в "цоколевке" и энергопотреблении).

Литература

  1. Бирюков С. Термометр "Дом - улица". - Радио, 2000, №3, с. 32, 33.
  2. Новаченко И. В., Петухов В. М., Блудов И. П., Юровский А. В. Микросхемы для бытовой радиоаппаратуры. Справочник. - М.: КУбК, 1995.
  3. Данилин Н. С, Улитенко В. П., Крипак А. А. Руководство по поиску неисправностей и ремонту компьютеров IBM PC. - М.: Издательство стандартов, 1992.

Смотрите другие статьи раздела .

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

Введение

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


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

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

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

Типы АЦП

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

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

Наибольшим быстродействием и самой низкой разрядностью обладают АЦП прямого (параллельного) преобразования. Например, АЦП параллельного преобразования 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 В РАДИОТЕХНИЧЕСКИХ КОНСТРУКЦИЯХ»


"Сукисод" или простой USB АЦП на PIC

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

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

Сукисод - это имя моего кота. Мы взяли котенка и назвали Сукиса, полагая, что это кошка. Кошка очень хорошо отзывалась на эту кличку. А чуть позднее выяснилось, что это кот. Так и получился Сукисод. Ну ладно, рассмотрим моё устройство.

Поскреб я у себя в закромах и обнаружил пучок PIC16F1455. Железка мне досталась в качестве сэмпла. Халява конечно, но в DIP корпусе. Решил её использовать - не пропадать же добру. Это микроконтроллер от Microchip Technology с полноскоростным интерфейсом USB 2.0. PIC16F1455 имеет внутренний источник тактовых импульсов, работающий с точностью 0.25%, что необходимо для функционирования порта USB.

В общем судьба её работать с USB. Полистал даташит и сделал такой рисунок платы:

Схему не рисовал, т.к. всё примитивно по рисунку платы. Разъем USB не использовал. Край платы будет разъемом. Толщина текстолита 1,5-2 мм.

Для справки распиновка USB:

Теперь это добро надо как-то прикрутить к компу. Будем использовать старый добрый Delphi. USB подключение обрабатывается через JvHidController библиотеки "Jedi". Скриншот окна приложения

При подключении железка обнаруживается как HID устройство и не требует драйверов. Чуть позднее выложу софт под Android. Отдельное спасибо за поддержку HHIMERA.

Так сложилось, что основной МК с которым я работаю постоянно и на котором делаю подавляющее большинство задач это 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 выкрутить. Ну еще и верхушки заваливаются чуток. Если понизить частоту, то диапазон несколько расширится.

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