Ir ao conteúdo

Partida automotiva em c


jerry8363

Posts recomendados

Postado

Ola amigos, to tentado fazer um programa para uma partida remota de automoveis, como sou iniciante ta sendo extremamente difícil mais cheguei ate aqui

Código:

while(true)
{
if(!input(pin_b0))// chave geral acionamento
{
output_high(pin_a0);// funcionamento motor
output_high(pin_a1);// acionamento motor arranque
delay_ms(5000);//tempo maximo funcionamento
output_high(pin_a2);// sinal final tempo funcionamento motor
delay_ms(400);// sinal final funcionamento remoto
output_low(pin_a0);// desliga motor
output_low(pin_a1);// desliga motor arranque
output_low(pin_a2);// desliga buzzer tempo
}
}
}

bom, o que quero fazer basicamente é o seguinte:

Da partida no motor

Manter ele ligado por um determinado tempo (inicialmente 10 minutos)

poder desligar o motor a qualquer momento, dentro desse tempo dos 10 minutos

emitir um bit a cada minuto do tempo decorrido

mais ja li e reli topicos e apostilas mais as duvidas so aumentam, se alguma alma caridosa (rsrsrsrsrsr) poder me ajudar serei muito grato.

realmente necessito de uma força

Postado

Deu p ter uma ideia superficial do q queres, mas faltou muita informaçao importante, linguagem , compilador (provavel ccs), microcontrolador usado etc.

O sinal para saber qd iniciar a partida será nivel baixo?

o que seria saida A0> "funcionamento do motor", se nesse momento ele nem esta ligado ainda?

bom e o mais elucidar o caso... abraço..

Postado

Amigo Cesarlg, desculpe pela falta dessas informaçoes, to fazendo em linguegem C, o compilador é o CCS (rsrsrsrsrs), o PIC é o 16F877A, pois como falei sou iniciante e nesse caso preferi começar com ele, o sinal de partida sera em nivel baixo, a saida A0> "funcionamento do motor" csera a saida que aciona o rele pra manter o motor funcionando pelo tempo determinado, squiser mais informaçao so perguntar, obrigado pelo interesse em ajudar.

Postado

Bom. tentei escrever algo aqui , mas da p escrever de outras formas, tente entender o codigo e va perguntando.. Ali de uma maneira geral eu estou usando o timer1 q faz a contagem do tempo. Se existir erros, vamos corigindo .. Repare tb q alguns dos pinos q declarei sao diferentes daqueles do seu codigo. Costumo nao usar as portas analogicas se esta sobrando pinos. Tb declarei o lcd e algumas mensagem e tb ver a questao do tempo e execuçoes, mas falta aprimorar . se nao precisar descarte as linhas vinculadas ao display. ok..

E MUITO CUIDADO! qd se fala em partida remota automotiva pode ser desastrosas e pode casar serios acidente,, portanto CAUTELA.. e se nao tiver firmeza no q esta fazendo, simplesmente NAO faca. Sao só palavras de um amigo ok!

#include <16F877A.h>

#FUSES NOWDT

#FUSES XT

#FUSES PUT

#FUSES NOPROTECT

#FUSES NODEBUG

#FUSES NOLVP

#FUSES NOCPD

#use delay(clock=4000000)

#include <lcd.c>

#define botao_partida PIN_b0

#define ativo_motor PIN_b1

#define motor_partida PIN_b2

#define buzzer PIN_b3

int16 q;

int seg=0,min=0;

#int_TIMER1

void temp1s(void)

{

q++;

set_timer1 (3036);

}

void bip()

{

output_high(buzzer);

delay_ms(100);

output_low(buzzer);

delay_ms(500);

}

void main()

{

bip();

lcd_init();

setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8);

set_timer1 (3036);

disable_interrupts(INT_TIMER1);

enable_interrupts(global);

while(true)

{

seg=q/2; // transforma q a 2hz em segundo a 1hz

if (seg==60) // qd completar 60 seg

{

q=0; //zera o q

seg=0; //zera o segundos

min++; // incrementa os minutos

}

printf (lcd_putc, "\f %02u:%02u",min,seg);

delay_ms(200);

if(!input(pin_b0)) // se eu tiver com sinal em estado baixo

{

output_high(ativo_motor); // deixa o ativo para partida

printf (lcd_putc, "\nPronto");

delay_ms(500); // aguarda

enable_interrupts(INT_TIMER1); // inicia a contagem do tempo

output_high(motor_partida); // liga o motor de partida

printf (lcd_putc, "\n LIGANDO");

delay_ms(2000);

}

if (seg==5 && min ==0) // depois de 5 segundos do primeiro minuto

{

bip(); // da um bip

output_low(motor_partida); // e desliga o motor de partida

printf (lcd_putc, "\n MOTOR LIGADO"); // Incluir uma condicao de sensor de motor funcionando

delay_ms(1000);

}

if(seg==59) // cada minuto

{

bip(); // emite um bip

}

if(min>=10) // qd completar 10 minutos

{

output_low(ativo_motor); // desliga o ativo motor

disable_interrupts(INT_TIMER1); // desliga qq contagem de tempo

q=0; // zera o contador

seg=0; //zera o segundos

min=0; //zera os minutos

printf (lcd_putc, "\n Motor desligado");

delay_ms(1000);

}

}

}

IMAGEM DO CIRCUITO EM:

http://www.4shared.com/photo/x0PC1TfG/Sem_ttulo__1_.html

Postado

ola cesarlg, vou analisar e estudar o codigo, pois muita coisa que escreveu eu nao tenho a menor ideia do que se trata (rsrsrsrrs), mais chego la, e te falo, quanto a ter firmeza e conhecimento no que to fazendo, isso eu tenho de sobra, so nao consegui fazer a partida remota com programaçao, fiz com capacitores e reles, mais quero aprimorar, te dou noticias

Postado

ola cesar, compilei o codigo que me mandou, e observei dois problemas.

1 no segundo acionamento da partida, o motor de partida fica ligado ate o final do temo de funcionamento

2 o motor nao desliga quando aperto o botao apos a partida, so no final do tempo decorrido

nao sei mandar arquivo por aqui, pois te mandaria o esquema que tenho no proteus

Postado

Realmente contem esses erros! Bom: acredito que entendeste o q escrevi ali.. é claro q existem outras maneiras.. Mas assim .. eu resumiria o q ta escrito ali..

1. tire todos as linhas que estão voltadas ao lcd, inclusive os delays.

2. incluiria uma variavel com condicao p alternar entre 0 e 1 ao aperto da partida..

3. depois qd dou a partida variavel fica em 1 e execute apenas a temporizacao, senao (else) cancela a temporizacao e volta os pinos em estado baixo e zere qualquer variavel.

4. inclua uma condicao para qd seg=1 e min =0, ligar a start e motor de partida.

5. no mais so acrecente qd estiver em 10 minutos a forcar a variavel q criou ficar em 0.

Espero q entendeste,, maos a obra, se quiser mais ajuda só avisar.

p anexar imagens va a resposta avancada e la tem a opcao de inserir imagem, ou hospede um site e passe o endereço (Acredito nao estar desrespeitando as regras do site kkk)

abraço

Arquivado

Este tópico foi arquivado e está fechado para 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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!