Страница 1 из 1
Компаратор на PIC16F684
Добавлено: Ср мар 07, 2012 07:50:19
jtlex
Написал программу: Программа простая.
Принцип такой: компаратор1 сравнивает напряжение с опорным встроенным и как только оно превышает то устанавливаем бит RC2 на выходе
и корректирует свое напряжение на большее значение при его превышении сбрасывает RC2 и снижает напряжение опорное.
Все работает, но только на включение. После включения он не отключается. Может я что - то в программе забыл ил на схеме какие нибудь косяки.
У контроллера все ноги кроме RC2, питания и вход 1 компаратора
Код: Выделить всё
#include P16F684.inc
__CONFIG _CP_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT
TIMERH EQU 0X20
TIMERL EQU 0X21
VECTOR EQU 0X22
ORG 0x0000
BCF PCLATH,3
BCF PCLATH,4
GOTO Start
ORG 0x0004
RETFIE
Start
MOVLW 0X02
MOVWF CMCON0
BSF STATUS,RP0
MOVLW 0X07
MOVWF TRISA
CLRF TRISC
MOVLW 0XAC
MOVWF VRCON
BCF STATUS,RP0
MOVF CMCON0,W
BCF PIR1, C1IF
CALL DELAY_10
MAINPROG
CALL DELAY_10
BTFSS CMCON0,C1OUT
GOTO OBOGREVON
OBOGREVOFF
BCF PORTC,RC2
BSF STATUS,RP0
MOVLW 0XAC
MOVWF VRCON
BCF STATUS,RP0
MOVLW 0X02
MOVWF CMCON0
MOVF CMCON0,W
BCF PIR1,C1IF
GOTO MAINPROG
OBOGREVON
BSF PORTC,RC2
BSF STATUS,RP0
MOVLW 0XAB
MOVWF VRCON
BCF STATUS,RP0
MOVLW 0X02
MOVWF CMCON0
MOVF CMCON0,W
BCF PIR1,C1IF
GOTO MAINPROG
DELAY_10
CLRF TIMERH
CLRF TIMERL
CIKLTIMER
INCFSZ TIMERL
GOTO CIKLTIMER
INCFSZ TIMERH
GOTO CIKLTIMER
RETURN
END
Re: Компаратор на PIC16F684
Добавлено: Ср мар 07, 2012 09:47:51
otest
ил на схеме какие нибудь косяки.У контроллера все ноги кроме RC2
Если посмотреть на схему-косяков не видно и схему не видно. То что ноги все это радует.
Re: Компаратор на PIC16F684
Добавлено: Ср мар 07, 2012 19:59:57
kotpalych
Возможно следует поменять местами MOVLW 0XAB и MOVLW 0XAC ?
Программа с комментариями:
Так должно работать:
Код: Выделить всё
#include P16F684.inc
__CONFIG _CP_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT
TIMERL EQU 0X21 ;Переменная таймера задержки
Start
MOVLW 0X02 ;Неинвертирующие входы компараторов
MOVWF CMCON0 ;на ИОН инверсия выхода отключена
BSF STATUS,RP0 ;В первый банк памяти
CLRF TRISC ;Порт С на выход
BCF STATUS,RP0 ;Перейти нулевой банк памяти
OBOGREVON
BSF STATUS,RP0 ;Перейти в первый банк памяти
MOVLW 0XAC ;ИОН включен внутренний
MOVWF VRCON ;на 2,5 вольта
BCF STATUS,RP0 ;Перейти нулевой банк памяти
CALL DELAY ;К подпрограмме задержки
BTFSS CMCON0,C1OUT ;Если напряжение на входе компаратора
GOTO OBOGREVOFF ;выше опорного то OBOGREVOFF
BSF PORTC,RC2 ;На вывод RC2 единицу
GOTO OBOGREVON ;Перейти в MAINPROG
OBOGREVOFF
BSF STATUS,RP0 ;Перейти первый банк памяти
MOVLW 0XAB ;ИОН включен внутренний
MOVWF VRCON ;на 2,29 вольта
BCF STATUS,RP0 ;Перейти нулевой банк памяти
CALL DELAY ;К подпрограмме задержки
BTFSC CMCON0,C1OUT ;Если напряжение на входе компаратора
GOTO OBOGREVON ;ниже опорного то OBOGREVON
BCF PORTC,RC2 ;Обнулить вывод RC2
GOTO OBOGREVOFF ;Перейти в OBOGREVOFF
DELAY
INCFSZ TIMERL ;Выполнить задержку
GOTO DELAY ;256 тактов
RETURN
END
Re: Компаратор на PIC16F684
Добавлено: Вс мар 11, 2012 23:41:16
СашаЖ
Здравствуйте, в программировании я ноль, подскажите а каким программатором Вы его шьете, очень нужно прошить этот пик, в icprog найти его в списке не могу. как мне его прошить, заранее благодарен.
Re: Компаратор на PIC16F684
Добавлено: Пн мар 12, 2012 01:20:12
Enman
в WinPic он есть в списке
Re: Компаратор на PIC16F684
Добавлено: Пн мар 12, 2012 09:11:38
СашаЖ
Будьте добры, подскажите боюсь ошибиться data и clock на выводы пика 13 и 12 идут. Имеется самопальный программатор EXTRApic . Но в списке прошиваемых микроконтроллеров нету 16F684
http://www.qrz.ru/schemes/contribute/constr/extra-pic/ Подскажите с помощью данного программатора и WinPic можно прошить данный контроллер, подскажите пожалуйста и за того что нету в списке боюсь сжечь.
Re: Компаратор на PIC16F684
Добавлено: Пн мар 12, 2012 12:24:47
Korneus
СашаЖ писал(а):Будьте добры, подскажите боюсь ошибиться data и clock на выводы пика 13 и 12 идут. Имеется самопальный программатор EXTRApic . Но в списке прошиваемых микроконтроллеров нету 16F684
http://www.qrz.ru/schemes/contribute/constr/extra-pic/ Подскажите с помощью данного программатора и WinPic можно прошить данный контроллер, подскажите пожалуйста и за того что нету в списке боюсь сжечь.
13 нога data
12 нога clock
Должен прошиваться EXTRApic не чего ему не будет.
Re: Компаратор на PIC16F684
Добавлено: Пн мар 12, 2012 12:25:58
СашаЖ
СашаЖ, не надо цитировать, тем более полностью, сообщение на которое сразу за ним отвечаешь..
Форум не резиновый и читать такие темы не удобно.. Привыкай сразу и к правильному..
МитяРа..
Спасибо.
Re: Компаратор на PIC16F684
Добавлено: Вт мар 13, 2012 11:54:17
jtlex
kotpalych писал(а):Возможно следует поменять местами MOVLW 0XAB и MOVLW 0XAC ?
jtlex, не надо цитировать, тем более полностью, сообщение на которое отвечаешь..
И тем более с листингом и тем более - если отвечаешь, сразу за ним..
Форум не резиновый и читать такие темы не удобно.. Привыкай сразу и к правильному..
МитяРа..Спасибо буду пробывать. Но есть подозрение, что я что-то в схеме не доподкючил...
Re: Компаратор на PIC16F684
Добавлено: Вт мар 13, 2012 11:57:33
jtlex
Попробовал свою прогу в протеусе - работает.

На Железе не пашет - еще раз задумался, что что-то не подключил

. Может подскажите какие ноги на землю подцепить стоит?
Re: Компаратор на PIC16F684
Добавлено: Вт мар 13, 2012 13:22:10
КРАМ
В реальном железе на питании должен стоять блокировочный керамический и электролитический конденсаторы.
Непонятно зачем между МК и реле стоит эмиттерный повторитель с питанием в 12 вольт?
Я смутно подозреваю, что Вы плохо понимаете, что на реле в подобном случае будет попадать напряжение на выходе RC2 за минусом падения на базо-эмиттерном переходе транзистора (примерно полвольта). При питании МК 5 вольт на реле будет 4,5.
ЗЫ. Полагаю, что Vss у Вас сидит на земле...

Re: Компаратор на PIC16F684
Добавлено: Вт мар 13, 2012 15:47:37
BOB51
похоже изначально при постановке задачи ошибка...
превышение параметра вызывает сработку реле, меняем уставку на большую , снова ждем сработки (параметр стал еще больше) и вновь восстанавливаем исходное состояние реле??? надеясь, что параметр станет меньше?

за эмиттерный повторитель примерно 4 вольт на реле я уж не мяучу...
Re: Компаратор на PIC16F684
Добавлено: Вт мар 13, 2012 15:56:17
МитяРа
КРАМ писал(а):Непонятно зачем между МК и реле стоит эмиттерный повторитель с питанием в 12 вольт?
Столь распространённую ошибку объяснить легко..
Начинающие думают, что единственное, как можно включить реле, это подать на него "плюс", а само реле подключить на корпус..
На самом деле на реле надо подать "минус", а само реле подключить на питание..
P.S. Привет
КРАМ-у от отрицательной логики управления..

Re: Компаратор на PIC16F684
Добавлено: Вт мар 13, 2012 16:37:30
jtlex
Пардон. В схеме ошибка (на железе) транзистор эмиттером на минусе.
Re: Компаратор на PIC16F684
Добавлено: Вт мар 13, 2012 16:55:35
kotpalych
Интересно ,а мой вариант программы работает ,или я в нём где-то ошибся?
Re: Компаратор на PIC16F684
Добавлено: Ср мар 14, 2012 14:31:34
jtlex
kotpalych писал(а):Интересно ,а мой вариант программы работает ,или я в нём где-то ошибся?
Нет я же пишу про свою программу
Попробовал свою прогу в протеусе - работает
Re: Компаратор на PIC16F684
Добавлено: Ср мар 14, 2012 16:51:49
kotpalych
Похоже алгоритм работы вашей программы правильный:
Код: Выделить всё
установить опорное напряжение 2.5вольта
MAINPROG
сравнить входное напряжение с опорным
если входное напряжение выше опорного
перейти к подпрограмме понижения напряжения (OBOGREVON)
иначе к подпрограмме повышения напряжения (OBOGREVOFF)
OBOGREVOFF
включить повышение входного напряжения
установить опорное напряжение 2.5вольта
перейти к подпрограмме сравнения(MAINPROG)
OBOGREVON
включить понижение входного напряжения
установить опорное напряжение 2.29вольта
перейти к подпрограмме сравнения (MAINPROG)
Возможно неверно подобран терморезистор. Как его симулировали в протеус? Может выложите ваш работающий файл ?