LusoRobótica - Robótica em Português

Sistemas específicos => 8051 => Tópico iniciado por: ivitro em 27 de Agosto de 2010, 13:29

Título: [AJUDA] temporização controlo externo
Enviado por: ivitro em 27 de Agosto de 2010, 13:29
ola a todos.


já tinha dito noutro topico que estou a fazer um mini computador de bordo para o carro e que precisava de alguma ajuda no codigo!


então é assim , estou a pegar no sinal que vai para os injectores do carro e a medir o tempo em que estão abertos num determinado periodo!

o sinal que vai para os injectores tem este aspecto:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimagefrog.net%2Fthumb%2Fthumb_e5eaa988.jpg&hash=e167ad46d086c0161c2f68f8dd387e5cc0b98aea) (http://imagefrog.net/show.php/111463_2000rpmquente.BMP)

e o impulso este:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fimagefrog.net%2Fthumb%2Fthumb_e85d6c98.jpg&hash=e2d1eb2c3c8354c8bf441a57ea8d4965a7412a51) (http://imagefrog.net/show.php/111464_DS0012.BMP)

depois de tratar o sinal ele vai ficar entre 5 e 0 volts


o meu codigo é o seguinte:

int temp_injec()
{

   unsigned int valor;   

     TMOD = (TMOD & 0xF0) | 0x09;    //temp modo1 a 16bits temporizador com controlo externo
   TH0 = 0;   
     TL0 = 0;       //limpa os temporizadores

     TR0 = 1;        //liga a temporização   
     
       while(!INT0);     // espera pelo primeiro impulso

   LCD_delay(100);   //tempo de 100ms
   TR0 = 0;      // desliga o temporizador
   
   valor=TH0*65/256;


   cursorxy(6, 10);
      putchar(((valor)/10)+0x30);
 
      putchar(((valor)%10)+0x30);
   
   return valor;      
}         

podem me dizer se está bem assim?
Título: Re: [AJUDA] temporização controlo externo
Enviado por: senso em 27 de Agosto de 2010, 14:06
Esse porgrama é suposto fazer o que mesmo?
Título: Re: [AJUDA] temporização controlo externo
Enviado por: ivitro em 27 de Agosto de 2010, 15:59
ola senso...

a ideia é ler o tempo total em que a onda está a  nivel 0 durante 100ms.


porque varia durante os impulsos uns são mais largos que outros, dependendo de vários factores!

eu fiz esse programa e simulei com um pwm mas o resultado não me convenceu :S



preciso tambem de outra função para ler o tempo entre impulsos...mas primeio vou tentar fazer depois se precisar de ajuda posto
Título: Re: [AJUDA] temporização controlo externo
Enviado por: senso em 27 de Agosto de 2010, 16:03
Queres portanto fazer um espécie de centralina e controlar tu os injectores?
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264932928/all (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264932928/all)

Tinha aqui um projecto mesmo bem documentado, mas perdi os meus favoritos :(
Título: Re: [AJUDA] temporização controlo externo
Enviado por: ivitro em 27 de Agosto de 2010, 16:20
nao eu quero é medir a gasolina l/100km tas a ver?



o grafico ja é medido apartir do injector (mas tenho que medir porque medi em AC e é em DC)
Título: Re: [AJUDA] temporização controlo externo
Enviado por: senso em 27 de Agosto de 2010, 16:22
E sabes qual é o débito dos teus injectores e como é que ele varia consoante o tempo que eles estão activos?
Título: Re: [AJUDA] temporização controlo externo
Enviado por: ivitro em 27 de Agosto de 2010, 18:18
o debito ainda nao sei! quanto a variação deles quando activos estou a entrar no suposto que estão todos aberto (acho que é isto que me perguntas-te)


o debito so tenho que ver a ref deles ou então vou a uma casa de material auto e dizem me lá.... o que ainda nao sei e se calhar tenho que medir é a pressão da bomba para ter a certeza do debito
Título: Re: [AJUDA] temporização controlo externo
Enviado por: ivitro em 29 de Agosto de 2010, 19:55
já encontrei o problema!


o código está bem, a rotina de delay é que está mal e tem que ser corrigida
Título: Re: [AJUDA] temporização controlo externo
Enviado por: senso em 30 de Agosto de 2010, 14:50
Estás a fazer tu uma rotina de delay?
Porque?Todos os compiladores oferecem rotinas de delay calibradas e que sabes que funcionam, tu criares uma rotina, pelo menos em gcc é o mesmo que mandar código para o lixo porque o optimizador vê que é uma rotina sem qualquer utilidade e remove-a, penso que tens de declarar as variaveis usadas como volatile para o compilador não remover o código.
Título: Re: [AJUDA] temporização controlo externo
Enviado por: ivitro em 30 de Agosto de 2010, 16:04
eu estou a programar no keil... pois realmente fiz a rotina para o uma coisa e ela está muito mais lenta do que eu pensava.


como posso ir buscar essas rotinas já calibradas sabes me dizer?

Título: Re: [AJUDA] temporização controlo externo
Enviado por: senso em 30 de Agosto de 2010, 17:02
keil?
Para que micro-controlador?
Isso lês o manual do compilador, deve ser algo do género delay_ms() ou delayms() ou delay().
Título: Re: [AJUDA] temporização controlo externo
Enviado por: ivitro em 30 de Agosto de 2010, 18:36
e um at89s52 que tou a utilizar...

tenho que fazer o condicionamento do sinal que vai para os injectores...so estou na duvida por onde lhe ei-de  pegar :S, se faço um limitador de tensão ou faço um interruptor com um transistor...a onda está no primeiro post
Título: Re: [AJUDA] temporização controlo externo
Enviado por: senso em 30 de Agosto de 2010, 21:35
Pois isso é x51 não é?
Mas procura no manual por delay que de certeza que tem.
Título: Re: [AJUDA] temporização controlo externo
Enviado por: ivitro em 30 de Agosto de 2010, 21:49
vou procurar lá..espero em breve poder colocar aqui o resultado final ;)