Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нелинейность в АЦП.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
k_crimson
Схема подключения состоит из резисторного делителя 5В -> 3.3В (5.1кОм/10кОм). Большая нелинейность наблюдается в нижнем диапазоне - менее 1В, дальше нелинейность поменьше. Что посоветуете, как от нее избавиться?
Заранее спасибо.
AHTOXA
Либо калибровать по нескольким точкам, либо ставить операционник. Ну или накрайняк резисторы побольше раз в стоsmile.gif
k_crimson
Цитата(AHTOXA @ Jun 5 2009, 17:11) *
Либо калибровать по нескольким точкам, либо ставить операционник. Ну или накрайняк резисторы побольше раз в стоsmile.gif

Сейчас как раз пытаюсь калибровать, но думаю это не лучший выход.
Операционник - это интересно... а не знаете где можно найти схему его подключения для АЦП?
На счет резисторов не понял. В даташите на этот проц написано, что максимальное входное сопротивление для АЦП - 40кОм. Если увеличить резисторы, не знаю что и получится smile.gif
AHTOXA
Цитата(k_crimson @ Jun 5 2009, 19:36) *
Сейчас как раз пытаюсь калибровать, но думаю это не лучший выход.
Операционник - это интересно... а не знаете где можно найти схему его подключения для АЦП?


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

Цитата
На счет резисторов не понял. В даташите на этот проц написано, что максимальное входное сопротивление для АЦП - 40кОм. Если увеличить резисторы, не знаю что и получится smile.gif


Я перепутал, надо резисторы поменьше. Суть в том, что входное сопротивление АЦП должно быть много больше выходного сопротивления сигнала. Как-то такsmile.gif
ar__systems
Цитата
Я перепутал, надо резисторы поменьше. Суть в том, что входное сопротивление АЦП должно быть много больше выходного сопротивления сигнала. Как-то так


Резисторы таких размеров вполне приемлимые, главное acquisition time достаточным задать.

Смотрите даташиты. Емкость sampling capacitor там дана, сопротивление вашего делителя, входное сопротивление считаете необходимое время.

АЦП вообще весьма линейные устройства.
Step_ARM
Цитата(ar__systems @ Jun 5 2009, 22:13) *
Резисторы таких размеров вполне приемлимые, главное acquisition time достаточным задать.

Смотрите даташиты. Емкость sampling capacitor там дана, сопротивление вашего делителя, входное сопротивление считаете необходимое время.

АЦП вообще весьма линейные устройства.


Я ставлю 150к на 33к + кондер на 0.1 мкФ и все линейно работает. REF без опорника просто от питания.
Alechek
Цитата(AHTOXA @ Jun 5 2009, 20:08) *
Я думаю, сгодится банальный повторитель. Это когда сигнал подаётся на неинвертирующий вход, а инвертирующий вход соединяется с выходом. Коэффициент усиления получается единица. Перед повторителем ставите свои резисторы.

Слишком сложно такое и дорого. Надо rail-to-rail операционник, вдобавок такой который нормально себя ведет при Ку=1, иначе про измерение малых напряжений можно забыть.
k_crimson
Проверил без делителя - напряжение идет напрямую на ногу контроллера. Та же картина. Приведу код, а то не знаю что еще делать...

инициализация:
// ADC0
PinBlockFuncSelect(PORT0, PIN23, PIN_ALT_FIRST); // настроить как аналоговый вход
PinBlockModeSet(PORT0, PIN23, PIN_NOT_PULL); // выключить подтяжку
pADC->pReg = &AD0DR0;
pADC->Channel = 1;
// ADC1
. . .
// ADC7

PCONP |= 1<<12; // turn on ADC
AD0CR |= 1<<21; // set PDN
AD0INTEN = 0; // disable interrupts
AD0CR |= 0xFF;
AD0CR |= (SYS_GetFpclk(ADC_PCLK_OFFSET)/4500000 - 1) << 8; // 4,5МГц
AD0CR |= ADCR_BURST; // Burst mode

чтение:
#if USE_BURST_MODE // Для Burst режима
while(!(*pADC->pReg & ADDR_DONE)); // Ждем бит DONE для считываемого канала
data = (*pADC->pReg >> 6) & 0x3FF;
AD0GDR;
#else
ADC->AD_CR &= 0xFFFFFF00;
ADC->AD_CR |= pADC->Channel); // change channel
while(Len--)
{
AD0CR |= 1<<24; // start conversion
while(!(AD0GDR & 0x80000000));
data[Len] = (AD0GDR >> 6) & 0x3FF;
}
AD0CR &= 0xF8FFFFFF; // stop ADC now
#endif

Может в коде что не так?
Alechek
На отальные ноги АЦП не приходит случает напряжение более чем Vref?
k_crimson
Цитата(Alechek @ Jun 9 2009, 12:11) *
На отальные ноги АЦП не приходит случает напряжение более чем Vref?

Нет, не приходит. Тоже вот в еррате прочитал такое замечание:
When the input voltage is Vi ≥ Vdd I/O + 0.5 v on each of the following port pins P0.23, P0.24. P0.25, P0.26, P1.30, P1.31, P0.12, and P0.13 configured as general purpose input pin (s)), current must be limited to less than 4 mA by using a series limiting resistor.
Пообрезал все каналы, где была вероятность превышения Vdd(=Vref) - пригоги все те же sad.gif
Altemir
k_crimson
А, может, это не нелинейность, а помехи/шум на эту ногу приходят? Какая длина линии до входа АЦП? Уменьшите до минимума частоту дискретизации АЦП (допустим, 50-100000 выборок/с)
Xenia
Скажите пожалуйста, а что может быть принято за эталонное напряжение? Где его берут?
Делители на сопротивлениях - ерунда, т.к. у резисторов номинал редко выдерживается точнее 1%, а любой АЦП на порядок точнее. А если меня 20-ти и более разрядный АЦП, то как определить на сколько он врет при измерении?
Даже источники опорного напряжения тут не годятся, т.к. несмотря на то, что напряжение они держат неплохо, но сама величина этого напряжения варьируется в пределах 0.1 вольта даже в одной партии.
Измерителные приборы? А за них кто поручится? Ведь даже самый точный вольтметр не потянет на одну миллионную часть шкалы. А вот 20-разрядный АЦП как раз имеет примерно такую величину дискреты.
ЦАПы? Но они и по разрядности уступают АЦПам, и наверняка сами имеют собственные погрешности, превосходящие АЦП, поскольку приготовить высокоточное напряжение технологически сложнее, чем его измерить.
Ситуация оказывается плачевной - АЦП имеют "класс точности" выше, что то напряжение, которые мы можем подать на их вход.

P.S. Такие вопросы возникают у меня из-за того, что все измерительные приборы положено "поверять". Таково формальное требование закона. Вот и любопытно мне, как можно АЦП "поверить", если подойти к делу честно.
fmdost
Так там ещё паять "правильным" припоем надо, и разность нагрева мест пайки и температура деталей учитываетются. Надо поискать в аппнотах у фирм выпускающих многоразрядные АЦП и ЦАП. У бурр брауна была, читал, название непомню.
etoja
У АЦП нелинейность не больше двух младших разрядов.
Вот документация:

Убедитесь в правильности тактовой частоты на АЦП и дожидайтесь окончания преобразования.
k_crimson
Цитата(Xenia @ Jun 9 2009, 22:26) *
Скажите пожалуйста, а что может быть принято за эталонное напряжение? Где его берут?
Делители на сопротивлениях - ерунда, т.к. у резисторов номинал редко выдерживается точнее 1%, а любой АЦП на порядок точнее. А если меня 20-ти и более разрядный АЦП, то как определить на сколько он врет при измерении?

В качестве источника используется mastech hy3010 (30В, 10А) и проверяется еще тестером MY65 той же фирмы. К ним у меня больше доверия, чем к процессорному ацп smile.gif

Цитата(Altemir @ Jun 9 2009, 17:56) *
k_crimson
А, может, это не нелинейность, а помехи/шум на эту ногу приходят? Какая длина линии до входа АЦП? Уменьшите до минимума частоту дискретизации АЦП (допустим, 50-100000 выборок/с)

длина у каждого ~100mm, уменьшал частоту - не помогает.

Еще заметил, что при частоте проца 72МГц напряжение после делителя падает сильнее, чем при 48МГц.

Цитата(etoja @ Jun 10 2009, 11:50) *
У АЦП нелинейность не больше двух младших разрядов.
Вот документация:

Убедитесь в правильности тактовой частоты на АЦП и дожидайтесь окончания преобразования.

Читал я документацию. Окончания преобразования тоже дожидаюсь, в коде, который я выложил, это вроде видно.
xemul
Сравните результаты АЦП с закороткой на делителе и непосредственно на входе АЦП. Если результаты отличаются, значит по измерительной земле у Вас текут лишние токи.
Altemir
Цитата
Скажите пожалуйста, а что может быть принято за эталонное напряжение? Где его берут?

А берут его с калибраторов напряжения. Это приборы такие. Для простых смертных некислых денех стоят. Для тех, кто попроще (к коим и себя отношу) используется в большинстве случаев косвенный метод, что и у k_crimson. Только MY65 бы я не стал столь слепо доверять. Вот Agilent 34410A - совсем другое дело wink.gif Хотя всё от задач зависит. Да, и нормальные ИОНы (MAX6102 на те же 2,5В) не имеют внутри партии разброс в пределах 0,1В, вот 0,01В - поверю. На то они и ИОНы. Можно и с разбросом 0,001В найти, но зачем, когда вопрос ставится в калибровке, а как это делается - я указал выше.
etoja
Цитата(k_crimson @ Jun 10 2009, 16:02) *
В качестве источника используется mastech hy3010 (30В, 10А) и проверяется еще тестером MY65 той же фирмы. К ним у меня больше доверия, чем к процессорному ацп smile.gif



Автор,пиши ещё. Мы все долго смеялись.
Xenia
Цитата(etoja @ Jun 11 2009, 10:24) *
Автор,пиши ещё. Мы все долго смеялись.


Я вот тоже сильно смеялась, вот над этим:
Цитата
января 2009 г. состоялась Коллегия Федерального агентства по техническому регулированию и метрологии, на которой утверждены Государственный первичный специальный эталон единицы электрического напряжения (вольта) в диапазоне 10 - 3х107 Гц (ГЭТ 89-2008)...
При этом для эталона единицы электрического напряжения в сотню раз расширен диапазон измерений, на порядок повышена точность измерений;
Совершенствования и исследования эталонов проведены в Федеральном государственном унитарном предприятии "Всероссийский научно-исследовательский институт метрологии им. Д.И. Менделеева", г. Санкт-Петербург.
http://www.kipis.ru/news/index.php?news=13280
k_crimson
Цитата(etoja @ Jun 11 2009, 10:24) *
Автор,пиши ещё. Мы все долго смеялись.

хммм а что ж смешного? по-моему, все наоборот - очень грустно...
etoja
Вы взяли блок питания из Гонконга с неизвестными точностными характеристиками для проверки АЦП микропроцессора NXP/Филипс
с известными точностными характеристиками и на основании вашей "веры" в поделие из Гонконга упрекаете NXP/Филипс в браке или обмане покупателя. Это стиль начинающего радиолюбителя.
k_crimson
Цитата(etoja @ Jun 15 2009, 19:01) *
Вы взяли блок питания из Гонконга с неизвестными точностными характеристиками для проверки АЦП микропроцессора NXP/Филипс
с известными точностными характеристиками и на основании вашей "веры" в поделие из Гонконга упрекаете NXP/Филипс в браке или обмане покупателя. Это стиль начинающего радиолюбителя.

Поверьте, я не просто так упрекаю NXP/Филипс, я с этим АЦП от вышего любимого NXP провозился очень долго, много чего наэкспериментировал, поэтому вправе не доверять его результатам, но я никгда не упрекал (по крайней мере открытоsmile.gif) его в браке и тем более в обмане покупателя.
etoja
Мы серийно выпускаем ультразвуковое оборудование на LPC2138, в котором два 10-битных АЦП работают синхронно с частотой квантования 370КГц.

Если у вас что-то не получается, то это ваша проблема , а не проблема Филипса.
BORIV
Цитата(Xenia @ Jun 9 2009, 22:26) *
любой АЦП на порядок точнее. А если меня 20-ти и более разрядный АЦП, то как определить на сколько он врет при измерении?
Ведь даже самый точный вольтметр не потянет на одну миллионную часть шкалы. А вот 20-разрядный АЦП как раз имеет примерно такую величину дискреты.
P.S. Такие вопросы возникают у меня из-за того, что все измерительные приборы положено "поверять". Таково формальное требование закона. Вот и любопытно мне, как можно АЦП "поверить", если подойти к делу честно.

Дайте ссылочку на АЦП с точностью с точностью "дискреты".
P.S. А что, измерять в институтах не учат? Слава богу, что я технарь заканчивал.
Petka
Цитата(BORIV @ Jun 16 2009, 16:53) *
Дайте ссылочку на АЦП с точностью с точностью "дискреты".

компаратор laughing.gif
BORIV
Цитата(Petka @ Jun 16 2009, 18:31) *
компаратор laughing.gif

Тогда ссылочку на компаратор именуемый АЦП.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.