Você está na página 1de 6

Projeto Velocimetro

Dois laos distantes 1 metro. O PIC ir medir quantos pulsos de relogio foram gastos para atravessar os dois.
Velocidade maxima do nosso velocimetro 320 km/h ( 88,88 m/s )
88,88 m ----------- 1 S
1 m ----------- x S
x = 1/88,88 S ou ~0,01123 S ou ~11,23 mS
A 320 km/h um veiculo leva 11,23 mS para atravessar os laos.

320 pulsos de 35,1 uS = 0,01123 S = 320 Km/h


Nunca contaremos menos de 320 pulsos pois assim a velocidade seria alem dos 320 km/h!
pulsos
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340

km/h
321
320
319
318
317
316
315
314
313
312
311
310
309
308
307
306
305
304
303
303
302

m/s
89,0064
88,7291
88,4536
88,1797
87,9076
87,6371
87,3683
87,1011
86,8355
86,5716
86,3092
86,0485
85,7893
85,5317
85,2756
85,0210
84,7680
84,5165
84,2664
84,0179
83,7707

s/m
0,011235
0,011270
0,011305
0,011340
0,011376
0,011411
0,011446
0,011481
0,011516
0,011551
0,011586
0,011621
0,011656
0,011692
0,011727
0,011762
0,011797
0,011832
0,011867
0,011902
0,011937

mS/m
11,2351
11,2703
11,3054
11,3405
11,3756
11,4107
11,4458
11,4809
11,5160
11,5511
11,5862
11,6214
11,6565
11,6916
11,7267
11,7618
11,7969
11,8320
11,8671
11,9022
11,9373

diferena (uS)
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098
35,1098

A frequencia com periodo de 35,1 uS 1/35,1uS = 28490 Hz ou 28,49 kHz

Colocando um oscilador de 28490 Hz no PIC, assim que o veiculo atingir o lao 1 comeamos a contar os pulsos
nesse pino e paramos assim que atingir o lao 2.
A quantidade de pulsos vezes 35,1 uS o tempo gasto para atravessar os laos
A velocidade ser:
V= 1 metro / pulsos * 35,1uS resulta em m/s.
Para termos em km/h basta multiplicar por 3,6
O pior caso ser quando o veiculo estiver muito lento a por exemplo 1 km/h = 0,2777 m/s ou 3,6 s para atravessar os
laos.
Em 3,6 segundos teremos 3,6/0,0000351 = 102564 pulsos
Nossa maior variavel uma long int que conta at 65535.
Assim 65535 pulsos equivale a 2 km/h.
Assim qualquer coisa maior que 65535 ser 1 km/h ou 0 km/h.
O PIC deve contar os pulsos assim que l1 for acionado e parar de contar assim que l2 for acionado.
Se a contagem ultrapassar 65534 porque o veiculo esta muito lento.
Paramos de contar e avisamos no visor.

#include <16f628a.h>

#use delay (clock=4000000)


#fuses nowdt, nobrownout, noprotect, nolvp, xt, mclr, put
#byte ra=0x05
#byte rb=0x06
#bit
#bit
#bit
#bit

l1=rb.0
l2=rb.1
pul=rb.2
led=rb.3

#include "c:\flex_lcd.c"
long int pulsos;
int fleg;
int dm, m, c, d, u;
main()
{
set_tris_a(0b00000000);
set_tris_b(0b00000111);
lcd_init();
estarte:
pulsos=0;
fleg=0;
led=0;
inicio:
if(l1==1)goto inicio;
led=1;
le:
if(pul==1 && fleg==0) pulsos++, fleg=1;
else goto le;
if(pulsos==65535) goto parada;
zera:
if(pul==0 && fleg==1)fleg=0;
else goto zera;
if(l2==1)goto le;
led=0;
mostra:
dm=pulsos/10000;
m=(pulsos-dm*10000)/1000;
c=(pulsos-dm*10000-m*1000)/100;
d=pulsos-(dm*10000)-(m*1000);
d=(d-(c*100))/10;
u=pulsos-dm*10000-m*1000-c*100-d*10;
lcd_gotoxy(1,1);
lcd_putc(0x30+dm);
lcd_putc(0x30+m);
lcd_putc(0x30+c);
lcd_putc(0x30+d);
lcd_putc(0x30+u);
lcd_putc(" pulsos

");

goto estarte;
parada:
lcd_gotoxy(1,1);
lcd_putc("Veiculo lento");
goto estarte;
}

Para calculo da velocidade:

#include <16f628a.h>
#use delay (clock=4000000)
#fuses nowdt, nobrownout, noprotect, nolvp, xt, mclr, put
#byte ra=0x05
#byte rb=0x06
#bit
#bit
#bit
#bit

l1=rb.0
l2=rb.1
pul=rb.2
led=rb.3

#include "c:\flex_lcd.c"
long int pulsos;
int fleg;
int dm, m, c, d, u, veloc;
main()
{
set_tris_a(0b00000000);
set_tris_b(0b00000111);
lcd_init();
estarte:
pulsos=0;
fleg=0;
led=0;
inicio:
if(l1==1)goto inicio;
led=1;
le:
if(pul==1 && fleg==0) pulsos++, fleg=1;
else goto le;
if(pulsos==65535) goto parada;
zera:
if(pul==0 && fleg==1)fleg=0;
else goto zera;
if(l2==1)goto le;
led=0;

mostra:
dm=pulsos/10000;
m=(pulsos-dm*10000)/1000;
c=(pulsos-dm*10000-m*1000)/100;
d=pulsos-(dm*10000)-(m*1000);
d=(d-(c*100))/10;
u=pulsos-dm*10000-m*1000-c*100-d*10;
lcd_gotoxy(1,1);
lcd_putc(0x30+dm);
lcd_putc(0x30+m);
lcd_putc(0x30+c);
lcd_putc(0x30+d);
lcd_putc(0x30+u);
lcd_putc(" pulsos

");

velocidade:
veloc=(51282/pulsos)*2;
c=veloc/100;
d=(veloc-(c*100))/10;
u=veloc-c*100 -d*10;
lcd_gotoxy(1,2);
lcd_putc(0x30+c);
lcd_putc(0x30+d);
lcd_putc(0x30+u);
lcd_putc(" km/h

");

goto estarte;
parada:
lcd_gotoxy(1,1);
lcd_putc("Veiculo lento");
lcd_gotoxy(1,2);
lcd_putc("< 1 km/h
goto estarte;
}

");

Se o veiculo for longo maior que 1 metro, o programa s reiniciar quando l1 E l2 estiverem em 1.!

Conforme calculo:
V = 51282 / 726 pulsos = 70,6 x 2 = 141,2 km/h.

Você também pode gostar