Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Предложите способ борьбы с дифф нелинейностями АЦП
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Kovrov
обычно я делаю калибровочную таблицу на 32 замера, потом все хозяйство апроксимирую
но че то надоела мне эта кусочная апроксимация?
что скажете коллеги?
может по коэфф усиления скажем точках 3х?
не мало?
GxOST
Кусочная аппроксимация - это когда на каждый кусок своя функция подбирается? Ну есть ещё сплайн-интерполяция, там ничего вручную не надо подбирать...

Хотя я сам в derive извращаюсь (т.к. это происходит очень редко) - подбираю функцию под исходный график, а потом derive вычисляет обратную к ней - получается корректирующая функция smile.gif
Stanislav
Цитата(Kovrov @ Feb 9 2006, 20:04) *
обычно я делаю калибровочную таблицу на 32 замера, потом все хозяйство апроксимирую
но че то надоела мне эта кусочная апроксимация?
что скажете коллеги?
А АЦП сколько-разрядный? Если больше 5, то компенсацию дифф. нелинейности по 32-м точкам произвести не удастся. С дифф. нелинейностью можно попробовать бороться путем подмешивания в сигнал шума с эфф. значением > ~2 ЕМР и оверсэмплинга с последующим прореживанием. Шум желательно иметь внеполосный, т.е., не перекрывающийся с полезным сигналом в спектральной области..

Количество к-тов для полиномиальной компенсации инт. нелинейности зависит от ее характера для конкретного АЦП и должно определяться индивидуально. Иногда производитель указывает типовую нелинейность АЦП, что является хорошей отправной точкой для его дальнейшего исследования.
Kovrov
Цитата(GxOST @ Feb 9 2006, 20:38) *
Ну есть ещё сплайн-интерполяция, там ничего вручную не надо подбирать...

это что то из области кубические сплайны? если не ишибаюсь?
можешь напомнить что и как? или ссылочку?

Цитата(Stanislav @ Feb 9 2006, 23:32) *
Количество к-тов для полиномиальной компенсации инт. нелинейности зависит от ее характера для конкретного АЦП и должно определяться индивидуально. Иногда производитель указывает типовую нелинейность АЦП, что является хорошей отправной точкой для его дальнейшего исследования.

все это несколько сложно организовать для моих условиях
а насчет нелинейности у авр если не ошибаюсь +- 2 LSB объявили, а у меня почему то насчиталось уже 4-6
ацп как и у всех 10 бит
GxOST
Цитата(Kovrov @ Feb 10 2006, 09:48) *
это что то из области кубические сплайны? если не ишибаюсь?
можешь напомнить что и как? или ссылочку?
Да, это кусочная бикубическая функция, не имеющая разрывов в производной (т.е. гладкая), проходящая через заданные точки. Материалов море, например вот тут есть исходники на Си, а вот это - вроде бы то что надо в данном случае.
Kovrov
СПАСИБО!
это подойдет!!!
Roma_te
Цитата(Kovrov @ Feb 9 2006, 21:04) *
обычно я делаю калибровочную таблицу на 32 замера, потом все хозяйство апроксимирую
но че то надоела мне эта кусочная апроксимация?
что скажете коллеги?
может по коэфф усиления скажем точках 3х?
не мало?

А можно полюбопытствовать, каким образом Вы формируете 32 калибровочных напряжения, и оценивали ли Вы как их погрешность влияет на погрешность измерения.
Kovrov
с помощью прецизионного калиброванного цапа
Roma_te
Цитата(Kovrov @ Feb 10 2006, 17:35) *
с помощью прецизионного калиброванного цапа

А погрешность? Неужели Ваш ЦАП в сотни раз точнее чем нелинейность АЦП, который Вы хотите корректировать. Ведь погрешность ЦАП 32 раза входит в результат преобразования после коррекции.
Kovrov
почему в сотни то? +- 0,5 lsb 14 bit (цап) против 2lsb 10bit (ацп)- хотя 2мя лсб у меня и не пахло все было страшнее
для 10 бит более чем достаточно
Stanislav
Цитата(Kovrov @ Feb 10 2006, 09:48) *
...а насчет нелинейности у авр если не ошибаюсь +- 2 LSB объявили, а у меня почему то насчиталось уже 4-6
ацп как и у всех 10 бит
Нелинейность может возрасти, если использовать встроенный дифф. усилитель. Особенно это заметно на нижнем краю диапазона, если референс меньше AVCC, и на обоих краях диапазона, если референс равен AVCC.

ЗЫ. А как Вы измеряете нелинейность (в смысле методики)?
Kovrov
Цитата(Stanislav @ Feb 10 2006, 17:18) *
диапазона, если референс меньше AVCC, и на обоих краях диапазона, если референс равен AVCC.

ЗЫ. А как Вы измеряете нелинейность (в смысле методики)?

а вот это и есть самый больной вопрос..
и честно говоря я на нем только в самом начале останавливался
а метод простой с помощью самопального калибратора - вытаскивал все 1024 еденицы ацп и сопоставлял с калиброванными значениями в калибраторе.
потом честно говоря это все так надоело.....
это и навело на мысль о 32 значениях !!


а вообще, вы только не смейтесь, мне нужна точность в интервале от 0в до 320в до целого числа...
но в качестве исследования проводил вот описаную выще методику правда это было 2.5 года назад
Roma_te
Цитата(Kovrov @ Feb 10 2006, 18:18) *
почему в сотни то? +- 0,5 lsb 14 bit (цап) против 2lsb 10bit (ацп)- хотя 2мя лсб у меня и не пахло все было страшнее
для 10 бит более чем достаточно
Не достаточно поскольку после 32-ух измерений, за счет накопления погрешности ЦАП, его точность будет на уровне 9-ти бит. А если учесть и случайную погрешность АЦП, то такой метод приносит больше вреда чем пользы. Тоесть погрешность после коррекции будет не меньше чем до нее (а может и больше, надо считать).
Kovrov
а почему накопления погрешности?
у меня цап тоже калиброван уже на серьезной аппаратуре
и по 256 значениям..
а что вы можете предложить в свою очередь?
Roma_te
Цитата(Kovrov @ Feb 10 2006, 19:06) *
а почему накопления погрешности?
у меня цап тоже калиброван уже на серьезной аппаратуре
и по 256 значениям..
а что вы можете предложить в свою очередь?

Для использования встроенного АЦП (нелинейность 4-6 lsb при разрешении 10 бит) хватит 2 или 3 точки калибровки (по 50...100 измерений в каждой точке и усреднение) и апроксимация кривой 2-го порядка по методу наименьших квадратов. В этом случае, возможно, получится нелинейность на уровне +/- 2 lsb. Точнее - врядли возможно изза влияния дискретизации.
Или второй вариант - подключить внешний АЦП на 12 разрядов. Его ресурсов должно хватить с избытком.
Kovrov
как вы думаете выбирать эти 2-3 точки?
defunct
Я прошу прощения, а где вы прочитали о INL = 2LSB? Потому что перечитывая даташит наткнулся вот на что:

Цитата
Absolute Accuracy: The maximum deviation of an actual (unadjusted) transition
compared to an ideal transition for any code. This is the compound effect of Offset,
Gain Error, Differential Error, Non-linearity, and Quantization Error. Ideal value: ±0.5
LSB.


PS: для вашей задачи (0..320В с точностью до целого), возможно подойдет Low-pass filter 1-го порядка + усреднение нескольких сделанных подряд замеров.
Roma_te
Цитата(Kovrov @ Feb 11 2006, 12:26) *
как вы думаете выбирать эти 2-3 точки?

Если 2 точки то 1/3 и 2/3 от Еref
Если 3 - то 1/4, 1/2 и 3/4 от Еref.
Kovrov
Цитата(defunct @ Feb 11 2006, 11:51) *
PS: для вашей задачи (0..320В с точностью до целого), возможно подойдет Low-pass filter 1-го порядка + усреднение нескольких сделанных подряд замеров.

у меня усреднение проводиться 16*64 раз
+ усреднение (конденсатор в обратной связи ОУ)
фильтр первого порядка что имеется в виду? на входе ацп?

тем не менее одной калибровкой не удается обойтись
причем в начале интервала заметно отставание, в конце опережение...
32 точки конечно спасают - но повторюсь, как то лениво..
действительно поробую использовать 3 точки калибровки но не с фиксироваными местами (1/2... 3/4 от реф), а как бы по адаптивному характеру, каждого мк индивидуально (вобщем есть кое какая мысль)
попробую на неделе...
defunct
Цитата(Kovrov @ Feb 11 2006, 17:24) *
у меня усреднение проводиться 16*64 раз
+ усреднение (конденсатор в обратной связи ОУ)
фильтр первого порядка что имеется в виду? на входе ацп?

да ФНЧ на входе АЦП.

Цитата
тем не менее одной калибровкой не удается обойтись
причем в начале интервала заметно отставание, в конце опережение...
32 точки конечно спасают - но повторюсь, как то лениво..

То что Вы говорите весьма странно, INL у Atmel'овских АЦП лежит в пределах 0.5LSB, и на вашей задаче практически не должна сказываться. У меня, аналогичная вашей, задача (0..380В) решается с помощью ФНЧ с полосой среза ~100Гц и калибровочной таблицей из одного! элемента (1/2 Vref).. Усреднение произвожу по 16-ти точкам.. Оцифровываю с наибольшим значением прескейлера.
Kovrov
да INLу атмела 1LSB при номинальной скосрости конверсии..
только INL - это пол беды.
accuracy от 1,5 до 2,5 lsb - в идеале
я калибровку по макс значению давно уже не применяю - не доволен качеством результата!
а скольких знаков у вас калибровочное значение?
defunct
Цитата(Kovrov @ Feb 11 2006, 19:09) *
а скольких знаков у вас калибровочное значение?

сложно сказать (3-4 десятичных знака), используется целочисленная арифметика. 14-ти битное число - коэффициент домножения. При умножении 10-ти разрядного результата АЦП на этот коэффициент - получаю 24х разрядный результат у которого старшие 9 разрядов - это нормированное значение в вольтах от 0V до 511V. В качестве опорного "эталонного" напряжения можно использовать внутренний ИОН (Mux Vbg), но предпочитаю внешний калибровочный ЦАП.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.