Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » АЦП pic12f675
АЦП pic12f675
danila81 Дата: Ср, 18.09.2013, 12:51  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 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
ЯНДЕКС Дата: 18.09.2013
MiXaS Дата: Ср, 18.09.2013, 16:15  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Киньте проект протеуса и басика
anatol Дата: Ср, 18.09.2013, 17:58  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

danila81MiXaS, а как еще может быть
Код
if zad>100 then  
  gpio.4=1
biggrin
danila81 Дата: Ср, 18.09.2013, 19:27  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 01.04.2013

Статус: Offline

Вроде понял косяк, тогда такой вопрос какое значение может принимать переменная zad
MiXaS Дата: Ср, 18.09.2013, 19:44  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 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
Репутация: 0   ±
Замечания:   ±
На сайте с 01.04.2013

Статус: Offline

Получается если на AN0 от 0в до 5в тогда соответственно zad может быть от 0 до 255, правильно?
тоже первый раз ползую 12f и если честно ацп так же первый раз, поэтому прошу сильно не пинать.
anatol Дата: Ср, 18.09.2013, 20:27  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

MiXaS
Цитата (danila81)
Подскажите в чём проблема не работает АЦП , на AN0 подаётся напряжение через делитель с переменным резистором, при достижении значения АЦП >100 на gpio.4 выставляется 1

Цитата (danila81)
if zad>100 thengpio.4=1

Цитата (danila81)
adcin 0, zad
 Нет, мне прога понравилась. wink Читаем АЦП 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Ха! Так она работает! Получается! anatol, я видимо не правильно прочитал верхнюю строку первого поста. точнее частицу не сам вставил.. tongue

danila81, именно так! Напряжение на вход АЦП нужно подавать равное опорному напряжению. В крайних случаях +0,3В от опорного, но лучше этого не делать, есть шанс, что выгорит порт. Также рекомендую поставить стабилитрон в обратном направлении относительно входа и массы. (Катод на вход АЦП, после делителя, а анод на массу).

Я так понимаю Вы вольтметр пытаетесь сделать, ну или что-то вроде. Если источник опорного напряжения подвязан на питание МК, тогда меряете питание на МК. Если Вы используете линейный стабализатор типи 7805 и подобные, то скорее всего выход будет равен 4,91-4,95В. Поэтому нужно расчитать цену одного бита: 4950мВ/255бит=19,411мВ один бит. Так как Вы используете делитель напряжения, то результат, который измеряете и преобразуете, нужно еще умножить на коэф деления.
danila81 Дата: Чт, 19.09.2013, 13:36  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Киньте проект
danila81 Дата: Чт, 19.09.2013, 14:47  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Новенький
Сообщений: 5
Репутация: 0   ±
Замечания:   ±
На сайте с 01.04.2013

Статус: Offline

Всем спасибо разобрался, проблема была в конфигурации adcon0 если 7й бит 1 то "результат формируется по левому краю", вообщем должно быть так adcon0= %00000011 и усё работает как надо smile
ЯНДЕКС Дата: 19.09.2013
DeAKsin Дата: Вт, 04.08.2015, 20:43  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Новенький
Сообщений: 4
Репутация: 0   ±
Замечания:   ±
На сайте с 27.03.2012

Статус: Offline

Можно продолжить тему, или обязательно создавать новую?

Добавлено (12.12.2022, 12:56)
---------------------------------------------
ладно, создам собственную

Форум Picbasic.ru » Программирование МК » PicBasicPro » АЦП pic12f675
  • Страница 1 из 1
  • 1
Поиск: