Ir ao conteúdo
  • Cadastre-se

welton.wan

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

Reputação

0
  1. Pessoal queria uma ajuda de vocês.. Estou com um projeto de um circuito bloqueador temporizado veicular usando um Pic 12F675, que eu queria montar.. Eu sou um pouco leigo com microcontroladores, conheço o básico do básico mesmo.. Montei o circuito e simulei no Proteus e esta funcionando direito, só que queria incrementar o código dele, ele tem um botão que quando apertado ele para a contagem do temporizador. queria saber se consigo fazer um outra função nesse mesmo botão que ao ser pressionado por cerca de 5 segundos ele desativasse o circuito e ou ser pressionado novamente ela ativasse o circuito.. Eu tenho o Código, só queria incrementar ele.. Se alguém puder me ajudar /******************************************************************************* BLOQUEDOR VEICULAR TEMPORIZADO (ANTI-FURTO) C/ PIC 12F675 *******************************************************************************/ //OPÇÃO DO USUÁRIO: //Defina abaixo o tempo de temporização desejado: #define VALOR_MIN 1 // 2 MINUTOS #define VALOR_SEG 00 // 15 SEGUNDOS /******************************************************************************/ #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #ROM 0X2100 = {VALOR_MIN,VALOR_SEG ,0,0}//MIN,SEG,DISP,BLOQ #byte tmr0 = 0x01 #byte gpio = 0x05 #byte trisio = 0x85 #byte intcon = 0x0b #byte option_reg = 0x81 #bit sw_desbloqueia = 0x05.3 // pino 4 #bit sw_temp = 0x05.1 // pino 6 #bit rele = 0x05.4 // pino 3 #bit led = 0x05.5 // pino 2 #bit gie = 0x0b.7 // geral das interrupções #bit t0ie = 0x0b.5 //liga interrupção do timer 0 #bit t0if = 0x0b.2 //flag de over flow do timer0 //enderelos na EEprom Interna do PIC #define BLOQ 3 #define DISP 2 #define END_MIN 0 #define END_SEG 1 /******************************************************************************/ //variaveis globais unsigned int8 pisca=0; unsigned int1 f_pisca; unsigned segundos; unsigned minutos; /****************************************************************************** Interrupção do Timer 0 ******************************************************************************/ #int_timer0 void isr_tmr0(){ static unsigned int32 cnt32=0; //interrupção a cada 65536 useg //gera 1 segundos com metodo de acumulo de erro #define FATOR 65536 #define F_XTAL 1000000 // para xtal 4Mhz 20ppm (freq/4) cnt32+=FATOR ; if(cnt32>=F_XTAL){ cnt32-= F_XTAL; if(--segundos==0xff){ segundos=59; if( minutos>0){ minutos--; } } if(!minutos && !segundos){ rele=0; f_pisca=1; //pisca led write_eeprom(DISP,0);//sai do modo disparado write_eeprom(BLOQ,1); //entra em modo bloqueado disable_interrupts(int_timer0);//para a contagem de tempo } } // t0if = 0; // apaga flag de over flow do Timer1 (redundância no CCS C) } /****************************************************************************** Rotina Main ******************************************************************************/ void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_OFF); setup_counters(RTCC_INTERNAL,RTCC_DIV_256); setup_timer_1(T1_DISABLED); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); trisio=0b001010; gpio=0; t0ie=0; gie=1; if(read_eeprom(BLOQ)){// estava bloqueado f_pisca=1;//liga o pisca do led pisca=0; disable_interrupts(int_timer0); rele=0;//desliga rele // } else{//se não estava rele=1;//liga rele f_pisca=0;//desliga piscadas do led led=1;//acende led pisca=0; } if(read_eeprom(DISP)){//estava disparado minutos=read_eeprom(END_MIN);// carrega valor de tempo segundos= read_eeprom(END_SEG);//idem if(segundos>=15){ segundos-=15;//subtrai 15 segundos a cada reset write_eeprom(END_SEG,segundos); enable_interrupts(int_timer0); gie=1; led=0; } else{ if(minutos){ minutos--; segundos=45; write_eeprom(END_SEG,segundos);//salva novo valor na EEprom write_eeprom(END_MIN,minutos);//idem enable_interrupts(int_timer0);//habilita interrupção do timer0 gie=1;//liga geral led=0; } else{ disable_interrupts(int_timer0); write_eeprom(BLOQ,1);//bloqueia write_eeprom(DISP,0);//sai do modo disparado f_pisca=1;//liga o pisca do led pisca=0; rele=0; } } } /****************************************************************************** Laço Principal ******************************************************************************/ for(;;){ #define VALOR_FREQ_PISCA 4 // aprox. 2 Hz if(!sw_desbloqueia){//se interruptor secreto foi acionado para liberar disable_interrupts(int_timer0); rele=1; f_pisca=0;//desliga piscadas do led led=1; pisca=0; if((read_eeprom(BLOQ))||(read_eeprom(DISP))){ write_eeprom(DISP,0);//sai da condição de disparo write_eeprom(BLOQ,0);//sai da condição de bloqueio write_eeprom(END_MIN,VALOR_MIN);//recupera valor original de minutos write_eeprom(END_SEG,VALOR_SEG);//recupera valor original de segundos segundos=VALOR_SEG; minutos=VALOR_MIN; } } if(sw_desbloqueia == 0){//se interruptor secreto foi acionado para liberar disable_interrupts(int_timer0); rele=1; f_pisca=0;//desliga piscadas do led led=1; pisca=0; if((read_eeprom(BLOQ))||(read_eeprom(DISP))){ write_eeprom(DISP,0);//sai da condição de disparo write_eeprom(BLOQ,0);//sai da condição de bloqueio write_eeprom(END_MIN,VALOR_MIN);//recupera valor original de minutos write_eeprom(END_SEG,VALOR_SEG);//recupera valor original de segundos segundos=VALOR_SEG; minutos=VALOR_MIN; } } if(!sw_temp){//dispara se porta do motorista foi aberta (ou acionado botão secreto) if(!read_eeprom(DISP)&& !read_eeprom(BLOQ)){ led=0; write_eeprom(DISP,1);//entra na condição de disparado // segundos=0; // minutos=0; enable_interrupts(int_timer0);//contando tempo pelo timer 0 gie=1; } } if(f_pisca){ //pisca se veiculo estiver bloqueado if(t0if){ t0if=0; pisca++; if(pisca>=VALOR_FREQ_PISCA){led=!led; pisca=0;} } } }//for(;;) }//main()
  2. Pessoal queria uma ajuda de vocês.. Estou com um projeto de um circuito bloqueador temporizado veicular usando um Pic 12F675, que eu queria montar.. Eu sou um pouco leigo com microcontroladores, conheço o básico do básico mesmo.. Montei o circuito e simulei no Proteus e esta funcionando direito, só que queria incrementar o código dele, ele tem um botão que quando apertado ele para a contagem do temporizador. queria saber se consigo fazer um outra função nesse mesmo botão que ao ser pressionado por cerca de 5 segundos ele desativasse o circuito e ou ser pressionado novamente ela ativasse o circuito.. Eu tenho o Código, só queria incrementar ele.. Se alguém puder me ajudar /******************************************************************************* BLOQUEDOR VEICULAR TEMPORIZADO (ANTI-FURTO) C/ PIC 12F675 *******************************************************************************/ //OPÇÃO DO USUÁRIO: //Defina abaixo o tempo de temporização desejado: #define VALOR_MIN 1 // 2 MINUTOS #define VALOR_SEG 00 // 15 SEGUNDOS /******************************************************************************/ #include <12F675.h> #device adc=8 #use delay(clock=4000000) #fuses NOWDT,INTRC_IO, NOCPD, NOPROTECT, NOMCLR, PUT, BROWNOUT #ROM 0X2100 = {VALOR_MIN,VALOR_SEG ,0,0}//MIN,SEG,DISP,BLOQ #byte tmr0 = 0x01 #byte gpio = 0x05 #byte trisio = 0x85 #byte intcon = 0x0b #byte option_reg = 0x81 #bit sw_desbloqueia = 0x05.3 // pino 4 #bit sw_temp = 0x05.1 // pino 6 #bit rele = 0x05.4 // pino 3 #bit led = 0x05.5 // pino 2 #bit gie = 0x0b.7 // geral das interrupções #bit t0ie = 0x0b.5 //liga interrupção do timer 0 #bit t0if = 0x0b.2 //flag de over flow do timer0 //enderelos na EEprom Interna do PIC #define BLOQ 3 #define DISP 2 #define END_MIN 0 #define END_SEG 1 /******************************************************************************/ //variaveis globais unsigned int8 pisca=0; unsigned int1 f_pisca; unsigned segundos; unsigned minutos; /****************************************************************************** Interrupção do Timer 0 ******************************************************************************/ #int_timer0 void isr_tmr0(){ static unsigned int32 cnt32=0; //interrupção a cada 65536 useg //gera 1 segundos com metodo de acumulo de erro #define FATOR 65536 #define F_XTAL 1000000 // para xtal 4Mhz 20ppm (freq/4) cnt32+=FATOR ; if(cnt32>=F_XTAL){ cnt32-= F_XTAL; if(--segundos==0xff){ segundos=59; if( minutos>0){ minutos--; } } if(!minutos && !segundos){ rele=0; f_pisca=1; //pisca led write_eeprom(DISP,0);//sai do modo disparado write_eeprom(BLOQ,1); //entra em modo bloqueado disable_interrupts(int_timer0);//para a contagem de tempo } } // t0if = 0; // apaga flag de over flow do Timer1 (redundância no CCS C) } /****************************************************************************** Rotina Main ******************************************************************************/ void main() { setup_adc_ports(NO_ANALOGS|VSS_VDD); setup_adc(ADC_OFF); setup_counters(RTCC_INTERNAL,RTCC_DIV_256); setup_timer_1(T1_DISABLED); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); trisio=0b001010; gpio=0; t0ie=0; gie=1; if(read_eeprom(BLOQ)){// estava bloqueado f_pisca=1;//liga o pisca do led pisca=0; disable_interrupts(int_timer0); rele=0;//desliga rele // } else{//se não estava rele=1;//liga rele f_pisca=0;//desliga piscadas do led led=1;//acende led pisca=0; } if(read_eeprom(DISP)){//estava disparado minutos=read_eeprom(END_MIN);// carrega valor de tempo segundos= read_eeprom(END_SEG);//idem if(segundos>=15){ segundos-=15;//subtrai 15 segundos a cada reset write_eeprom(END_SEG,segundos); enable_interrupts(int_timer0); gie=1; led=0; } else{ if(minutos){ minutos--; segundos=45; write_eeprom(END_SEG,segundos);//salva novo valor na EEprom write_eeprom(END_MIN,minutos);//idem enable_interrupts(int_timer0);//habilita interrupção do timer0 gie=1;//liga geral led=0; } else{ disable_interrupts(int_timer0); write_eeprom(BLOQ,1);//bloqueia write_eeprom(DISP,0);//sai do modo disparado f_pisca=1;//liga o pisca do led pisca=0; rele=0; } } } /****************************************************************************** Laço Principal ******************************************************************************/ for(;;){ #define VALOR_FREQ_PISCA 4 // aprox. 2 Hz if(!sw_desbloqueia){//se interruptor secreto foi acionado para liberar disable_interrupts(int_timer0); rele=1; f_pisca=0;//desliga piscadas do led led=1; pisca=0; if((read_eeprom(BLOQ))||(read_eeprom(DISP))){ write_eeprom(DISP,0);//sai da condição de disparo write_eeprom(BLOQ,0);//sai da condição de bloqueio write_eeprom(END_MIN,VALOR_MIN);//recupera valor original de minutos write_eeprom(END_SEG,VALOR_SEG);//recupera valor original de segundos segundos=VALOR_SEG; minutos=VALOR_MIN; } } if(sw_desbloqueia == 0){//se interruptor secreto foi acionado para liberar disable_interrupts(int_timer0); rele=1; f_pisca=0;//desliga piscadas do led led=1; pisca=0; if((read_eeprom(BLOQ))||(read_eeprom(DISP))){ write_eeprom(DISP,0);//sai da condição de disparo write_eeprom(BLOQ,0);//sai da condição de bloqueio write_eeprom(END_MIN,VALOR_MIN);//recupera valor original de minutos write_eeprom(END_SEG,VALOR_SEG);//recupera valor original de segundos segundos=VALOR_SEG; minutos=VALOR_MIN; } } if(!sw_temp){//dispara se porta do motorista foi aberta (ou acionado botão secreto) if(!read_eeprom(DISP)&& !read_eeprom(BLOQ)){ led=0; write_eeprom(DISP,1);//entra na condição de disparado // segundos=0; // minutos=0; enable_interrupts(int_timer0);//contando tempo pelo timer 0 gie=1; } } if(f_pisca){ //pisca se veiculo estiver bloqueado if(t0if){ t0if=0; pisca++; if(pisca>=VALOR_FREQ_PISCA){led=!led; pisca=0;} } } }//for(;;) }//main()
  3. Fala Galera.. Eu montei esse circuito aqui, só que em vez de ser alimentado por uma bateria de 9v, queria que ele fosse alimentado pelo phantom power da mesa de som 48v. Vir que o LM358 suporta ate 32v, como eu limitaria essa tensão de 48v para o LM358 suportasse? O que preciso modificar nesse circuito para que ele funcione com os 48v? O que você me sugerem? Desde já lhe agradeço
  4. Tava vendo aqui esse circuito ele carregar muito lento, como faço para ele carregar mas rápido já que estou usando um trago de 3A?
  5. Além de substituir o LM317 para um de 3 Amperes, teria que substituir o Bd139 para um de 3 Amperes também né ? Qual seria um substituto para o Bd139 ?
  6. Boa tarde amigos, Estou querendo fazer um carregador automático para carregar baterias de carro, e pesquisando na internet achei um que me interessou, gostaria da ajudas de vocês caso precise modificar o circuito, pois tenho pouco conhecimento de eletrônica. No circuito que tenho utilizar um transformador de 15 + 15 de 1A e o que eu tenho é de 15 + 15 de 3A, eu teria que substituir o LM317 por outro ou posso usar ele assim mesmo? Espero que alguém posso ajudar com alguma dica. O circuito é esta abaixo.
  7. Bom dia.. Estava querendo um circuito pré-amplificador para microfone de eletreto que funcione tanto com o Phantom Power da mesa de som como com uma pilha de 1,5V. Por acaso alguém tem um esquema de um circuito assim.?
  8. CONSEGUIR ACHA O CIRCUITO QUE ESTAVA QUERENDO.. ALGUÉM PODERIA ME AJUDAR A MONTAR ESSE CIRCUITO, POIS NÃO ESTOU ACHANDO ESSE TSM9118 E O TSM9119. SE ALGUÉM SOUBER DE UM EQUIVALENTE PARA SUBSTITUIR ELES..
  9. Eu queria fazer um circuito para não ficar testando as pilhas.. O circuito que eu tenho alimentado é de um microfone de eletreto, ai queria fazer um outro circuito para indicar quando a pilha estivesse fraca, igual aos que tem nos microfones sem fios que acende um led quando a pilha esta fraca..
  10. Boa tarde.. Sou novo por aqui, e gostaria da ajuda de vocês. Tenho um circuito que é alimentado por 2 pilhas AA de 1,5V dando o total de 3V, estava querendo fazer um circuito com um led para indicar quando essas pilhas estiverem fracas, ou seja, quando as pilhas estiver boas o led fique apagado ai quando começarem a ficarem fraca o led acende.. na internet encontrei esse circuito mas a cima de 9V tentei modificar os valores e não conseguir fazer com 3V. Sera que alguém poderia me ajudar. Desde já agradeço

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...