Страница 1 из 1
10-битный АЦП на Mega8 врет на 20 отсчетов...
Добавлено: Вт апр 28, 2009 20:33:26
Dantist
Меряю напряжение мегой...
Как референс выставляю внутренние напряжение 2.56V.
В Codevision напряжение на входе АЦП считаю так:
Код: Выделить всё
V = ADCW * (2.56/1024); //ADCW - это 16-битный регистр (собранные воедино ADCH, ADCL)
Результат - всегда на 50 mV меньше, чем есть в реальности.. Проверял 3-я (!) мультиметрами.. :))
В даташите написано, что врать он должен на +/- 0.5 отсчета.. В моем случае - +/- 1.28 mV, а врет солиднее...
АЦП запускаю 3 раза в секунду.. То есть совсем не часто.. Данные снимаю без noise reduction. Почему так - мне их по логике кода надо измерять, будучи внутри прерывания... А noise reduction из прерываний нельзя вызывать..
Для теста мерял напряжение с АЦП с noise reduction - разницы не заметил... Почему так - сложно сказать..
В протеусе показывает +/- правильные цифры, а на практике совсем фигня.... :)) Ну или не совсем фигня, а так.. Маленькие неприятности :)
Может кто сталкивался?.. Если надо - приведу и код.. ПРосто он сейчас груженый сильно, а чтоб показать, надо чисто эту часть "выдрать" :)
Спасибо за ответ!
Добавлено: Вт апр 28, 2009 20:56:27
_PM_
+- 0.5 это интегральная погрешность а не абсолютная.
Посчитайте, на сколько не совпадает Ваше измерение с референсным, а затем учитывайте эту разницу программно. Т.е. если завышает на 3 единицы - вычитайте 3 единицы.
Вся эта процедура по сути калибровка. Вон в обработке изображений с матрицы CCD калибруют программно каждый пиксел и калибруют АЦП с учетом даже температуры!
Так что ваш случай примитивен.
Добавлено: Вт апр 28, 2009 21:01:00
uk8amk
Налицо технологический разброс параметров при изготовлении чипов.
Как вариант решения проблемы:
1)применить внешний более качественный ИОН
2)сдвинуть доп. операционником напряжение на 50mV
Перед измерением для большей достоверности сделать несколько холостых преобразований. Если используется переключение каналов, то после переключения необходимо выждать один-два десятка миллисекунд. Мультиметрам особо не доверяйте, все они врут, особенно китайские.
АЦП с нойз редакшн - есть разница. У меня без него проявлялось в виде хаотично "болтающихся" двух последних разрядов.
>>V = ADCW * (2.56/1024);
Попробуйте ADCW переслать через UART на компьютер и посмотреть что дейтсвительно должно быть до деления. Может быть библа деления немного шалит и округляет результат.
Добавлено: Вт апр 28, 2009 21:03:45
GP1
1. Собственно питание - любой симулятор считает 5В, реально 7805 - +/-10%, что выдаст ошибку до +/-100 единиц.
2. наличие блокировочных конденсаторов и фильтрация AVcc.
При определенных условиях в общей сложности может приводить к погрешности до 300 ед.
Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...
Добавлено: Вт апр 28, 2009 21:14:51
Yellow Tiger
Dantist писал(а):Как референс выставляю внутренние напряжение 2.56V.
А ДШ на мегу8 утверждает, что разброс составляет от 2,3 до 2,7 вольт, то есть, 16%...

Добавлено: Вт апр 28, 2009 21:21:13
Dantist
Ух... Такое написали, что мои 20 единиц - это уже идеал :))) А в мануале так расписано... +/- 0.5 единиц :)))
_PM_ писал(а):+- 0.5 это интегральная погрешность а не абсолютная.
Посчитайте, на сколько не совпадает Ваше измерение с референсным, а затем учитывайте эту разницу программно. Т.е. если завышает на 3 единицы - вычитайте 3 единицы.
Это как вариант.. Но +/- 3 единицы в лоб - это жестоко.. :) 0В он показывает правильно.. :)) И 2.5mV тоже.. Просто, чем ближе к середине диапазона, тем больше погрешность.. Но это сначала нужно подтвердить экспериментом...
Как вариант решения проблемы:
1)применить внешний более качественный ИОН
2)сдвинуть доп. операционником напряжение на 50mV
1. Хочу юзать внутренний АЦП.. Для этого мегу и брал.. :)
2. А "ручная" поправка не катит, как выше написано?..
1. Собственно питание - любой симулятор считает 5В, реально 7805 - +/-10%, что выдаст ошибку до +/-100 единиц.
Даташит на 7805 - "Output voltage tolerances of ±5% over the temperature range" :)
У меня референс не AVcc, а "2.56V internal reference", который "generated from the internal bandgap reference." Мне сложно понять, что имеется ввиду под internal bandgap, но как я могу логически судить - оно не очень зависит от того, питаем мы мегу от 5В или 3В или 5.5В :)) На то оно и референс...
2. наличие блокировочных конденсаторов и фильтрация AVcc.
Поможет ли - не знаю, но на питании стоит конденсатор..
Тут вообще суть проста... Блин, я же не синусы оцифровываю.. Я напряжение меряю... Совсем не быстро.. Юзаю только один вход.. Не переключаюсь между входами...
До UART еще не дошли руки, но если бы были погрешности в делении сильные протеус бы тоже это показывал?... Я выводил и оригинал (ADCW) и посчитанное напряжение, когда проектировал.. Все было ОК...
P.S. я не один такой -
http://osdir.com/ml/hardware.avr.genera ... 00045.html :))) С 50 мВ :)
Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...
Добавлено: Вт апр 28, 2009 21:24:10
Dantist
Yellow Tiger писал(а):Dantist писал(а):Как референс выставляю внутренние напряжение 2.56V.
А ДШ на мегу8 утверждает, что разброс составляет от 2,3 до 2,7 вольт, то есть, 16%... :roll:
Я как референс еще и AVcc брал.. И мерял на выходе 7805 напряжение (5.00 - 5.01) и считал от него.. Та же фигня...
P.S. Я нашел про разброс.. Вы правы... 2.3-2.7. Цирк :)) С крена веселее тогда напряжение брать.. Но шаг будет в 50 mV :))
P.P.S. Или стабилитрон ставить? :))) На 3.3В... Он стабильнее напряжение даст, чем 7805, который питается от 9V батарейки? :)
Добавлено: Вт апр 28, 2009 21:34:52
_PM_
Ааааа

ион кривой
Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...
Добавлено: Вт апр 28, 2009 21:36:54
Yellow Tiger
Dantist писал(а):Или стабилитрон ставить?
Ставь TL431, если попадется 1%-я, совсем хорошо, хотя, мне что-то в последнее время всё 2%-е попадались... Но даже это намного лучше 16% от ИОНа, плюс 2-4LSB от АЦПа. Можно еще оверсэмплинг применить - поднять точность до 12 бит, затем откалибровать - пыли много, зато рублей сто сэкономить удастся (на внешнем АЦП). Цели-то какие?
Вообще, набортный АЦП у меги не для высоких материй, а для простых случаев, нетребовательных. Есть же недорогие 12 битники от Аналоговых Девайсов - если очень нужно мерять
точно, то нечего фигней маяться - ставь АЦП от AD. Цена вопроса - сто-двести рублей.
Добавлено: Вт апр 28, 2009 22:24:27
GP1
Dantist писал(а):...
У меня референс не AVcc, а "2.56V internal reference"
...
AVcc и AVref несколько разные категории.
А стабильность встроенного ион напрямую зависит от питалова аналоговой части.
на практике был реальный случай, когда удалось стабилизировать показания АЦП только подключив LC фильтр состоящий 220 мкГн и 100 мкф +0.1 керамика
Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...
Добавлено: Вт апр 28, 2009 22:53:02
smac
Dantist писал(а):Я как референс еще и AVcc брал.. И мерял на выходе 7805 напряжение (5.00 - 5.01) и считал от него.. Та же фигня...
P.S. Я нашел про разброс.. Вы правы... 2.3-2.7. Цирк

С крена веселее тогда напряжение брать.. Но шаг будет в 50 mV
P.P.S. Или стабилитрон ставить?

На 3.3В... Он стабильнее напряжение даст, чем 7805, который питается от 9V батарейки?

Разброс иона - от микросхемы к микросхеме, т. е. у одной микросхемы напряжение
стабильное, однако его значение лежит в диапазоне 2.3 - 2.7 В, т. е. в Вашем случае наверное программная калибровка "спасет отца русской демократии". При этом напряжение конкретной микросхемы очень слабо зависит от температуры и напряжнеия питания, о чем Вам уже намекали. Если Вам действительно нужны очень точные измерения, то, боюсь от встроенного АЦП меги придется отказаться. По поводу кренок и стабилитронов - бросте, они хуже чем опорник меги, например, напряжение на стабилитроне зависит от тока, протекающего через него, от температуры стабилитрона, в общем все достаточно сложно. Насчет кренки -непонятна какая у нее стабильность, каков разброс во всем диапазоне напряжений питания, думаю, что тоже будет хуже чем внутренний опорник меги с программной калибровкой.
Добавлено: Ср апр 29, 2009 15:40:17
uk8amk
Если нужно считать милливольты, то советую обратить внимание на AD7705. У нас стоит примерно столько же сколько и Atmega8. Если нужен хороший ИОН, то возьмите что-то из линейки REF: REF192, REF193, REF195... Но никогда не используйте в качестве ИОН 7805 если требуются сколько-нибудь точные измерения.
Добавлено: Ср апр 29, 2009 17:58:15
sema
с REF19* есть моментик, стоит дороже меги раза в три

Добавлено: Пт май 08, 2009 22:36:24
Dantist
Всем спасибо за ответы!
Извините, что пропал :) Только сейчас свободное время появилось... :)
Все советы принял к сведению. В серьезных конструкциях буду юзать "проф-АЦП" :)
В нашей глубинке, под названием Киев, AD7705 стоит в 5 раз дороже Меги. :)) REF192 - столько-же, сколько AD7705 :)))
До калибровки меги руки еще не дошли.. :)
Добавлено: Сб май 09, 2009 03:08:27
Vov123
Может проблема в измерительном приборе,чем вы меряете?У меня есть подобный китайский шедевр,стоит 600руб,вроде не очень дешёвый.Врёт однако.Я лично для таких целей использую старенький ламповый вольтметр.
Добавлено: Сб май 09, 2009 11:22:02
Dantist
Мерял 3-мя цифровыми китайскими вольтметрами :)))
Все показывают одно и то-же, но не верить им смысла большого нет, ибо они показывают вполне вменяемые результаты измерений на переменке, на измерении сопротивления, и.т.д..
Я измеряю напряжение аккумуляторов.. Оно у них 1.2 - 1.25В в нормальном состоянии.. (измеряю без нагрузки, через день после полной зарядки)..
Мультиметры показывают точно, а мега врет. :)
** Как откалибрую, отпишу о результатах :)
Добавлено: Пн май 11, 2009 16:15:03
vitalik
Dantist писал(а):...До калибровки меги руки еще не дошли..

Радиоаматор 9/2005год. С.Рюмик.Микроконтроллеры AVR.Ступень 8.
Пример автокалибровки АЦП. (WinAVR+VMLab)