AVR121: Повышение разрешения АЦП с помощью оверсемплинга ч1

23/12/2012 - 17:31
   Микроконтроллеры AVR фирмы Atmel имеют в своем составе 10-ти разрядный аналого-цифровой преобразователь (АЦП). В большинстве случаев такой разрядности достаточно, но иногда возникают ситуации, когда требуется более высокая точность. 
   Существуют специальные методы обработки сигналов, позволяющие увеличить разрешение измерений. С помощью метода называемого “оверсемплинг и децимация” данная задача может быть решена без использования внешнего АЦП. 
   В этом руководстве рассмотрена теория и практическое применение данного метода.

Рассматриваемые вопросы:

- повышение разрешения с помощью оверсемплинга
- усреднение и децимация 
- подавление шума с помощью усреднения 

1 Введение

   Микроконтроллеры AVR фирмы Atmel имеют в своем составе 10-ти разрядный аналого-цифровой преобразователь (АЦП). В большинстве случаев такой разрядности достаточно, но иногда возникают ситуации, когда требуется более высокая точность. 
   Существуют специальные методы обработки сигналов, позволяющие увеличить разрешение измерений. С помощью метода называемого “оверсемплинг и децимация” данная задача может быть решена без использования внешнего АЦП. 
   В этом руководстве рассмотрена теория и практическое применение данного метода.
 
Рисунок 1-1. Повышение разрешения

ацп с различной разрядностью  

2 Теория работы  

   Перед чтением этого руководства мы бы рекомендовали вам ознакомиться с руководством «AVR120: Калибровка АЦП» и с разделом «АЦП» из технического описания на  микроконтроллер AVR.
    Изложенные ниже примеры и цифры рассчитаны для несимметричного входа в режиме непрерывного преобразования. Режим пониженного шума (ADC Noise Reduction Mode) не используется. Конечно, этот метод будет работать и в других режимах, но цифры для описанных примеров будут отличаться.
   Опорное напряжение АЦП и его разрешение определяют шаг, с которым АЦП выполняет преобразование входного сигнала. У микроконтроллеров AVR в качестве опорного напряжения может выступать напряжение питания AVCC, внутреннее опорное напряжение 2.56 В/1.1 В или напряжение на выводе AREF. 
   Небольшое опорное напряжение обеспечивает высокую точность, но сужает динамический диапазон входного сигнала. Например, при опорном напряжении равном 2.56 В, точность результата преобразования будет приблизительно 2.5 мВ, а наибольшее входное напряжение, которое можно будет померить АЦП -  2.56В.
   В качестве альтернативы можно было бы рассмотреть использование АЦП с секцией усиления. Это дает возможность измерять аналоговый сигнал с большей точностью, за счет динамического диапазона АЦП. Если это неприемлемо, то для улучшения разрешения АЦП можно использовать оверсемплинг. Хотя применение этого метода ограничивается характеристиками АЦП. 
   Важно понимать, что оверсемплинг и децимация уменьшают ошибки квантования АЦП, но не компенсирует его интегральную нелинейность. 

2.1 Частота дискретизации 

   Теорема Найквиста-Шеннона гласит, что аналоговый сигнал,  имеющий ограниченный спектр, может быть восстановлен однозначно и без потерь по своим дискретным отсчётам, если частота выборки (дискретизации) превышает максимальную частоту спектра  сигнала более чем в 2 раза. Минимальная требуемая частота дискретизации  называется частотой Найквиста.
 
Формула 2-1. Частота Найквиста

частота найквиста
 
Где fsignal – это наивысшая частота входного сигнала. 
 
   Дискретизация сигнала с частотой выше частоты Найквиста называется оверсемплингом или дискретизацией с запасом по частоте. На практике обычно используют максимально возможную частоту дискретизации, чтобы получить как можно более точное представление измеряемого сигнала во временной области. Поэтому в большинстве случаев оцифрованный входной сигнал уже дискретизирован с запасом.
 
   У микроконтроллеров AVR частота дискретизации АЦП определяется внутренней тактовой частотой и коэффициентом предделителя. Наименьший коэффициент дает наибольшую частоту дискретизации. Однако в определенный момент высокая тактовая частота АЦП будет уменьшать точность преобразования, то есть эффективное число разрядов (the Effective Number Of Bits ,ENOB) АЦП будет снижаться. Все АЦП имеют ограниченную полосу пропускания и АЦП микроконтроллеров AVR не исключение. Согласно техническому описанию, чтобы получить 10-ти разрядное разрешение, тактовая частота АЦП должна быть в диапазоне (50 – 200) кГц. Когда тактовая частота АЦП равна 200 кГц, частота дискретизации сигнала составляет ~ 15 kSPS (15 тысяч выборок в секунду), что ограничивает частоту входного сигнала до ~7.5 кГц. Тактовая частота АЦП микроконтроллеров AVR может иметь значение до 1 МГц, однако это будет снижать точность преобразований. 

3 Теория

3.1 Оверсемплинг и децимация

   Теория, стоящая за “Оверсемплингом и децимацией” достаточно сложная, но использование этого метода предельно простое. Нужно получить большее число выборок сигнала, увеличив частоту его дискретизации. Для каждого дополнительного бита разрешения требуется увеличение частоты дискретизации в 4 раза. Данное соотношение выражается формулой 3-1. Большее количество выборок нужно для лучшего представления входного аналогового сигнала при усреднении. 
 
Формула 3-1. Частота оверсемплинга

частота оверсемплинга 

3.2 Шум

   Чтобы этот метод работал правильно, интересующие нас сигнальные компоненты не должны меняться во время преобразования. Однако другой критерий для успешного повышения разрешения заключается в том, что выборки входного сигнала должны отличаться друг от друга. Это может выглядеть как противоречие, но в данном случае речь идет об изменении нескольких младших значащих разрядов (МЗР). Эти изменения следует рассматривать как шумовые составляющие сигнала. При дискретизации сигнала с запасом по частоте, он должен содержать шум, дающий небольшие вариации в сигнале. Ошибка квантования АЦП составляет, по крайней мере, 0.5 МЗР. Таким образом, шумовая амплитуда должна превышать 0.5 МЗР, чтобы «перебивать» его. Шум амплитудой 1-2 МЗР даже лучше, поскольку это будет гарантировать, что несколько выборок сигнала в итоге не будут иметь одинаковое значение.        
                                                                                                                   
   При использовании данного метода шум должен иметь следующие характеристики:
- интересующие нас сигнальные компоненты не должны меняться значительно в течение преобразования,
- сигнал должен содержать шум,
- амплитуда шума должна быть не менее 1 МЗР. 
 
   Обычно в сигнале присутствует некоторый шум во время преобразования. Это может быть тепловой шум, шум от ядра микроконтроллера, переключения портов ввода вывода, шум источника питания и так далее. В большинстве случаев этого шума будет достаточно для работоспособности рассматриваемого метода. В отдельных случаях потребуется добавить к входному сигналу некоторый искусственный шум. Этот метод известен как дизеринг. Рисунок 3-1 (а) показывает проблемы измерения сигнала, значение которого  находится между двумя шагами квантования. Усреднение четырех выборок сигнала не помогло бы, поскольку у результата будет такое же низкое значение. Это может только ослабить флуктуации сигнала. Рисунок 3-1 (b) показывает, что добавляя к сигналу искусственный шум, младшие значащие разряды результата преобразования будут переключаться. Сложение четырех выборок этого сигнала уменьшает шаги квантования вдвое, что дает лучшее представление входного сигнала, как показано на рисунке 3-1 (c). “Виртуальное разрешение” АЦП увеличится с 10-ти до 11-ти. Этот метод известен как  децимация и будет объяснен дальше в разделе 3-3. 
 
Рисунок 3-1. Увеличение разрешения с 10-ти до 11-ти бит

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

3.3 Усреднение

   Обычный смысл усреднения заключается в сложении m выборок сигнала и делении полученного результата на m. Это так называемое нормальное усреднение. Усреднение данных, полученных с АЦП, эквивалентно низкочастотному фильтру и позволяет ослабить флуктуации сигнала или шум, и сгладить пики входного сигнала. Очень часто для этого также используется метод скользящего среднего. Он заключается в усреднении выборок сигнала внутри циклической очереди. В этом случае каждая усредненная выборка сигнала будет представлена несколькими самыми последними выборками. Что будет давать небольшую временную задержку. Усреднение этим методом может быть сделано с или без перекрытия окон. Рисунок 3-2 показывает семь (Av1 – Av7) независимых результатов скользящего среднего без перекрытия. 
 
Рисунок 3-2. Принцип усредняющего среднего
 
скользящее среднее
 
    Важно помнить, что нормальное усреднение не увеличивает разрешение преобразования. Децимация и интерполяция представляют собой усредняющие методы, которые в сочетании с оверсемлингом  увеличивают разрешение. Интерполяцией в цифровой обработке сигналов называют метод, основанный на оверсемплинге и низкочастотной  фильтрации. В этом смысле интерполяция используется для получения новых промежуточных выборок сигнала путем усреднения большого количества выборок. Дополнительные выборки m, полученные с помощью оверсемплинга сигнала, складываются также как при нормальном усреднении, но результат не делится на m. Вместо этого он сдвигается вправо на n, где  n – количество  дополнительных битов разрешения. Однократный сдвиг двоичного числа вправо эквивалентен делению на 2. Как видно из формулы 3-1 повышение разрешения с 10 до 12 бит требует суммирования 16-ти 10-ти разрядных значений. Результат этой суммы будет 14-ти разрядным, где последние два бита не содержат ценной информации. Чтобы вернуться обратно к 12-ти битам, нужно масштабировать результат. Масштабирующий коэффициент sf, определяемый формулой 3-2, это коэффициент на который нужно делить сумму из 4^n выборок для получения правильного результата. Где n – требуемое количество дополнительных разрядов разрешения. 
  
Формула 3-2

 

3.4 В каких случаях “Оверсемплинг и децимация” будут работать? 

   Обычно сигнал содержит некоторый шум. Этот шум, часто имеющий характеристику Гауссовского шума, более известен как белый шум или тепловой. Он отличается широкой полосой частот и равномерным распределением энергии по всей полосе. В этих случаях метод “оверсемплинга и децимации” будет работать, если амплитуда шума достаточна для переключения МЗР преобразования АЦП.
   В других случаях может понадобиться добавить к входному сигналу искусственный шум. Этот метод называют дизерингом. Форма этого шума должна соответствовать Гауссовскому шуму, но сигнал периодической формы тоже будет работать. Какой частоты должен быть этот шумовой сигнал, зависит от частоты дискретизации. Эмпирическое правило гласит: “При сложении m выборок, период шумового сигнала не должен превышать периода m выборок”. Амплитуда шума должна быть не менее 1 МЗР. При сложении искусственного шума с входным сигналом важно помнить, что среднее значение шума равно нулю; недостаточно высокий оверсемплинг (недостаточный запас по частоте дискретизации) может вызвать смещение, как показано  на рисунке 3-3.
 
Рисунок 3-3.  Смещения, вызванные недостаточной частотой дискретизации
 
смещения вызванные недостаточной частотой дискретизации
 
   Пунктирная линия иллюстрирует среднее значение пилообразного сигнала. Рисунок 3-3 (а) представляет случай отрицательного смещения. На рисунке 3-3 (b) показан случай положительного смещения. И на рисунке 3-3 (с) частота дискретизации выбрана подходящей и смещения нет. Чтобы создать искусственный шум, можно использовать один из счетчиков микроконтроллеров AVR. Так как счетчик и АЦП используют один и тот же источник тактового сигнала, это позволяет синхронизировать шум и частоту дискретизации, чтобы избежать смещения. 


Ссылки

AVR120:Characterization and Calibration of the ADC on an AVR

Comments   

# DOOMSDAY 2012-12-25 09:58
Спасибо за статью. Познавательно и интересно читать теоретически известные приемы ЦОС в такой упрощенной трактовке, да еще с привязкой к насущным задачам. Буду ждать продолжения.
# Pashgan 2012-12-26 15:56
Пожалуйста. До конца недели выложу вторую половину статьи. Быстрее не получается переводить.
# Вовка 2012-12-28 21:27
Вот очень полезный перевод, как я понял. Не смотря на публикации appnotes о интерполяции (и oversampling) всеми производителями контроллеров в журналах и остальных любительских публикациях продолжают "обсасывать" вольтметры постоянного тока с разрешением в три десятичных разряда (999). Я когда прочитал эти рекомендации у атмела и попробовал на практике - материл всех этих "спецов" из журналов изобретающих очередной раз велосипед за гонорар, профессионалы этими техниками пользуются давно и упоминают на этом только "вскользь". Я собирал вольтметр-ампер метр на БП на четыре десятичных разряда (99,99В 9,999А) на меге8 и трёхфазный амперметр RMS (9999А) на меге16 (можно было и на меге8), можно сделать и пять десятичных разрядов, только нечем калибровать. и это всё работало без подачи дополнительного шума, а на естественном шуме во входном сигнале. Так что с практической точки зрения нужная вещь, тем более что в вольтметр просто ставится интерполяция вместо усредняющего фильтра.
# Сергей 2013-04-17 10:33
т. Найквиста на родных просторах обычно называют т. Котельникова.
патриотично)
# Timeon 2013-04-17 20:24
Quoting Сергей:
т. Найквиста на родных просторах обычно называют т. Котельникова.
патриотично)

Наверно потому что Найквист эту теорему не предлогал и не доказывал. А соответственно теорема была предложена и доказана Котельниковым.
# Pashgan 2013-04-18 08:29
Это перевод, а не сочинение. Еще более патриотично то, что все мы используем иностранную элементную базу, софт.. и далее по списку.
# Evgs 2013-06-14 15:59
Котельников вроде первый предложил, но не доказывал. А Найквист смог первым доказать.
# Artem333 2014-05-30 08:51
Совсем даже наоборот. Найквист предложил формулу выведенную эмпирическим путем. То есть, тыкался вслепую и нашел метод. А Котельников создал теорему и подвел под нее доказательную базу. А то, что сделал Найквист, в то время кто только не делал :)
# Pashgan 2015-11-21 17:01
Вибирайте любое - Nyquist–Shannon , Nyquist–Shannon –Kotelnikov, Whittaker–Shann on–Kotelnikov, Whittaker–Nyqui st–Kotelnikov–S hannon.
# AGE 2015-11-19 13:29
Ч.2. - не понимаю, какая связь между референсным (опорным) уровнем и динамическим диапазоном.
# Pashgan 2015-11-21 16:54
Здесь имеется в виду динамический диапазон входного сигнала (не АЦП!), то есть разность между максимальным и минимальным значениями. А максимальное значение входного сигнала как раз и ограничено опорой.
# AGE 2015-11-23 13:06
Дело в том что динамический диапазон это не разность а отношение минимальным и максимальным уровнями, а они не меняются. Поэтому и непонятно, что имеется в виду. (Да, я читал оригинальный аппноут, и там то-же самое :-)
# Pashgan 2015-11-23 21:13
Да. Разница между максимальным и минимальными уровнями сигнала, заданная в виде их отношения и выраженная в дицибелах.
Минимальный уровень - это шум, максимальный - опорное напряжение. Уменьшаем опору - соотношение меняется. Я понимаю это так.
# AGE 2015-11-24 19:49
А я вот нифига не понимаю. Что в разах что в децибелах (логарифмически х разах) - это просто отношение одного к другому (максимума к минимуму), это просто 255 или 1023, ведь тут вроде как не специфицирован уровень шума.
С другой стороны шум всегда есть, и уменьшение уровня опоры, конечно, ведет к уменьшению этого соотношения, но тогда АЦП тут почти ни при чем.
Впрочем, наверно, так и есть как вы сказали.
# Phantom Art 2016-07-18 23:47
Невероятно, но я сам доходил умом до похожих методов. Правда, до использования дизеринга не додумался.

У вас недостаточно прав для комментирования.