Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: АЦП в PIC16F882
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
dinam
Спаял небольшую платку, на ней меряю сопротивление резистора по отношению к образцовому. И получется что АЦП врет на 5 единичек, значение стабильное. Усреднение по 128 отсчетам. Раньше пробовал на PIC16F876A, т.к там вообще не было разницы. На днях спаяю ещё одну платку, может там будет получше. А кто подскажет про регистр ANSEL? В datasheet про него вообще что попало написано. Пробовал его менять и так и сяк разницы не заметил.
rx3apf
Цитата(dinam @ Dec 13 2009, 15:18) *
А кто подскажет про регистр ANSEL? В datasheet про него вообще что попало написано. Пробовал его менять и так и сяк разницы не заметил.

Совершенно определенно написано, что для цифровых входов надо выставить "0" в соответствующих битах ANSEL и ANSELH, иначе всегда будет читаться "0" (по умолчанию там "1", т.е. входы считаются аналоговыми)
dinam
Понятно, а вот как насчет точности? Кто-нибудь может сказать?
bolt
АЦП измеряет не сопротивление, а напряжение. Точность ~5mV
rx3apf
Цитата(dinam @ Dec 14 2009, 05:09) *
Понятно, а вот как насчет точности? Кто-нибудь может сказать?

Схема не показана, настройки портов не показаны... Что тут можно обсуждать ? Параметры ADC из даташита ?
dinam
Цитата(bolt @ Dec 14 2009, 19:58) *
АЦП измеряет не сопротивление, а напряжение. Точность ~5mV
Странно, у меня код на выходе АЦП говорит о величине измеряемого сопротивления по отношению к образцовому. И вы не поверите я даже не знаю какое у меня Vref (только примерно). cool.gif
Цитата(rx3apf @ Dec 14 2009, 20:37) *
Схема не показана, настройки портов не показаны... Что тут можно обсуждать ? Параметры ADC из даташита ?
Измеряю сопротивление RK1 в Sleep, необходимые времена для зарядки CHOLD и между измерениями выдерживаю. Приведенное сопротивление измеряемой цепи ко входу АЦП порядка 7.5 кОм. Напряжение питания около 4.6B. Vref чуть меньше из-за падения на порту RA2. Даже не знаю что ещё добавить. В datashеet я укладываюсь, но надеялся на меньшие величины.
Меня интересует какой разброс по точности у подобных АЦП. Может кто-нибудь выпускает тысячами-десятками тысяч устройств и подскажет?
bolt
Похоже Вы температуру пытаетесь измерить, только питание довольно странно подключили. laughing.gif
Поскольку АЦП сопротивления не измеряет, то через RK1 должен протекать некий ток. Этот ток создаст падение напряжения которое Вы уже и сможете измерить.
Погрешность измерения, напряжения ес-но, можно узнать из dsh. Для 16 серии она ~5mV. Это изготовитель чипов обещает. Он такие устройства миллионами штук выпускает.
rx3apf
Цитата(dinam @ Dec 15 2009, 05:19) *
В datashеet я укладываюсь, но надеялся на меньшие величины.

Не, ну если ошибка в 5 дискретов против ожидаемой - то это уже и в даташит не вписывается. Точнее, не вписывается в типовые значения, максимальные в моей версии (2007 год) не оговорены (а тащить новый лениво). Надо исследовать, искать причину. Я бы начал с того, что сделал бы делитель из двух одинаковых резисторов (лучше бы, конечно, термостабильных) в диапазоне 1...2К, и посмотрел бы, что на таком делителе получится. Даже не обязательно подгонять их по равенству лучше 0.1% (хотя тоже неплохо бы), достаточно пары измерений, меняя их местами. Ну и "до кучи" посмотреть отклик ADC при соединении входа с "землей" и ref. Хотя бы проблему смещения можно было бы исключить. Если не смещение, то дальше уж исследовать линейность (опять же пару резисторов, но различающихся раз в пять). 5 дискретов - это все ж многовато. А если дело в смещении - то, наверное, надо подумать о начальной калибровке-компенсации.
dinam
Цитата(bolt @ Dec 15 2009, 16:23) *
Похоже Вы температуру пытаетесь измерить, только питание довольно странно подключили. laughing.gif
Поскольку АЦП сопротивления не измеряет, то через RK1 должен протекать некий ток. Этот ток создаст падение напряжения которое Вы уже и сможете измерить.
Погрешность измерения, напряжения ес-но, можно узнать из dsh. Для 16 серии она ~5mV. Это изготовитель чипов обещает. Он такие устройства миллионами штук выпускает.
Не знаю чего тут такого странного, это обычное решение - подавать импульсное напряжения на датчик. Чтобы исключить саморазогрев терморезистора. Спаял ещё одну плату - точно такие же показания, либо я где-то накасячил, либо... Всем спасибо, буду разбираться в чем дело.
bolt
Цитата
Не знаю чего тут такого странного,

-5V на Vss, обычно это GND
ar__systems
Цитата(dinam @ Dec 15 2009, 07:07) *
Не знаю чего тут такого странного, это обычное решение - подавать импульсное напряжения на датчик. Чтобы исключить саморазогрев терморезистора. Спаял ещё одну плату - точно такие же показания, либо я где-то накасячил, либо... Всем спасибо, буду разбираться в чем дело.

А почему вы думаете, что ошибка в измерениях? Вы с чем сравниваете?
dinam
Цитата(bolt @ Dec 15 2009, 18:17) *
-5V на Vss, обычно это GND
PIC ещё симистором управляет smile.gif. И это так исторически сложилось в схемах управления симисторами из-за меньшего тока управления во II и III квадрантах, а точнее из-за большего тока управления в IV квадранте. Похоже нащупал проблему, где-то ошибка в программе. Пока ещё не понял где, но при больших временах симуляции она проявляется.
bolt
Полагаю что всему виной большой коэффициент ускорения удельного сопротивления при медленной симуляции. Замена синего резистора на холодный поможет справиться с проблемой. Успехов! biggrin.gif
dinam
Радость моя оказалась преждевременной. В программе всё впорядке. При замыкании на -Vref на выходе 0h. При подаче +Vref на вход, на выходе 3FDh. Хотя Gain Error 1 LSb по datasheet. Менял напряжение питание, показания стабильные. Смотрел показания без усреднения все очень близко ложаться, т.е разброса почти нет. Но ошибка всё равно составляет 5 LSb. На плате вроде нигде не накосячил. В общем уже голову поломал. В Microchip похоже остаётся только написать sad.gif.
Herz
Цитата(dinam @ Dec 17 2009, 11:04) *
Но ошибка всё равно составляет 5 LSb. На плате вроде нигде не накосячил. В общем уже голову поломал.


Какая всё-таки ошибка? Вы так ничего и написали о том, с чего Вы взяли, что ПИК ошибается.
ar__systems
VREF должен быть низкоимедансным, а у вас там какие-то резисторы
dinam
Цитата(Herz @ Dec 17 2009, 23:28) *
Какая всё-таки ошибка? Вы так ничего и написали о том, с чего Вы взяли, что ПИК ошибается.
У меня выходит что интегральная ошибка 3 LSb (должно быть не более 1LSb по datasheet) и Gain Error 2LSb (не более 1LSb). PIC выдаёт не верное значение сопротивления. Oмметр у меня повереннный с точностью +-0.1%.
Цитата(ar__systems @ Dec 17 2009, 23:54) *
VREF должен быть низкоимедансным, а у вас там какие-то резисторы
Сопротивление Vref у меня равно сопротивлению открытого верхнего полевика PICa. Пробовал подцеплять напрямую к питанию - ошибка не исчезла.
Есть хоть кто-нибудь кто применяет АЦП PIC16F88x и может сказать что линейность у него укладывается в datasheet?
dinam
БЛИН! Ошибка смещения может быть же отрицательной. Поэтому при 0В на входе будет всё равно показывать 0h. Сейчас померил ошибку смещения - 2.7LSb. Уже хоть что-то.
George_R
Цитата(ar__systems @ Dec 17 2009, 22:09) *
VREF должен быть низкоимедансным, а у вас там какие-то резисторы

+1. ДШ на семейство говорит что выходное сопротивление измеряемой цепи не должно превышать 10кОм. Там же есть временная диаграмма про время заряда и время преобразования. Возможно стоит попробовать временно померить напряжение на резисторе скажем 500Ом, не возрастёт ли точность. Также, погрешность в половину младшего бита для таких АЦП вполне нормальна, вроде примерно столько и имеем?
VVD_2
Цитата(dinam @ Dec 15 2009, 05:19) *
Странно, у меня код на выходе АЦП говорит о величине измеряемого сопротивления по отношению к образцовому. И вы не поверите я даже не знаю какое у меня Vref (только примерно). cool.gif
Измеряю сопротивление RK1 в Sleep, необходимые времена для зарядки CHOLD и между измерениями выдерживаю. Приведенное сопротивление измеряемой цепи ко входу АЦП порядка 7.5 кОм. Напряжение питания около 4.6B. Vref чуть меньше из-за падения на порту RA2. Даже не знаю что ещё добавить. В datashеet я укладываюсь, но надеялся на меньшие величины.
Меня интересует какой разброс по точности у подобных АЦП. Может кто-нибудь выпускает тысячами-десятками тысяч устройств и подскажет?


Желательно параллельно аналоговому входу ставить конд 10...100н
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.