10-битный АЦП на Mega8 врет на 20 отсчетов...

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Dantist
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср мар 25, 2009 21:50:07

10-битный АЦП на Mega8 врет на 20 отсчетов...

Сообщение 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 - разницы не заметил... Почему так - сложно сказать..

В протеусе показывает +/- правильные цифры, а на практике совсем фигня.... :)) Ну или не совсем фигня, а так.. Маленькие неприятности :)

Может кто сталкивался?.. Если надо - приведу и код.. ПРосто он сейчас груженый сильно, а чтоб показать, надо чисто эту часть "выдрать" :)

Спасибо за ответ!
_PM_
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Ср апр 22, 2009 11:07:00

Сообщение _PM_ »

+- 0.5 это интегральная погрешность а не абсолютная.
Посчитайте, на сколько не совпадает Ваше измерение с референсным, а затем учитывайте эту разницу программно. Т.е. если завышает на 3 единицы - вычитайте 3 единицы.

Вся эта процедура по сути калибровка. Вон в обработке изображений с матрицы CCD калибруют программно каждый пиксел и калибруют АЦП с учетом даже температуры!
Так что ваш случай примитивен.
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Налицо технологический разброс параметров при изготовлении чипов.
Как вариант решения проблемы:
1)применить внешний более качественный ИОН
2)сдвинуть доп. операционником напряжение на 50mV

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

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

>>V = ADCW * (2.56/1024);

Попробуйте ADCW переслать через UART на компьютер и посмотреть что дейтсвительно должно быть до деления. Может быть библа деления немного шалит и округляет результат.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

1. Собственно питание - любой симулятор считает 5В, реально 7805 - +/-10%, что выдаст ошибку до +/-100 единиц.
2. наличие блокировочных конденсаторов и фильтрация AVcc.
При определенных условиях в общей сложности может приводить к погрешности до 300 ед.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Yellow Tiger
Сверлит текстолит когтями
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...

Сообщение Yellow Tiger »

Dantist писал(а):Как референс выставляю внутренние напряжение 2.56V.
А ДШ на мегу8 утверждает, что разброс составляет от 2,3 до 2,7 вольт, то есть, 16%... :roll:
Dantist
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср мар 25, 2009 21:50:07

Сообщение 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 мВ :)
Последний раз редактировалось Dantist Вт апр 28, 2009 21:25:38, всего редактировалось 1 раз.
Dantist
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср мар 25, 2009 21:50:07

Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...

Сообщение 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 батарейки? :)
_PM_
Нашел транзистор. Понюхал.
Сообщения: 161
Зарегистрирован: Ср апр 22, 2009 11:07:00

Сообщение _PM_ »

Ааааа :lol: ион кривой
Последний раз редактировалось _PM_ Вт апр 28, 2009 21:42:07, всего редактировалось 1 раз.
Аватара пользователя
Yellow Tiger
Сверлит текстолит когтями
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...

Сообщение Yellow Tiger »

Dantist писал(а):Или стабилитрон ставить?
Ставь TL431, если попадется 1%-я, совсем хорошо, хотя, мне что-то в последнее время всё 2%-е попадались... Но даже это намного лучше 16% от ИОНа, плюс 2-4LSB от АЦПа. Можно еще оверсэмплинг применить - поднять точность до 12 бит, затем откалибровать - пыли много, зато рублей сто сэкономить удастся (на внешнем АЦП). Цели-то какие?
Вообще, набортный АЦП у меги не для высоких материй, а для простых случаев, нетребовательных. Есть же недорогие 12 битники от Аналоговых Девайсов - если очень нужно мерять точно, то нечего фигней маяться - ставь АЦП от AD. Цена вопроса - сто-двести рублей.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Dantist писал(а):...
У меня референс не AVcc, а "2.56V internal reference"
...

AVcc и AVref несколько разные категории.
А стабильность встроенного ион напрямую зависит от питалова аналоговой части.
на практике был реальный случай, когда удалось стабилизировать показания АЦП только подключив LC фильтр состоящий 220 мкГн и 100 мкф +0.1 керамика
Чем дальше, тем больше становлюсь занудой...
Изображение
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...

Сообщение 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 В, т. е. в Вашем случае наверное программная калибровка "спасет отца русской демократии". При этом напряжение конкретной микросхемы очень слабо зависит от температуры и напряжнеия питания, о чем Вам уже намекали. Если Вам действительно нужны очень точные измерения, то, боюсь от встроенного АЦП меги придется отказаться. По поводу кренок и стабилитронов - бросте, они хуже чем опорник меги, например, напряжение на стабилитроне зависит от тока, протекающего через него, от температуры стабилитрона, в общем все достаточно сложно. Насчет кренки -непонятна какая у нее стабильность, каков разброс во всем диапазоне напряжений питания, думаю, что тоже будет хуже чем внутренний опорник меги с программной калибровкой.
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Если нужно считать милливольты, то советую обратить внимание на AD7705. У нас стоит примерно столько же сколько и Atmega8. Если нужен хороший ИОН, то возьмите что-то из линейки REF: REF192, REF193, REF195... Но никогда не используйте в качестве ИОН 7805 если требуются сколько-нибудь точные измерения.
Аватара пользователя
sema
Мудрый кот
Сообщения: 1708
Зарегистрирован: Ср апр 23, 2008 17:44:56
Откуда: Россия, г. Нижний Новгород
Контактная информация:

Сообщение sema »

с REF19* есть моментик, стоит дороже меги раза в три :wink:
абажаю мой KIA CEED [img]http://www.kolobok.us/smiles/madhouse/to_become_senile.gif[/img]
Пресекать нарушения закона мой долг и обязанность как гражданина моей страны
Dantist
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср мар 25, 2009 21:50:07

Сообщение Dantist »

Всем спасибо за ответы!
Извините, что пропал :) Только сейчас свободное время появилось... :)
Все советы принял к сведению. В серьезных конструкциях буду юзать "проф-АЦП" :)
В нашей глубинке, под названием Киев, AD7705 стоит в 5 раз дороже Меги. :)) REF192 - столько-же, сколько AD7705 :)))

До калибровки меги руки еще не дошли.. :)
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Может проблема в измерительном приборе,чем вы меряете?У меня есть подобный китайский шедевр,стоит 600руб,вроде не очень дешёвый.Врёт однако.Я лично для таких целей использую старенький ламповый вольтметр.
Dantist
Первый раз сказал Мяу!
Сообщения: 26
Зарегистрирован: Ср мар 25, 2009 21:50:07

Сообщение Dantist »

Мерял 3-мя цифровыми китайскими вольтметрами :)))
Все показывают одно и то-же, но не верить им смысла большого нет, ибо они показывают вполне вменяемые результаты измерений на переменке, на измерении сопротивления, и.т.д..

Я измеряю напряжение аккумуляторов.. Оно у них 1.2 - 1.25В в нормальном состоянии.. (измеряю без нагрузки, через день после полной зарядки)..

Мультиметры показывают точно, а мега врет. :)
** Как откалибрую, отпишу о результатах :)
Аватара пользователя
vitalik
Родился
Сообщения: 14
Зарегистрирован: Вс апр 26, 2009 20:58:55
Откуда: г.Монте Карло

Сообщение vitalik »

Dantist писал(а):...До калибровки меги руки еще не дошли.. :)


Радиоаматор 9/2005год. С.Рюмик.Микроконтроллеры AVR.Ступень 8.
Пример автокалибровки АЦП. (WinAVR+VMLab)
Вложения
Avr83 Автокалибровка АЦП.zip
Пример автокалибровки АЦП
(60.98 КБ) 373 скачивания
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»