Отговори на тема  [ 16 мнения ]  Отиди на страница 1, 2  Следваща
PIC16F870 ADC 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение PIC16F870 ADC
Здравейте. Съвсем нов съм тук и като за начало имам един екзистенциален въпрос.

Значи, искам да ползвам вграденото АЦП на един PIC16F870. Проблемът е, че нещо не работи както трябва. Настроил съм го да ползва вътрешно опорно напрежение (Vss и Vdd), а цялата схема е със стабилизирано захранване (7805). С един делител на напрежение му подавам различни напрежения на AN0 (цифровия RA0) и ги изкарвам като десетично число на 4 7-сегментни индикатора. Всичко това работи без прекъсвания (ще си правя човешка програма, когато го подкарам както трябва). Та, когато повиша напрежението на входа до Vdd (примерно 4,95 волта, че не е точно 5), изобщо не излиза максималното число от АЦП-то (1023), ами нещо около 800-900 и много се колебае. При по-ниски напрежения пък изобщо не отлепва - чак към 400-500 миливолта дава първия LSB. Освен това се държи различно с различни настройки за clock. По документациите пише, че трябва външното съпротивление да е под 10 килоома, за да има достатъчно ток за зареждане на кондензатора на АЦП-то. Е, в случая външното съпротивление е доста малко. Но и през 10 килоомов резистор е пак същата работа. Засега не ме интересуват по-високи честоти за ползване на АЦП-то, просто искам чат-пат да меря един термистор или нещо подобно.
Някой има ли представа защо може да става така?

_________________
Manners maketh man.


Съб Дек 10, 2005 11:59 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Просто като идея питам : проверяваш ли дали ADC е готово с резултатите. Обикновено конверторът се стартира и се чака да стане готов. За целта някъде има бит, който показа, дали ADC е готов или зает. Чакаш да стане готов, и чак тогава четеш резултата. Така ли го правиш?


Съб Дек 10, 2005 12:16 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение 
Да, проверявам този бит с цикъл и продължавам, когато се е нулирал. Той е бит номер 2 в ADCON0.

_________________
Manners maketh man.


Съб Дек 10, 2005 12:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Сложи 100nF палелно на входа ( към маса ) и пиши какво става.


Съб Дек 10, 2005 12:38 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение 
Пак същата работа... Пробвах с няколко различни кондензатора. Започвам да подозирам, че пика нещо не е наред.

_________________
Manners maketh man.


Съб Дек 10, 2005 12:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Пусни го вътрешен генератор RC. Ако и това не помогне : Комет :cry:

Между другото : имаш ли блокиращи кондензатори в захранването? 100nF от двете страни на 7805 и един на пиновете на процесора.


Съб Дек 10, 2005 12:49 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение 
И с RC-то пробвах. Дава по-голямо число, но пак не пълни ADRESL.
Имам кондензатори на захранването, ще сложа и на пика.
Ще взема да пробвам някой друг PIC с АЦП. Сигурно точно на този нещо му има. По форумите и по документациите на МикроЧеп нищо не намерих...

_________________
Manners maketh man.


Съб Дек 10, 2005 12:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Hm
mountaineer написа:
И с RC-то пробвах. Дава по-голямо число, но пак не пълни ADRESL.
Имам кондензатори на захранването, ще сложа и на пика.
Ще взема да пробвам някой друг PIC с АЦП. Сигурно точно на този нещо му има. По форумите и по документациите на МикроЧеп нищо не намерих...

Защо не пробваш с 16F676 , при мен бачкаше перфектно , даже е със вътрешен так :?


Съб Дек 10, 2005 4:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Поиграй си малко с битовете ADCS1:ADCS0 на ADCON0. Може пък да тръгне.


Съб Дек 10, 2005 8:22 pm
Профил ICQ
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Обикновено няма проблем с АЦП то я провери дали си дал дясно или ляво ориентирани данни и как го четеш и дали си конфигурирал както трябва АЦП то а и не напоследно място програмата !!!!!


Съб Дек 10, 2005 9:51 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение 
Проверявах всичко много пъти, всякаквите настройки (дясно подреждане, clock...). Всички комбинации извъртях и... не би.

_________________
Manners maketh man.


Нед Дек 11, 2005 1:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Кондензаторът на пиновете на контролера? Важен е!


Нед Дек 11, 2005 1:33 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение 
Има си кондензатори и на аналоговия вход, и между Vdd и Vss, и на стабилизатора.
Сега поне спря да играе, установява се на една стойност, но пак е доста по-малка.

А има ли значение как е свързан MCLR с Vdd?

_________________
Manners maketh man.


Нед Дек 11, 2005 2:12 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Окт 21, 2005 8:45 am
Мнения: 499
Мнение 
Значи ти хубаво го проверяваш тоя бит на АЦП-то, но това е бит за състоянието на конверсията, т.е. самото преобразуване на аналоговата величина, в случая напрежението на Sample&Hold кондензатора, в цифров код. А виж в PDF-а на ппрцесора, че е необходимо да се спази едно минимално време от превключването на входа на АЦП-то към избрания пин, до зареждане на този кондензатор, наречено Acquisition time. Т.е. подсигури се, че от включването на пина до стартирането на конверсията (със вдигане на ADCGO бита) има поне 20us. Вярно - съпротивлението на външната верига ти е ниско, но имаш и вътрешно, мисля към 5к, на аналоговия ключ.


Нед Дек 11, 2005 8:23 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Съб Дек 10, 2005 11:44 am
Мнения: 326
Местоположение: Lake Geneva Shoreline
Мнение 
evc написа:
Значи ти хубаво го проверяваш тоя бит на АЦП-то, но това е бит за състоянието на конверсията, т.е. самото преобразуване на аналоговата величина, в случая напрежението на Sample&Hold кондензатора, в цифров код. А виж в PDF-а на ппрцесора, че е необходимо да се спази едно минимално време от превключването на входа на АЦП-то към избрания пин, до зареждане на този кондензатор, наречено Acquisition time. Т.е. подсигури се, че от включването на пина до стартирането на конверсията (със вдигане на ADCGO бита) има поне 20us. Вярно - съпротивлението на външната верига ти е ниско, но имаш и вътрешно, мисля към 5к, на аналоговия ключ.


Да, точно в това се оказа проблема. Сега е решен. Благодаря на всички за помощта!

_________________
Manners maketh man.


Пон Дек 12, 2005 2:01 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 16 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни