Autor Tema: Distancia y velocidad  (Leído 4321 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TitoBlade

  • PIC10
  • *
  • Mensajes: 26
Distancia y velocidad
« en: 12 de Noviembre de 2007, 10:58:54 »
Hola muy buenas escribi un mensaje preguntando sobre el sensor de la rueda y demás ahora mi problema es el programar el PIC. Mi caso es que a traves de unos pulsos que entrarian en cualquier entrada digital quiero calcular la distancia y la velocidad.

Para la distancia, algo que se me ha ocurrido es tener un estandar de radio es decir preestablecido y colocar el sensor a esa distancia del radio. Es decir: El perimetro seria p=2*pi*r por tanto para tener un metro por cada vuelta dada tendria que colocar el sensor a unos 16 cm del centro e ir incrementando una variable por cada pulso (O puede que sea mejor tenerlo en un contador y despues mostrarlo cada 10 m ya que seria mareante ver aumentar de metro en metro la distancia). ¿Ahora el PIC se daría cuenta de todos los pulsos que entraran? ¿que Mhz seria necesario para que esto pudiese ser asi? Es lo que no me queda claro.

Para la velocidad se me ha ocurrido realizar una tabla dependiendo del tiempo ¿como programo el timer para que compare el dato con los datos de la tabla?

Muchas gracias y un saludo

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Distancia y velocidad
« Respuesta #1 en: 12 de Noviembre de 2007, 11:16:08 »
Dependiendo del diametro de tu rueda y la velocidad maxima a la que puedes medir, y la precision que quieras tener con el conteo (1 vuelta, 1/2 vuelta, 1/4 vuelta, etcetera), tendras una cantidad maxima de impulsos...
Este valor le das un margen de tolerancia y ya tienes la necesidad de conteo desde el pic.
Luego solo falta ver las posibilidades de hacerlo desde el pic. :mrgreen:
Ahi volvemos a ayudarte, cuando tengas los datos lo planteas... 8)
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Distancia y velocidad
« Respuesta #2 en: 12 de Noviembre de 2007, 13:54:45 »
Pero hay un error de concepto!, no interesa a que distancia coloques el sensor..., lo que si importa el "diametro" de la rueda ok?
aunque lo coloque a un centimetro, la rueda tendra que dar una vuelta completa... y el recorrido dependera de su diametro (* 3,14)  :mrgreen:

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Distancia y velocidad
« Respuesta #3 en: 12 de Noviembre de 2007, 14:35:10 »
No te preocupes por los MHz del PIC, incluso un PIC sencillito trabajando a 4MHz será suficiente.
Hagamos unos cálculos rápidos.

Imaginemos que la rueda es muy pequeña, por ejemplo, con un radio de 20cm.
Eso daría un perímetro de: 1 rev = 2 * PI * 0.2 = 1.25664 m.

Imaginemos que vas a rodar a supervelocidad, por ejemplo, a 500Km/h.

Tu rueda da estas vueltas por Km: 1000 / 1.25664 = 795.77
Y por tanto, da estas vueltas por hora: 795.77 * 500 = 397886.43

Traducido a RPS (revoluciones por segundo): 110.52

Un PIC de la familia 16F trabajando a 4MHz es capaz de procesar 1MIPS = 1 millón de operaciones por segundo.

O sea, que entre una revolución de tu rueda y la siguiente, el PIC podría ejecutar: 1000000/110.52 = 9048 instrucciones.

Vamos, que en un caso límite, al PIC le daría tiempo de fumarse un puro entre vuelta y vuelta...

Desconectado TitoBlade

  • PIC10
  • *
  • Mensajes: 26
Re: Distancia y velocidad
« Respuesta #4 en: 12 de Noviembre de 2007, 15:05:14 »
Cierto es...aggggg perdonad entonces debería tener digamos alguna tabla dependiendo de que diametro saber la distancia que recorre.
La distancia el ir comprobando cada activacion y desactivacion del bit a donde este conectado el receptor y la velocidad es tener un temporizador con 1 segundo de manera que cuento cuantos pulsos se han hecho en cada segundo y asi tendre a que velocidad va.
Ahora la teoría puede ser así creo...
Perfecto Nocturno el PIC lo veria todo sin problemas
Alguna manera de hacerlo? Es decir las variables pueden llegar a ser enormes si lo hago en metros...

Gracias y un saludo

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Distancia y velocidad
« Respuesta #5 en: 12 de Noviembre de 2007, 15:10:06 »
Que quieres contar en realidad??
Metros, kilometros, que??

De eso depende tambien el tipo de rueda... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Distancia y velocidad
« Respuesta #6 en: 12 de Noviembre de 2007, 16:44:36 »
Hola TitoBlade.

Para calcular la velocidad, solamente necesitás saber lo siguiente:

Distancia recorrida entre cada pulso(si es un solo sensor, sera igual a PI * diametro rueda);
Tiempo transcurrido desde el ultimo pulso.

Despues todo se reduce a hacer: Distancia Recorrida(m) / tiempo transcurrido(s) por ejemplo.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Distancia y velocidad
« Respuesta #7 en: 12 de Noviembre de 2007, 17:09:56 »
Hola TitoBlade, tengo vastante experiencia con velocímetros, odómetros, tacómetros, etc y la experiencia me dicta que las mejores maneras de realizar dichas mediciones son:

Velocímetro: mides el periodo entre pulso y pulso proveniente desde el sensor ubicado en la rueda, con el tiempo medido y el perímetro de la rueda ya puedes calcular la velocidad de desplazamiento. Para medir el periodo puedes usar el Timer1 de algún PIC que lo posea.

Odómetro: a cada pulso recibido por parte del sensor que se encuentra en la rueda, sumas el perímetro de la rueda a un contador dedicado a ese fin.

Espero te sea de guía, hay otros métodos y aunque más sencillos, vastante menos eficientes y exactos que los que te comento.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado TitoBlade

  • PIC10
  • *
  • Mensajes: 26
Re: Distancia y velocidad
« Respuesta #8 en: 13 de Noviembre de 2007, 12:41:11 »
Muchisimas gracias de antemano pero lo que no me queda claro Chaly29 es que como realizo por ejemplo lo de la velocidad es decir con el tiempo que tengo en el timer como hago la division velocidad=distancia/tiempo, tendria que tener una tabla con los datos precalculados verdad?.
Y otra cosa es por ejemplo como manejo decimales en el PIC, es decir que manera almaceno los datos.

Gracias y de nuevo un saludo

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Distancia y velocidad
« Respuesta #9 en: 13 de Noviembre de 2007, 13:06:00 »
Hola TitoBlade, para calcular la velocidad lo mejor es el uso de cálculos matemáticos y no las tablas. Por ejemplo:

Si la rueda posee un perímetro de 1.5mts y el tiempo entre pulsos es de 0.5 seg, entonces hacemos

segundos en una hora / periodo del pulso = cantidad de pulsos por hora
          3600              /            0.5          =             7200

Cantidad de pulsos por hora * perimetro de la rueda = velocidad actual
                7200                 *              1.5              =10800 mts/hora o lo que es lo mismo 10.8 Km/h



Con respecto al manejo de los decimales tienes 2 metodos:

1)   Realizar cálculos con rutinas de punto flotante

2)   Realizar los calculos con rutinas comunes y de tal manera que nunca poseas decimales, por ejemplo con los cálculos anteriores:

Como ya se que el resultado final quiero que posea un decimal despues del punto, lo que hago es multiplicar el primer dato por 10, con lo cual nos quedaría de la siguiente manera:

segundos en una hora / periodo del pulso = cantidad de pulsos por hora
          36000             /            0.5          =             72000

Cantidad de pulsos por hora * perimetro de la rueda = velocidad actual
                72000               *              1.5              =108000 mts/hora o lo que es lo mismo 108 Km/h


Pero como yo previamente habia multiplicado por 10, al resultado final le coloco el punto decimal una posición a la izquierda y quedaría 10.8 Km/h

Espero te sea de ayuda, un saludo.

Atte. CARLOS.
« Última modificación: 13 de Noviembre de 2007, 13:09:21 por Chaly29 »
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado TitoBlade

  • PIC10
  • *
  • Mensajes: 26
Re: Distancia y velocidad
« Respuesta #10 en: 13 de Noviembre de 2007, 16:48:18 »
Gracias Chaly29 me pondre a ello. Si me surge alguna duda ya ire escribiendo.

Un saludo.

Desconectado TitoBlade

  • PIC10
  • *
  • Mensajes: 26
Re: Distancia y velocidad
« Respuesta #11 en: 16 de Noviembre de 2007, 10:14:08 »
Chaly29 tengo una duda si tengo que realizarlo en lenguaje ensamblador por ejemplo el PIC 16C74 como realizo las multiplicaciones y divisiones.

Un saludo!

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Distancia y velocidad
« Respuesta #12 en: 16 de Noviembre de 2007, 12:14:10 »
Hola TitoBlade, para realizar cÁlculos con los PIC en asm, podrás encontrar rutinas ya realizadas para lo que deseas, en el foro (con el buscador) encontraras muchas, y si nó, tambíen microchip en sus notas de aplicación tiene más rutinas de este tipo.

Un saludo.

Atte. CARLOS.
La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado TitoBlade

  • PIC10
  • *
  • Mensajes: 26
Re: Distancia y velocidad
« Respuesta #13 en: 20 de Noviembre de 2007, 22:49:31 »
Hola muy wenas de nuevo...he stado investigando el como hacer lo que me dijistes Chaly29 y aver si el planteamiento es correcto:

Yo introduzco un diametro por ejemplo en decimetros y pi lo tengo como 31 por tanto el perimetro en metros sería: Perimetro=Pi*Diametro los dos multiplicandos ambos de 8 bits y me sale un resultado de 16 bits deacuerdo he encontrado la subrutina que lo hace...

Ahora me falta el dividirlo por el tiempo...mi pregunta es como configuro el Timer 1 para hacerlo correctamente...

- ¿Lo hago de manera que cada vuelta de un segundo exacto? Y si es asi ¿como controlo en el programa la distancia (que la tendre que seguir controlando por si la rueda da otra vuelta) y el contador de que ha dado una vuelta una rueda para la velocidad? Mediante interrupcion supongo...
- ¿Lo configuro sin precarga? Es decir que cada us sea un un bit mas... 1us--->00000001  2us--->00000002 y de nuevo cmo controlo

Y mi segunda pregunta es cuando tenga el tiempo del timer para hacer la division y la haga mediante una subrutina 16/16 bits, al final me quedaría el problema de que no esta en m/s

De manera matematica tengo: Perimetro=pi*10^(-1)*diametro*10^(-2) metros

¿Como me quedaría la velocidad?

Uffff...lo siento mucho puede que os este mareando con todo este planteamiento...pero estoy intentando aprender por mi cuenta todo esto y no me llega a quedar claro el planteamiento del programa

De nuevo un saludo y muchisimas gracias de antemano



 

anything