| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| PIC16F870 ADC http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=1404 |
Страница 1 от 2 |
| Автор: | mountaineer [ Съб Дек 10, 2005 11:59 am ] |
| Заглавие: | PIC16F870 ADC |
Здравейте. Съвсем нов съм тук и като за начало имам един екзистенциален въпрос. Значи, искам да ползвам вграденото АЦП на един PIC16F870. Проблемът е, че нещо не работи както трябва. Настроил съм го да ползва вътрешно опорно напрежение (Vss и Vdd), а цялата схема е със стабилизирано захранване (7805). С един делител на напрежение му подавам различни напрежения на AN0 (цифровия RA0) и ги изкарвам като десетично число на 4 7-сегментни индикатора. Всичко това работи без прекъсвания (ще си правя човешка програма, когато го подкарам както трябва). Та, когато повиша напрежението на входа до Vdd (примерно 4,95 волта, че не е точно 5), изобщо не излиза максималното число от АЦП-то (1023), ами нещо около 800-900 и много се колебае. При по-ниски напрежения пък изобщо не отлепва - чак към 400-500 миливолта дава първия LSB. Освен това се държи различно с различни настройки за clock. По документациите пише, че трябва външното съпротивление да е под 10 килоома, за да има достатъчно ток за зареждане на кондензатора на АЦП-то. Е, в случая външното съпротивление е доста малко. Но и през 10 килоомов резистор е пак същата работа. Засега не ме интересуват по-високи честоти за ползване на АЦП-то, просто искам чат-пат да меря един термистор или нещо подобно. Някой има ли представа защо може да става така? |
|
| Автор: | bateAz [ Съб Дек 10, 2005 12:16 pm ] |
| Заглавие: | |
Просто като идея питам : проверяваш ли дали ADC е готово с резултатите. Обикновено конверторът се стартира и се чака да стане готов. За целта някъде има бит, който показа, дали ADC е готов или зает. Чакаш да стане готов, и чак тогава четеш резултата. Така ли го правиш? |
|
| Автор: | mountaineer [ Съб Дек 10, 2005 12:20 pm ] |
| Заглавие: | |
Да, проверявам този бит с цикъл и продължавам, когато се е нулирал. Той е бит номер 2 в ADCON0. |
|
| Автор: | bateAz [ Съб Дек 10, 2005 12:38 pm ] |
| Заглавие: | |
Сложи 100nF палелно на входа ( към маса ) и пиши какво става. |
|
| Автор: | mountaineer [ Съб Дек 10, 2005 12:45 pm ] |
| Заглавие: | |
Пак същата работа... Пробвах с няколко различни кондензатора. Започвам да подозирам, че пика нещо не е наред. |
|
| Автор: | bateAz [ Съб Дек 10, 2005 12:49 pm ] |
| Заглавие: | |
Пусни го вътрешен генератор RC. Ако и това не помогне : Комет Между другото : имаш ли блокиращи кондензатори в захранването? 100nF от двете страни на 7805 и един на пиновете на процесора. |
|
| Автор: | mountaineer [ Съб Дек 10, 2005 12:55 pm ] |
| Заглавие: | |
И с RC-то пробвах. Дава по-голямо число, но пак не пълни ADRESL. Имам кондензатори на захранването, ще сложа и на пика. Ще взема да пробвам някой друг PIC с АЦП. Сигурно точно на този нещо му има. По форумите и по документациите на МикроЧеп нищо не намерих... |
|
| Автор: | plameniv [ Съб Дек 10, 2005 4:26 pm ] | |||||||||
| Заглавие: | Hm | |||||||||
Защо не пробваш с 16F676 , при мен бачкаше перфектно , даже е със вътрешен так |
||||||||||
| Автор: | Gogo [ Съб Дек 10, 2005 8:22 pm ] |
| Заглавие: | |
Поиграй си малко с битовете ADCS1:ADCS0 на ADCON0. Може пък да тръгне. |
|
| Автор: | VSU [ Съб Дек 10, 2005 9:51 pm ] |
| Заглавие: | |
Обикновено няма проблем с АЦП то я провери дали си дал дясно или ляво ориентирани данни и как го четеш и дали си конфигурирал както трябва АЦП то а и не напоследно място програмата !!!!! |
|
| Автор: | mountaineer [ Нед Дек 11, 2005 1:25 pm ] |
| Заглавие: | |
Проверявах всичко много пъти, всякаквите настройки (дясно подреждане, clock...). Всички комбинации извъртях и... не би. |
|
| Автор: | bateAz [ Нед Дек 11, 2005 1:33 pm ] |
| Заглавие: | |
Кондензаторът на пиновете на контролера? Важен е! |
|
| Автор: | mountaineer [ Нед Дек 11, 2005 2:12 pm ] |
| Заглавие: | |
Има си кондензатори и на аналоговия вход, и между Vdd и Vss, и на стабилизатора. Сега поне спря да играе, установява се на една стойност, но пак е доста по-малка. А има ли значение как е свързан MCLR с Vdd? |
|
| Автор: | evc [ Нед Дек 11, 2005 8:23 pm ] |
| Заглавие: | |
Значи ти хубаво го проверяваш тоя бит на АЦП-то, но това е бит за състоянието на конверсията, т.е. самото преобразуване на аналоговата величина, в случая напрежението на Sample&Hold кондензатора, в цифров код. А виж в PDF-а на ппрцесора, че е необходимо да се спази едно минимално време от превключването на входа на АЦП-то към избрания пин, до зареждане на този кондензатор, наречено Acquisition time. Т.е. подсигури се, че от включването на пина до стартирането на конверсията (със вдигане на ADCGO бита) има поне 20us. Вярно - съпротивлението на външната верига ти е ниско, но имаш и вътрешно, мисля към 5к, на аналоговия ключ. |
|
| Автор: | mountaineer [ Пон Дек 12, 2005 2:01 am ] | |||||||||
| Заглавие: | ||||||||||
Да, точно в това се оказа проблема. Сега е решен. Благодаря на всички за помощта! |
||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|