Ir ao conteúdo

Posts recomendados

Postado

Olá amigos

sou novo poraqui

Sou amante do mundo da eletrônica, gosto de criar, estou tentando fazer um botão start stop para meu carro

To usando o pic 16f628a e o compilador ccs

se possível como vocês são mestre nisso poderiam me ajudar?

Algo do tipo

Pressionando o botão uma vez liga o painel de instrumento, num segundo toque da a partida

Como se no primeiro toque acendesse um led e permaneceria aceso( painel ligado ) e um segundo toque pulsava um segundo led (partida do motor) e um terceiro toque desligaria o primeiro led deligava o carro

Grato pela atenção de todos

Postado

@JONATHA19820

 

Segue o código, claro, bem simplesinho(é tão simples que vai completo, é só compilar e gravar):

#include <16f628a.h>
#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO,NOPROTECT,BROWNOUT,NOMCLR,NOLVP

void main(void){

int conta=0;

while(1){
  if(input(PIN_A3)){
  	while(input(PIN_A3)){}//evita duplo aperto no botão
	conta++;
    if(conta > 3){
      conta=0;
    }
  }
	  	
  if(conta >= 1){//liga o painel
    output_high(PIN_B1);
  }else{
	output_low(PIN_B1);
  }
	
  if(conta == 2){//liga o motor por 1 segundo
	output_high(PIN_B2);//liga o motor de partida
	delay_ms(1000);//permanece ligado por 1 segundo
	output_low(PIN_B2);//desliga o motor de partida
   	conta=3;//trava o contador e se for pressionado 
            //o botão novamente, desliga tudo
  }

 }
}

 

Funciona assim:

Microcontrolador sem cristal externo(vai usar o interno -> INTRC_IO)

Botão -> pino A3

Painel -> pino B1

Partida -> pino B2

 

Espero que ajude!!

 

 

 

  • Curtir 2
Postado

 

 

 

Cara muito show
Obrigado pele ajuda
+ Vou abusar um pouco + dos seus conhecimentos
Desta forma toda vez que eu quiser ligar meia chave vou ter que dar a partida no carro
Precisaria de uma porta independente

ex: se aperta o botão uma vez liga o painel, se pressionado de novo desliga, para acionar a partida teria que pisar no freio
No estágio da partida teria que ser no modo pulso (desliga o arranque só quando soltar botão)

1 toque liga o painel
2 toque desliga o painel (ou dar a partida se o pedal estiver pressionado)
obs:o arranque só para de girar se eu soltar o botão, pois alguns carros têm dificuldades para pegar pela manhã, por isso precisa força o arranque até pegar.
3 toque desliga tudo

Muito obrigado pela ajuda
Compartilhar o conhecimento e uma das grandes virtudes do ser humano
Valeu.

Aguardo ajuda.

 

 

 

Postado

@JONATHA19820

 

Óh mais que isso aqui eu vou cobrar viu!!! E o preço é caro: 50 conto de crédito no celular mais a grana do busão kkkk.

 

#include <16f628a.h>
#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO,NOPROTECT,BROWNOUT,NOMCLR,NOLVP

void main(void){

int conta=0;

while(1){
  if(input(PIN_A3)){
    if(conta==0){//esta rotina serve para impedir pressionamento repetitivo do botão
      while(input(PIN_A3)){}//se estiver ligando o painel ou 
                 //desligando tudo, usa esta trava para botão
    }
    conta++;
    if(conta >= 3){
      conta=0;//desliga tudo
    }
  }
	  	
  if(conta >= 1){//liga o painel
    output_high(PIN_B1);
  }else{
	output_low(PIN_B1);
  }
	
  if(conta == 2){ 
  	if(input(PIN_A4)){//se o freio estiver pressionado...
    	while(input(PIN_A3)){
      		output_high(PIN_B2);//liga o motor de partida enquanto o botão estiver pressionado
    	}
		output_low(PIN_B2);//desliga o motor de partida
   	}else{//se o freio não estiver pressionado, desliga tudo...
        conta=0;  //desliga tudo
    }
  }

 }
}

 

Tá na mão, fiz de cabeça, logo, terá que testar pra conferir a lógica da coisa.

 

O que mudou é que agora tem mais um botão ligado no pino A4(freio).

 

Boa sorte.

  • Curtir 2
Postado

Cara você e fera mesmo
to a tanto tempo tentando fazer isso e você fez em poucos minutos

Amigo simulei aqui no proteus e encontrei só dois pequenos erros

1 ao acionar o botão ele liga, e ao acionar de novo ele não desliga(simulando, ligando e deligando meia chave)
2 ao acionar o botão com o freio acionado o (A4) ele pulsa legal + quando tiro o pé do freio ele desliga tudo
Era para desligar só se tivesse um terceiro toque no botão
não quando tiro o pé do freio
assim teria que andar com pé no freio kkkk
Conto com sua ajuda e paciência.
Grato  + uma vez pela ajuda

 

Obrigado ViniciusKruz

adicionado 8 minutos depois

To tentando fazer um botão start stop
Sei que poderia comprar um + não e mais emocionante você mesmo fazer
Assim adquirimos novos conhecimentos e fazemos novas amizades.

Funcionamento dele

1 toque no botão ele liga o painel do carro
2 toque ou ele da a partida no carro ou desliga tudo
+ pra dar a partida o pedaldo freio tem que esta pressionado
para desligar basta dar um terceiro toque
se puder me ajudar agradeço
to com a cabeça a 1000
Valeu.

adicionado 18 minutos depois

image botão start.bmp

adicionado 23 minutos depois

imagem 2 start.pdf

Postado

@JONATHA19820

 

Certo, refiz as correções, agora ficou assim:

 

Apertando e soltando o botão uma vez:

>Liga o painel 

 

Apertando e soltando o botão pela segunda vez:

>Sem o freio apertado: desliga o painel

>Com o freio apertado: aciona o motor de partida pelo tempo em que o botão ficar apertado

 

Apertando o botão pela terceira vez:

>desliga o painel

 

Coloquei uma proteção a mais: se o motor estiver ligado, o motor de partida não poderá ser acionado, veja no esquemático como ficou...

 

onof.png.3bff429e9c67972c30ebd48e55094b85.png

 

Demorou um pouco porque tive que instalar as ferramentas pra testar na simulação.

 

Segue o código:

 

 

 

adicionado 1 minuto depois
#include <16f628a.h>
#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO,NOPROTECT,BROWNOUT,NOMCLR,NOLVP


int conta=0;



void desligaPainel(){
   output_low(PIN_B1);
}

void ligaPainel(){
   output_high(PIN_B1);
}

void partida(){
      if(input(PIN_A4)){//se o freio estiver pressionado...
         while(input(PIN_A3)){
            if(!input(PIN_A2)){//se o motor estiver funcionando, o motor de partida não poderá ser acionado
               output_high(PIN_B2);//liga o motor de partida enquanto o botão estiver pressionado
            }
         }
         output_low(PIN_B2);//desliga o motor de partida
      }else{
         conta=0;
         desligaPainel();
         while(input(PIN_A3)){}
      }
  
}

void aciona(){
   switch(conta){
      case 0: 
              desligaPainel();
              while(input(PIN_A3)){}
         break;
      case 1: 
              ligaPainel();
              while(input(PIN_A3)){}
         break;
      case 2: 
              partida();
         break;
  }
}


void main(void){

 while(1){
  if(input(PIN_A3)){
    conta++;
    aciona();
  }
  
 }
}

 

adicionado 11 minutos depois

Opa, detectei um bug na rotina de partida, troca ela no código por esta:

 

void partida(){
      if(input(PIN_A4)){//se o freio estiver pressionado...
         if(!input(PIN_A2)){//se o motor estiver funcionando, o motor de partida não poderá ser acionado
            while(input(PIN_A3)){
               output_high(PIN_B2);//liga o motor de partida enquanto o botão estiver pressionado
            }
         }
         output_low(PIN_B2);//desliga o motor de partida
      }else{
         conta=0;
         desligaPainel();
         while(input(PIN_A3)){}
      }
  
}

 

Sem esta correção, assim que o alternador começar a gerar carga, o micro vai entender que já deu partida e vai desligar o motor de arranque.

Postado

Cara genial, para você pode ser simples + para mim iria demorar uma eternidade para chegar nessa perfeição.
Com essa proteção extra que você criou tive outra ideia, vou usa-la como uma espécie de bloquei do motor de partida, tipo um ante roubo
ja que estou com uma ideia maluca de fazer uma engenhoca completa para o meu carro.
Vou fazer um alarme com reconhecimento do controle, junto a ele este projeto que o amigo fez, assim posso usar esta outra proteção junto com o alarme
Tenho outros projetos prontos, agora vou juntar tudo num só
Obrigado +1 vez pela ajuda
Assim que tiver pronto posto aqui como ficou.
Grato pela ajuda (ViniciusKruz)

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

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...