Pessoal estou aqui com problema em acionar um relè ao PORT_RA4 do 16f627 !
Para acionar o relé estou fazendo desse jeito assim:
output_low(PIN_A4);
Onde estou errando ??
O circuito eh assim :

Moderadores: 51, Renie, gpenga
fabim escreveu:irmãozinho o Q1 está errado...
Polarisação também esta errada...
Tudo errado
MOVLW 0X07;
MOVWF CMCON;
antonio escreveu:EvandrPic
Cara eu jah fiz esses testes todos aqui fisicamente e não funciona !não sei que estou fazendo errado !
EvandrPic escreveu:Você aciona em nível alto ou baixo?
Me parece que o pino RA4 é "DRENO ABERTO". Se for, é necessário colocar um resistor de pull up (entre o pino e o Vcc).
Você desabilitou os comparadores (CMCON)?
- Código: Selecionar todos
MOVLW 0X07;
MOVWF CMCON;antonio escreveu:EvandrPic
Cara eu jah fiz esses testes todos aqui fisicamente e não funciona !não sei que estou fazendo errado !
antonio escreveu:EvandrPic , ele aciona em nivel baixo ,porque eh como falou o pino RA4 é "DRENO ABERTO". sim o resistor eu no circuito tem um de 10K
Agora quanto aos comparadores eu não desabilitei nada , como fazer isso em C (ccs)?
EvandrPic escreveu:Você aciona em nível alto ou baixo?
Me parece que o pino RA4 é "DRENO ABERTO". Se for, é necessário colocar um resistor de pull up (entre o pino e o Vcc).
Você desabilitou os comparadores (CMCON)?
- Código: Selecionar todos
MOVLW 0X07;
MOVWF CMCON;antonio escreveu:EvandrPic
Cara eu jah fiz esses testes todos aqui fisicamente e não funciona !não sei que estou fazendo errado !
EvandrPic escreveu:tenta isso...
Em C (mikroC):
CMCON = 7;
ou
CMCON |= 7; // esta forma não altera o valor dos outros bits
http://projetoseti.com.br/hardware/elet ... -completo/
Livro linguagem C para PIC:
http://www.docstoc.com/docs/72079003/PIC-em-Cantonio escreveu:EvandrPic , ele aciona em nivel baixo ,porque eh como falou o pino RA4 é "DRENO ABERTO". sim o resistor eu no circuito tem um de 10K
Agora quanto aos comparadores eu não desabilitei nada , como fazer isso em C (ccs)?
EvandrPic escreveu:Você aciona em nível alto ou baixo?
Me parece que o pino RA4 é "DRENO ABERTO". Se for, é necessário colocar um resistor de pull up (entre o pino e o Vcc).
Você desabilitou os comparadores (CMCON)?
- Código: Selecionar todos
MOVLW 0X07;
MOVWF CMCON;antonio escreveu:EvandrPic
Cara eu jah fiz esses testes todos aqui fisicamente e não funciona !não sei que estou fazendo errado !
EvandrPic não sei que estou fazendo errado ,nada funciona direito?!
CMCON = 7; // meu compilador da erro!? (undifined identifier CMCON).
setup_adc_ports(NO_ANALOGS ); //da o mesmo erro (undifined identifier --setup_adc_ports).
#include <16F627.h>
#fuses XT,NOWDT,NOLVP,PUT,NOBROWNOUT
#use delay(clock=4000000)
#include <flex_lcd.c>
#USE STANDARD_IO(A)
#USE STANDARD_IO(B)
int contador;
void beep(void);
short flagSeg = FALSE;
short x=0;
#INT_TIMER0
void interruption()
{
set_timer0(6);
Contador--;
if (Contador == 0)
{
output_toggle(PIN_A2);
Contador = 250;
flagSeg = TRUE;
}
}
void main(void)
{
int Minutos =0; //minutos temporizador
int Segundos =0; //segundos temporizador
setup_vref(false);
//setup_comparator(NC_NC_NC_NC);
setup_counters(RTCC_INTERNAL,RTCC_DIV_16);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
setup_adc_ports(NO_ANALOGS );
//CMCON = 7;
lcd_init();
//configurar minutos
lcd_putc("\fLUZ ULTRAVIOLETA,");
while(1)
{
if(!input(PIN_A0)){
While(!input(PIN_A0)){};
//delay_ms(100);
beep();
Minutos++;
if(Minutos >=30)
Minutos = 0;
printf(lcd_putc, "\n(%02u):%02u", Minutos, Segundos);
delay_ms(50);
}
//configurar segundos
if(!input(PIN_A1)) {
while(!input(PIN_A1)){};
beep();
Segundos++;
if(Segundos >=59)
Segundos = 0;
printf(lcd_putc, "\n%02u:(%02u)", Minutos, Segundos);
delay_ms(50);
}
if(!input(PIN_A3))break;
}
//começar
if(!input(PIN_A3)){
While(!input(PIN_A3)){};
beep();
do{
if(flagSeg == TRUE){
flagSeg = FALSE;
output_low(PIN_A4);
if(Segundos == 0){
if(Minutos == 0)
{
x = TRUE; //finalizo de contar
}
else
{
--Minutos;
Segundos = 59;
}
}
else
--Segundos;
printf(lcd_putc, "\fRestante\n %02u:%02u", Minutos, Segundos);
}
if(x == 1){
output_high(PIN_A4);
break;
}
}while(1);
reset_cpu();
}
}
void beep(void){
output_high(PIN_B0); //ativa zumbador
delay_ms(60);
output_low(PIN_B0);
return;//desativa zumbador
}
EvandrPic escreveu:Antonio, provavelmente o teu problema é a configuração do CMCON...
Esse problema de configuração do CMCON (desabilitar os comparadores) é muito comum... Agora é com você e o Google...
Mesmo em C tem como inserir código em ASM... dá uma pesquisada aí.
A propósito, você montou o circuito ou está tentando simular ele no Proteus? Por que se for simulação pode ser um problema no simulador.
Quanto a parte do circuito, você verificou se o transistor aciona o relé com o nível de acionamento que você pretende por no firmware?
Monte o circuito corretamente conforme sugerido e coloque o layout novo para analisarmos como ficou. Porque senão ficamos imaginando que você fez o correto e pode ser que não tenha feito.
antonio escreveu:EvandrPic eu simulei o circuito no proteus e nao funciona,depois montei fisicamente e nao funcionou !
no santo google tenho eu pesquisando horas forum CCs etc ,mas não encontrado que ajuda sobre a configuração dos comparadores !
foi novamente ao proteus e fiz novo codigo e novo circuito para simular e a bagunça esta continuando ,ou seja não funcionaEvandrPic escreveu:Antonio, provavelmente o teu problema é a configuração do CMCON...
Esse problema de configuração do CMCON (desabilitar os comparadores) é muito comum... Agora é com você e o Google...
Mesmo em C tem como inserir código em ASM... dá uma pesquisada aí.
A propósito, você montou o circuito ou está tentando simular ele no Proteus? Por que se for simulação pode ser um problema no simulador.
Quanto a parte do circuito, você verificou se o transistor aciona o relé com o nível de acionamento que você pretende por no firmware?
Monte o circuito corretamente conforme sugerido e coloque o layout novo para analisarmos como ficou. Porque senão ficamos imaginando que você fez o correto e pode ser que não tenha feito.
Voltar para Circuitos Diversos
Usuários navegando neste fórum: Google [Bot] e 1 visitante