Поиск по сайту:

 


По базе:  

микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Применение > Микроконтроллеров > AVR

реклама

 




Мероприятия:




AVR120: Снятие характеристик и калибровка АЦП микроконтроллеров AVR

Отличительные особенности:

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

Введение

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

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

1. Сведения из теории

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

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

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

Передаточная функция идеального АЦП
Рисунок 1. Передаточная функция идеального АЦП

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

Передаточная функция  3-разрядного совершенного АЦП
Рисунок 2. Передаточная функция 3-разрядного совершенного АЦП

Максимальная погрешность совершенного АЦП составляет ±1/2 интервала дискретизации. Иными словами, максимальная погрешность квантования всегда ±1/2 мл.разр., где мл. разр. - приращение входного напряжения, при котором изменяется значение младшего разряда выходного кода. Реальный АЦП характеризуется другими источниками погрешностей, которые будут рассмотрены далее.

1.2. Диапазоны преобразования

АЦП в микроконтроллерах AVR можно сконфигурировать на несимметричное и на дифференциальное преобразование. Несимметричный режим используется для измерения уровней входных напряжений в одном входном канале, а дифференциальный режим предназначен для измерения разности напряжений между двумя каналами. Независимо от режима преобразования, входные напряжения на любом из каналов должны находиться между GND и AVCC.

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

Упрощенная схема входного каскада АЦП
Рисунок 3. Упрощенная схема входного каскада АЦП

Для задания диапазона преобразования в схеме необходим источник опорного напряжения (Vион), который задает, какому уровню входного напряжения соответствует выходное значение. В соответствии с документацией напряжение Vион должно быть не менее 2,0В для стандартных микроконтроллеров и не менее 1,0В для микроконтроллеров с напряжением питания от 1,8В. Данное распространяется на оба режима преобразования: несимметричный и дифференциальный. Подробности необходимо выяснить в документации.

1.2.1. Несимметричный диапазон преобразования

В несимметричном режиме входной сигнал поступает непосредственно к схеме преобразования (см. рисунок 3а). 10-разрядный АЦП микроконтроллера AVR, таким образом, преобразовывает непрерывные входные напряжения в диапазоне от GND до Vион в дискретные выходные значения от 0 до 1023, соответственно.

1.2.2. Дифференциальный диапазон преобразования

В дифференциальном режиме преобразования два входных канала подключаются к дифференциальному усилителю с опциональным усилительным каскадом. Затем напряжение с выхода усилителя поступает к логике преобразования, как показано на рисунке 3б. В этом случае разности напряжений в диапазоне от -Vион до +Vион соответствуют выходные значения в диапазоне от -512 до +511. Выходное значение представляется в формате двоичного дополнения. Несмотря на возможность образования отрицательного напряжения на выходе дифференциального усилителя входные напряжения должны быть в диапазоне GND…AVCC.

Обратите внимание, что некоторые микроконтроллеры не могут измерить отрицательного приращения, как, например, ATtiny26.

1.3. Необходимость калибровки

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

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

Однако, при использовании дифференциального преобразования ситуация меняется, особенно при использовании внутреннего усилительного каскада с большим усилением. Незначительные отклонения, вызванные особенностями производства микроконтроллеров, умножаются усилительным каскадом и, поэтому, у разных микроконтроллеров могут наблюдаться существенные отличия в результате измерения при прочих равных условиях. Некомпенсированная погрешность может достигать 20 мл. разр. и выше. Данные отклонения могут быть определены для каждого микроконтроллера, а затем компенсированы программно.

Значение 20 мл. разр. на первый взгляд может показаться большим значением, но это не означает, что дифференциальный режим непрактичен в использовании. С помощью простого калибровочного алгоритма возможно достичь точность 1-2 мл.разр.

1.4. Абсолютная погрешность

Абсолютная погрешность - максимальное отклонение между идеальной прямолинейной и реальной передаточными функциями, в т.ч. внутри интервалов квантования. Минимальная абсолютная погрешность, таким образом, равна погрешности квантования 1/2 мл. разр.

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

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

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

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

1.5. Погрешность смещения

Погрешность смещения - отклонение фактической передаточной функции АЦП от прямолинейной передаточной функции идеального АЦП при нулевом входном напряжении.

Когда выходное значение изменяется от 0 к 1, но при этом входное напряжение не достигло уровня 1/2 мл.разр., то говорят, что имеет место погрешность смещения. Если ошибка смещения положительная, то выходное значение будет больше 0, когда входное напряжение приближается к 1/2 мл.разр. снизу. Если ошибка смещения отрицательная, то входное значение будет больше 1/2 мл.разр. при первом изменении выходного кода. Другими словами, если фактическая передаточная функция становится ниже идеальной линии, то погрешность смещения отрицательная и наоборот. Отрицательные и положительные смещения показаны на рисунке 4.

Примеры положительного (а) и отрицательного (б) смещений
Рисунок 4. Примеры положительного (а) и отрицательного (б) смещений

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

1.5.1. Погрешность смещения в несимметричных каналах

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

На рисунке 5а первый переход возникает при уровне 1 мл.разр. При изменении выходного кода с 2 к 3 у совершенного АЦП эквивалентное входное напряжение будет равно 2 1/2 мл. разр. Разница равна +1 1/2 мл. разр. и является погрешностью смещения. Данная разница показана на рисунке размерной линией. Такие же рассуждения применимы и к рисунку 5б. Первое изменение возникает при 2 мл.разр. У совершенного АЦП переход от 0 к 1 возникает при входном напряжении 1/2 мл.разр. Таким образом, погрешность смещения равна разнице: - 1 1/2 мл. разр.

Положительная (а) и отрицательная (б) погрешности смещения в режиме несимметричного преобразования
Рисунок 5. Положительная (а) и отрицательная (б) погрешности смещения в режиме несимметричного преобразования

Процедура измерения может быть формализована в виде блок-схемы (см. рисунок 6).


Рисунок 6. Блок-схема измерения несимметричных погрешностей смещения

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

1.5.2. Погрешность смещения в дифференциальных каналах

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

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

1.6. Передаточная погрешность

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

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

Примеры положительной (а) и отрицательной (б) передаточных погрешностей
Рисунок 7. Примеры положительной (а) и отрицательной (б) передаточных погрешностей

Для измерения передаточной погрешности необходимо увеличивать входное напряжение от 0 до достижения последнего интервала преобразования. Масштабирующий коэффициент для компенсации передаточной погрешности равен отношению идеального выходного значения посредине последнего интервала дискретизации и фактического значения в этой же точке.

На рисунке 7а выходное значение достигло предела еще до достижения максимума входным напряжением. Вертикальная размерная линия показывает середину последнего выходного интервала дискретизации. Идеальное выходное значение для данного входного напряжения равно 5,5, таким образом, масштабирующий коэффициент равен 5,5/7. На рисунке 7б выходное значение достигло только 6 при достижении входным напряжением максимума. В итоге присутствует отрицательное отклонение от фактической передаточной функции. Для этого случая идеальное выходное значение посередине последнего интервала преобразования равно 7,5, а масштабирующий коэффициент 7,5/6. Процедура измерения представлена на рисунке 8.

Блок-схема измерения передаточных погрешностей
Рисунок 8. Блок-схема измерения передаточных погрешностей

1.7. Нелинейность

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


Рисунок 9. Пример нелинейной кривой преобразования АЦП

1.7.1. Дифференциальная нелинейность

Дифференциальная нелинейность (ДНЛ) - максимальное и минимальное отклонения фактической ширины интервала от ширины интервала совершенного АЦП (1 мл. разр.) для всех интервалов дискретизации. Нелинейность приводит к варьированию размеров интервалов дискретизации. Все интервалы должны иметь ширину 1 мл. разр., но некоторые уже или шире.

Для измерения ДНЛ на вход подается пилообразное напряжение и записываются все изменения выходных значений. Ширина интервала определяется как расстояние между двумя переходами и большинство отрицательных и положительных отклонений от 1 мл.разр. используются для определения максимальной и минимальной ДНЛ.

Интегральная нелинейность

Интегральная нелинейность (ИНЛ) - максимальное отклонение по вертикали между фактической и совершенной кривыми преобразования АЦП.

ИНЛ можно интерпретировать как сумму ДНЛ. Например, несколько последовательных отрицательных ДНЛ поднимают фактическую кривую над совершенной, как показано на рисунке 9а. Отрицательные ИНЛ сигнализируют о снижении фактической кривой ниже совершенной. Максимальная и минимальная ИНЛ измеряются с помощью того же пилообразного входного напряжения, что и при измерении ДНЛ. Для этого записываются отклонения посередине каждого интервала преобразования, а затем определяются максимальное и минимальное значения, соответствующие максимальной и минимальной ИНЛ.

Измерения и компенсация

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

Нелинейность не может быть компенсирована с помощью простых вычислений. Для этого необходима либо полиноминальная аппроксимация, либо таблицы преобразования. Однако типичные значения ИНЛ и ДНЛ для 10-разрядных АЦП микроконтроллеров AVR составляют 1/2 мл. разр. и редко влияют на жизнеспособность приложений.

1.8. Влияние температуры, частоты и напряжения питания

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

Точность работы АЦП также связана с его синхронизацией. Рекомендованная максимальная частота синхронизации АЦП ограничивается характеристиками внутреннего ЦАП в схеме преобразования. Для достижения оптимальных характеристик частота синхронизации АЦП не должна превышать 200 кГц. Однако частоты до 1 МГц не приводят к существенному ухудшению разрешающей способности.

Характеристики работы АЦП с частотами синхронизации выше 1МГц не определялись.

1.9. Частотный диапазон и входное сопротивление

В несимметричном режиме работы АЦП частотный диапазон ограничивается частотой синхронизации АЦП. Одно преобразование длиться 13 тактов, поэтому, при максимальной тактовой частоте 1 МГц достигается частота преобразования 77 тысяч преобразований в секунду. Таким образом, в соответствии с теоремой Котельникова частотный диапазон для несимметричного режима преобразования ограничивается частотой 38,5 кГц.

В дифференциальном режиме частотный диапазон ограничивается частотой 4 кГц за счет дифференциального усилителя. Частотные составляющие выше частоты 4 кГц должны быть удалены с помощью внешнего аналогового фильтра, что позволить избежать нелинейностей.

Входное сопротивление по отношению к VCC и GND составляет 100 МОм (типичное значение). Совместно с внутренним сопротивлением источника сигнала образуется делитель напряжения. Таким образом, для получения корректного результата преобразования необходимо, чтобы внутреннее сопротивление источника сигнала было намного меньше входного сопротивления АЦП.

2. Реализация

На рисунке 10 показан пример установки для выполнения калибровки.

Установка для калибровки в производственных условиях
Рисунок 10. Установка для калибровки в производственных условиях

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

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

2.1. Арифметика с фиксированной точкой для коррекции погрешности смещения и передаточной погрешности

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

Поскольку коэффициент компенсации передаточной погрешности никогда не превысит значения 2, то можно отмасштабировать с коэффициентом 214, чтобы точно вписаться в 16-разрядное слово. Иными словами, масштабирующий коэффициент может быть представлен двумя байтами как число с фиксированной точкой и знаком 1:14.

Ниже приведено выражение для одновременной компенсации передаточной погрешности и погрешности смещения.

Фактическое_значение = (Код_АЦП - Смещение) · Км, (1)

где Км- масштабирующий коэффициент передаточной погрешности.

При преобразовании результата вычисления к целочисленной форме он всегда округляется к наибольшему целочисленному значению, которое меньше или равно результату. Чтобы добиться корректного округления к ближайшему целому перед преобразованием необходимо добавить 0.5. Прибавление 0.5, масштабирование на 214 и смещение представим в виде выражения (2).

214· Фактическое_значение = 214 · Код_АЦП · Км + 214 · 0,5 - 214 · Смещение · Км (2)

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

Введя две отмасштабированные константы factor и correction, которые используются в программе, получаем итоговые выражения:

factor = 214 · Км,

correction = 214 · (0,5 - Смещение · Км), (3)

216 · Фактическое_значение = 22 · (Код_АЦП · factor + correction).

С помощью данного метода калибровочная программа вычисляет константы factor и correction, а затем сохраняет их в ЭСППЗУ. Время выполнения программы компенсации составляют одно целочисленное умножение, одно сложение и два сдвига влево. При использовании компилятора Си компании IAR C с максимальной оптимизацией быстродействия на эти действия потребуется 42 такта ЦПУ.

2.1.1. Калибровка

Разработка тестового блока не рассматривается в рамках данных "Рекомендаций…". Однако блок-схема калибровки с помощью микроконтроллера AVR приведена. В ней подразумевается использование в тестовом блоке внешнего ЦАП и работа по собственному калибровочному алгоритму.

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

Программа должна быть реализована, как показано на рисунке 11.

Блок-схема калибровочной программы
Рисунок 11. Блок-схема калибровочной программы

Данная часть программного обеспечения записывается в AVR до начала калибровки, а по ее завершении заменяется программным кодом фактического приложения. Еще раз необходимо обратить внимание, что программирование конфигурационного бита EESAVE позволит заблокировать действие команды стирания всей памяти относительно ЭСППЗУ во время перепрограммирования флэш-памяти и, таким образом, калибровочные данные будут незатронутыми.

2.1.2. Компенсация

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

Блок-схема программы компенсации погрешности смещения и передаточной погрешности
Рисунок 12. Блок-схема программы компенсации погрешности смещения и передаточной погрешности

Вычисления на рисунке 12 могут быть реализованы с помощью следующей Си-функции или альтернативно с помощью макроса:

signed int adc_compensate( signed int adcvalue,
signed int factor,
signed long correction )
{
return (((((signed long)adcvalue*factor)+correction)<<2)>>16);
}

Константы хранятся в ЭСППЗУ и перед началом работы должны быть скопированы в ОЗУ для ускорения доступа к ним.

Использованная литература:

  1. Robert Gordon - A Calculated Look at Fixed-Point Arithmetic (Прагматичный взгляд на арифметику с фиксированной точкой)
    http://www.embedded.com/98/9804fe2.htm
  2. Рекомендации по применению AVR210: Использование аппаратного умножающего устройства микроконтроллеров AVR
    http://www.atmel.com/dyn/resources/prod_documents/DOC1631.PDF

Документация:

  99 Kb Engl Исходный файл

Автомобили, новости тюнинга




 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru
©1998-2023 Рынок Микроэлектроники