Страница 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 ?
Программа с комментариями:
ttt.zip
(970 байт) 332 скачивания

Так должно работать:

Код: Выделить всё

#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
Попробовал свою прогу в протеусе - работает. :( На Железе не пашет - еще раз задумался, что что-то не подключил :cry: . Может подскажите какие ноги на землю подцепить стоит?

Re: Компаратор на PIC16F684

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

Re: Компаратор на PIC16F684

Добавлено: Вт мар 13, 2012 15:47:37
BOB51
похоже изначально при постановке задачи ошибка...
превышение параметра вызывает сработку реле, меняем уставку на большую , снова ждем сработки (параметр стал еще больше) и вновь восстанавливаем исходное состояние реле??? надеясь, что параметр станет меньше? :shock:
за эмиттерный повторитель примерно 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)

Возможно неверно подобран терморезистор. Как его симулировали в протеус? Может выложите ваш работающий файл ?