Заголовок сообщения: 10-битный АЦП на Mega8 врет на 20 отсчетов...
Добавлено: Вт апр 28, 2009 20:33:26
Первый раз сказал Мяу!
Зарегистрирован: Ср мар 25, 2009 21:50:07 Сообщений: 26
Рейтинг сообщения:0
Меряю напряжение мегой...
Как референс выставляю внутренние напряжение 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 - разницы не заметил... Почему так - сложно сказать..
В протеусе показывает +/- правильные цифры, а на практике совсем фигня.... :)) Ну или не совсем фигня, а так.. Маленькие неприятности :)
Может кто сталкивался?.. Если надо - приведу и код.. ПРосто он сейчас груженый сильно, а чтоб показать, надо чисто эту часть "выдрать" :)
+- 0.5 это интегральная погрешность а не абсолютная.
Посчитайте, на сколько не совпадает Ваше измерение с референсным, а затем учитывайте эту разницу программно. Т.е. если завышает на 3 единицы - вычитайте 3 единицы.
Вся эта процедура по сути калибровка. Вон в обработке изображений с матрицы CCD калибруют программно каждый пиксел и калибруют АЦП с учетом даже температуры!
Так что ваш случай примитивен.
Налицо технологический разброс параметров при изготовлении чипов.
Как вариант решения проблемы:
1)применить внешний более качественный ИОН
2)сдвинуть доп. операционником напряжение на 50mV
Перед измерением для большей достоверности сделать несколько холостых преобразований. Если используется переключение каналов, то после переключения необходимо выждать один-два десятка миллисекунд. Мультиметрам особо не доверяйте, все они врут, особенно китайские.
АЦП с нойз редакшн - есть разница. У меня без него проявлялось в виде хаотично "болтающихся" двух последних разрядов.
>>V = ADCW * (2.56/1024);
Попробуйте ADCW переслать через UART на компьютер и посмотреть что дейтсвительно должно быть до деления. Может быть библа деления немного шалит и округляет результат.
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
1. Собственно питание - любой симулятор считает 5В, реально 7805 - +/-10%, что выдаст ошибку до +/-100 единиц.
2. наличие блокировочных конденсаторов и фильтрация AVcc.
При определенных условиях в общей сложности может приводить к погрешности до 300 ед.
_________________ Чем дальше, тем больше становлюсь занудой...
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Зарегистрирован: Ср мар 25, 2009 21:50:07 Сообщений: 26
Рейтинг сообщения:0
Ух... Такое написали, что мои 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) и посчитанное напряжение, когда проектировал.. Все было ОК...
Заголовок сообщения: Re: 10-битный АЦП на Mega8 врет на 20 отсчетов...
Добавлено: Вт апр 28, 2009 21:24:10
Первый раз сказал Мяу!
Зарегистрирован: Ср мар 25, 2009 21:50:07 Сообщений: 26
Рейтинг сообщения:0
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 батарейки? :)
Ставь TL431, если попадется 1%-я, совсем хорошо, хотя, мне что-то в последнее время всё 2%-е попадались... Но даже это намного лучше 16% от ИОНа, плюс 2-4LSB от АЦПа. Можно еще оверсэмплинг применить - поднять точность до 12 бит, затем откалибровать - пыли много, зато рублей сто сэкономить удастся (на внешнем АЦП). Цели-то какие?
Вообще, набортный АЦП у меги не для высоких материй, а для простых случаев, нетребовательных. Есть же недорогие 12 битники от Аналоговых Девайсов - если очень нужно мерять точно, то нечего фигней маяться - ставь АЦП от AD. Цена вопроса - сто-двести рублей.
Карма: 2
Рейтинг сообщений: 11
Зарегистрирован: Пт май 23, 2008 19:32:22 Сообщений: 2401 Откуда: Россия, Волгоград
Рейтинг сообщения:0 Медали: 1
Dantist писал(а):
... У меня референс не AVcc, а "2.56V internal reference" ...
AVcc и AVref несколько разные категории.
А стабильность встроенного ион напрямую зависит от питалова аналоговой части.
на практике был реальный случай, когда удалось стабилизировать показания АЦП только подключив LC фильтр состоящий 220 мкГн и 100 мкф +0.1 керамика
_________________ Чем дальше, тем больше становлюсь занудой...
Я как референс еще и 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 В, т. е. в Вашем случае наверное программная калибровка "спасет отца русской демократии". При этом напряжение конкретной микросхемы очень слабо зависит от температуры и напряжнеия питания, о чем Вам уже намекали. Если Вам действительно нужны очень точные измерения, то, боюсь от встроенного АЦП меги придется отказаться. По поводу кренок и стабилитронов - бросте, они хуже чем опорник меги, например, напряжение на стабилитроне зависит от тока, протекающего через него, от температуры стабилитрона, в общем все достаточно сложно. Насчет кренки -непонятна какая у нее стабильность, каков разброс во всем диапазоне напряжений питания, думаю, что тоже будет хуже чем внутренний опорник меги с программной калибровкой.
Если нужно считать милливольты, то советую обратить внимание на AD7705. У нас стоит примерно столько же сколько и Atmega8. Если нужен хороший ИОН, то возьмите что-то из линейки REF: REF192, REF193, REF195... Но никогда не используйте в качестве ИОН 7805 если требуются сколько-нибудь точные измерения.
Зарегистрирован: Ср мар 25, 2009 21:50:07 Сообщений: 26
Рейтинг сообщения:0
Всем спасибо за ответы!
Извините, что пропал :) Только сейчас свободное время появилось... :)
Все советы принял к сведению. В серьезных конструкциях буду юзать "проф-АЦП" :)
В нашей глубинке, под названием Киев, AD7705 стоит в 5 раз дороже Меги. :)) REF192 - столько-же, сколько AD7705 :)))
Может проблема в измерительном приборе,чем вы меряете?У меня есть подобный китайский шедевр,стоит 600руб,вроде не очень дешёвый.Врёт однако.Я лично для таких целей использую старенький ламповый вольтметр.
Зарегистрирован: Ср мар 25, 2009 21:50:07 Сообщений: 26
Рейтинг сообщения:0
Мерял 3-мя цифровыми китайскими вольтметрами :)))
Все показывают одно и то-же, но не верить им смысла большого нет, ибо они показывают вполне вменяемые результаты измерений на переменке, на измерении сопротивления, и.т.д..
Я измеряю напряжение аккумуляторов.. Оно у них 1.2 - 1.25В в нормальном состоянии.. (измеряю без нагрузки, через день после полной зарядки)..
Мультиметры показывают точно, а мега врет. :)
** Как откалибрую, отпишу о результатах :)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения