АЦП pic12f675
|
|
danila81 |
Дата: Ср, 18.09.2013, 12:51 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
5
Замечания:
±
На сайте с 01.04.2013
Статус:
Offline
|
Подскажите в чём проблема не работает АЦП , на AN0 подаётся напряжение через делитель с переменным резистором, при достижении значения АЦП >100 на gpio.4 выставляется 1
define adc_bits 8 define adc_clock 3 define adc_sampleus 50 zad var word trisio=%00000001 CMCON = 7 ANSEL = %00000001 ' Set AN0 analog adcon0= %10000011 pause 500
l: zad=0
adcin 0, zad if zad>100 then gpio.4=1 else gpio.4=0 endif pause 100 goto l end
При симуляции в протеусе gpio.4 не ставится в 1
|
|
|
|
MiXaS |
Дата: Ср, 18.09.2013, 16:15 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Киньте проект протеуса и басика
|
|
|
|
anatol |
Дата: Ср, 18.09.2013, 17:58 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
danila81, MiXaS, а как еще может быть Код if zad>100 then gpio.4=1
|
|
|
|
danila81 |
Дата: Ср, 18.09.2013, 19:27 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
5
Замечания:
±
На сайте с 01.04.2013
Статус:
Offline
|
Вроде понял косяк, тогда такой вопрос какое значение может принимать переменная zad
|
|
|
|
MiXaS |
Дата: Ср, 18.09.2013, 19:44 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Переменная типа WORD имеет диапазон от 0 до 65535. Но так как у Вас 8 разрядный режим ацп, то 0-255. Добавлено (18.09.2013, 19:41) ---------------------------------------------
Цитата (MiXaS) danila81, MiXaS, а как еще может быть
anatol, Никогда не работал с 12 серией.Добавлено (18.09.2013, 19:44) ---------------------------------------------
Цитата (MiXaS) Кодif zad>100 then gpio.4=1
anatol, Вас переменная насмешила?
|
|
|
|
danila81 |
Дата: Ср, 18.09.2013, 19:51 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
5
Замечания:
±
На сайте с 01.04.2013
Статус:
Offline
|
Получается если на AN0 от 0в до 5в тогда соответственно zad может быть от 0 до 255, правильно? тоже первый раз ползую 12f и если честно ацп так же первый раз, поэтому прошу сильно не пинать.
|
|
|
|
anatol |
Дата: Ср, 18.09.2013, 20:27 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
MiXaS, Цитата (danila81) Подскажите в чём проблема не работает АЦП , на AN0 подаётся напряжение через делитель с переменным резистором, при достижении значения АЦП >100 на gpio.4 выставляется 1 Цитата (danila81) if zad>100 thengpio.4=1 Цитата (danila81) adcin 0, zad Нет, мне прога понравилась. Читаем АЦП gpio.0 , присваиваем его значение переменной zad , а дальше указываем что если zad >100 то устанавливаем порт gpio.4 в "1". Потом чешем репу и спрашиваем почему при достижении значения АЦП >100 на gpio.4 выставляется 1?
Сообщение отредактировал
anatol - Ср, 18.09.2013, 20:32
|
|
|
|
MiXaS |
Дата: Чт, 19.09.2013, 09:58 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Ха! Так она работает! Получается! anatol, я видимо не правильно прочитал верхнюю строку первого поста. точнее частицу не сам вставил..
danila81, именно так! Напряжение на вход АЦП нужно подавать равное опорному напряжению. В крайних случаях +0,3В от опорного, но лучше этого не делать, есть шанс, что выгорит порт. Также рекомендую поставить стабилитрон в обратном направлении относительно входа и массы. (Катод на вход АЦП, после делителя, а анод на массу).
Я так понимаю Вы вольтметр пытаетесь сделать, ну или что-то вроде. Если источник опорного напряжения подвязан на питание МК, тогда меряете питание на МК. Если Вы используете линейный стабализатор типи 7805 и подобные, то скорее всего выход будет равен 4,91-4,95В. Поэтому нужно расчитать цену одного бита: 4950мВ/255бит=19,411мВ один бит. Так как Вы используете делитель напряжения, то результат, который измеряете и преобразуете, нужно еще умножить на коэф деления.
|
|
|
|
danila81 |
Дата: Чт, 19.09.2013, 13:36 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
5
Замечания:
±
На сайте с 01.04.2013
Статус:
Offline
|
Эта программа пробный вариант для того чтобы понять работу ацп, а вообще идея в том чтобы с помощью переменного резистора изменять длительность к примеру мыргов светодиода от 1с до 3с.
Добавлено (19.09.2013, 13:36) --------------------------------------------- По всем размышлениям полуаем 5в/255бит =19,6мв на 1бит следовательно 1в/19,6=51бит->это 1в, но при симуляции в протеусе на gpio.4 единица выставляется при условии zad > 2, при этом напряжение на AN0 порядка 3.76в, а по расчётам при напряжении 3.76в zad должен быть > 191 не могу понять в чём проблемма может прот гоняет
Сообщение отредактировал
danila81 - Чт, 19.09.2013, 14:18
|
|
|
|
MiXaS |
Дата: Чт, 19.09.2013, 13:41 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Киньте проект
|
|
|
|
danila81 |
Дата: Чт, 19.09.2013, 14:47 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
5
Замечания:
±
На сайте с 01.04.2013
Статус:
Offline
|
Всем спасибо разобрался, проблема была в конфигурации adcon0 если 7й бит 1 то "результат формируется по левому краю", вообщем должно быть так adcon0= %00000011 и усё работает как надо
|
|
|
|
DeAKsin |
Дата: Вт, 04.08.2015, 20:43 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
4
Замечания:
±
На сайте с 27.03.2012
Статус:
Offline
|
Можно продолжить тему, или обязательно создавать новую? Добавлено (12.12.2022, 12:56) --------------------------------------------- ладно, создам собственную
|
|
|
|