# Medidor de velocidad para vehiculos



## ohbuiles (Nov 16, 2005)

Amigos del foro , termine el 5 nivel de tecnologia electrónica (6 niveles) y es hora de poner en practica lo aprendido y aprender a aprender , necesito ayuda con un proyecto , lo voy a explicar lo mas breve y concisamente posible.

Estoy empezando con los PIC (16F84), no se lenguajes de programación pero si se algo de logica y algoritmos.


Titulo: *Medidor de velocidad para vehiculos*

Necesito medir la distancia recorrida y tiempo de un vehículo, que en marcha ( el motor, pues el vehiculo nunca se moverá ) y con el contacto de las ruedas me accione un rodillo. Se debe monitorear los datos en un PC

Pienso tomar una señal del rodillo (diámetro conocido) con un sensor infrarrojo ranurado, accionado por una rueda dentada incrustada en un extremo del rodillo.

*Pregunta1:* Con el diametro del rodillo y con el numero de veces que se accione el sensor, puedo calcular la distancia recorrida todo con el 16F84.

*Pregunta2:* Para velocidad necesito una medición de tiempo, un reloj? se puede con el 16F84 ó 16F877

*Pregunta3:* En que lenguaje o programa puedo hacer una interfaz para visualizar en un PC los datos obtenidos? los datos los debe transmitir el PIC u otro circuito.

Gracias chicos, este proyecto es importante para mi, y le dedicare todo el tiempo y seriedad que pueda, gracias por sus comentarios y ayuda.


----------



## Marcelo (Nov 16, 2005)

Saludos ohbuiles,



> Necesito medir la distancia recorrida y tiempo de un vehículo, que en marcha ( el motor, pues el vehiculo nunca se moverá ) y con el contacto de las ruedas me accione un rodillo. Se debe monitorear los datos en un PC
> 
> Pienso tomar una señal del rodillo (diámetro conocido) con un sensor infrarrojo ranurado, accionado por una rueda dentada incrustada en un extremo del rodillo.



Solo como referencia o quizás base de tu diseño, puedes ver este proyecto muy parecido al tuyo:

http://es.geocities.com/microplans/cuentakm.htm  (bonito proyecto para ponerlo en nuestro carro, por cierto.)



> Pregunta1: Con el diametro del rodillo y con el numero de veces que se accione el sensor, puedo calcular la distancia recorrida todo con el 16F84.



Si. Debes conocer la distancia recorrida por el rodillo entre pulso y pulso (digamos que la llamamos DP). Luego puedes calcular la distancia total contando los pulsos con el micro, desde el inicio hasta el final del recorrido o del tiempo de interés y por último, haciendo una simple multiplicación para obtener el valor:

Dtotal = DP * #pulsos.

Para el tipo de sensor que propones, seguramente tendrás un error debido al deslizamiento y desgaste del rodillo sobre la rueda. Éste se pudiera calcular empíricamente haciendo recorrer el sistema muchas veces, exactamente el mismo tiempo o trayecto y contando en cada caso el número de pulsos. Con las variaciones que obtienes en esos conteos puedes estimar el error. Un acople de tipo "transmisivo" o por engranajes,  pudiera ser mejor. El error lo puedes calcular y mostrar desde el programa del PC, no haría falta hacerlo en el del PIC.



> Pregunta2: Para velocidad necesito una medición de tiempo, un reloj? se puede con el 16F84 ó 16F877



Si, con los micros puedes controlar tiempos y hacer relojes. 
Debes recordar que cada instrucción de programa dentro de ellos, consumen ciclos de reloj (del oscilador del micro) y por lo tanto deberás considerar estos retardos cuando diseñes tus rutinas de conteo de tiempo. Esto está bastante documentado en Internet e inclusive puedes encontrar rutinas ya construidas para una frecuencia de reloj del microprocesador determinada (4Mhz por lo general).



> Pregunta3: En que lenguaje o programa puedo hacer una interfaz para visualizar en un PC los datos obtenidos? los datos los debe transmitir el PIC u otro circuito.



¿Cual dominas?. En cualquier lenguaje que desees. Lo importante es que éste pueda manejar los puertos de comunicación del PC (USB, Paralelo, Serial, etc.) y cualquiera de ellos lo puede hacer hoy en día.

Facilidad de programación y rapidez de desarrollo: Visual Basic.
Potencia de programación, rapidez de ejecución y programas ejecutabes más pequeños: C++, Delphi.

Saludos,
Marcelo.


----------



## maunix (Nov 16, 2005)

ohbuiles dijo:
			
		

> Titulo: *Medidor de velocidad para vehiculos*
> 
> Pienso tomar una señal del rodillo (diámetro conocido) con un sensor infrarrojo ranurado, accionado por una rueda dentada incrustada en un extremo del rodillo.



Bueno, si tu lo dices... El sensor lo piensas armar tu ? o piensas comprar un encoder?



> *Pregunta1:* Con el diametro del rodillo y con el numero de veces que se accione el sensor, puedo calcular la distancia recorrida todo con el 16F84.



Si, pero debes tener muy en claro como piensas trabajar.  Te aconsejo siempre llevar todo a variables ENTERAS, es decir no utilices coma flotante.




> *Pregunta2:* Para velocidad necesito una medición de tiempo, un reloj? se puede con el 16F84 ó 16F877



Si, ambos tienen timers internos proporcionales al CLOCK que le pongas.



> *Pregunta3:* En que lenguaje o programa puedo hacer una interfaz para visualizar en un PC los datos obtenidos? los datos los debe transmitir el PIC u otro circuito.



Cualquiera, yo personalmente uso Delphi.  

El puerto serie suena bien para tu proyecto, lo conectas con un MAX232 y de ahí a la PC.  Es algo simple.

Aqui quisiera detenerme un poco.  Si utilziarás una PC te aconsejo que lo tedioso de los cálculos lo hagas con ella. En un lenguaje de alto nivel es facil hacer A * B . En un pic en assembly no lo es... Entonces, te aconsejo que el PIC se remita a capturar datos (cantidad de pulsos) .y que esto lo envíe a la pc una vez terminada la captura.

En la PC puedes ya tener almacenado los datos del radio del eje y con eso calcular la distancia.

La velocidad sería idéntica forma.  Puedes tomar cuanto pulsos de alguno de los timer te lleva realizar 10 vueltas (para tener mas precisión y no lidiar con los valores instantaneos de aceleracion, salvo que también necesites esto).  Luego este dato lo pasas también a la PC y nuevamente es la PC la que calculará los datos de la velocidad.


Espero haber sido util y claro


----------

