Autor Tema: cronometro digital (LCD)  (Leído 8419 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado jose a...

  • PIC10
  • *
  • Mensajes: 8
cronometro digital (LCD)
« en: 17 de Octubre de 2006, 15:07:35 »
       Bueno mi gente cuento, tengo un proyecto y voy mas o menos avanzado, debo hacer un modulo de pruebas para un laboratorio de fisica I, estoy trabajando con caida libre, se supone q debo medir l tiempo, la velocidad y la aceleracion a diferentes distancias. Ya la distancia la altura la estoy midiendo con un potenciometro multivuelta de 10k. y la muestro por el lcd. el problem es q no se como medir y mostrar por el lcd el tiempo de caida del cuerpo. no se si tiene una rutinita de un  cronometro o algo para guiarme
P.D: estoy usando el pic 16f870

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: cronometro digital (LCD)
« Respuesta #1 en: 17 de Octubre de 2006, 15:17:04 »
Hola jocmoreno:

Bienvenido al foro!
Si dispones de espacio físico en los alrededores (a los costados) de donde cae el objeto, se me ocurre que podrías usar barreras infrarojas que sean interrumpidas por la presencia del objeto.
Haz dos barreras infrarojas a distintas alturas, calculas los tiempos y obtendrás la velocidad del cuerpo.
Haz una al principio y otra al final y obtendrás el tiempo de caída.
Espero que se entienda la idea.
Nuevamente bienvenido al foro.

Saludos
Mario

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: cronometro digital (LCD)
« Respuesta #2 en: 17 de Octubre de 2006, 18:09:34 »
¿No se supone que todos los objetos aceleran a 9,8 m/s2en caída libre?
¿Cual es el objeto del estudio?

Desconectado jose a...

  • PIC10
  • *
  • Mensajes: 8
Re: cronometro digital (LCD)
« Respuesta #3 en: 17 de Octubre de 2006, 18:30:41 »
          bueno si tienes razon con lo de la aceleracion, pero el objeto de estudio es medir la altura y el tiempo de caida y en basaea eso calcular la velocidad. eso lo debo mostrar por el lcd. (altura, tiempo y velocidad).
          esas son las especificaciones q me dieron. pero nose como mostrar tiempos diferentes con interrupcion, es decir, pienso hacer int por RB0 cuando caiga el cuerpo
gracias por respomder

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: cronometro digital (LCD)
« Respuesta #4 en: 17 de Octubre de 2006, 19:19:46 »
Jeje esto es lo que haciamos en Laboratorio de Fisica 1.
Habia unos instrumentos que liberaban unas esferas de diversos materiales y tamaños a distintas alturas.
Al presionar un pulsador liberaban el objeto y comenzaban a contar el tiempo.
Debajo habia una plancha que actuaba de sensor de final de recorrido. Cuando el objeto la tocaba, el contador de tiempo se detenia mostrando el tiempo total de caida del objeto.

Podrias utilizar un Timer del PIC para contar el tiempo de caida. Obviamente si requieres de extrema precision no te sera util el Timer ya que seguramente no te alcanzara la precision del mismo.
Podria ser tambien una rutina que cuente aprovechando que el PIC no debe realizar otra tarea mientras el objeto esta cayendo. Probablemente eso te de mas exactitud de tiempo.

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 micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: cronometro digital (LCD)
« Respuesta #5 en: 18 de Octubre de 2006, 01:43:26 »
hola, yo propongo q utilizes el tmr0 pero con un cristal de 20MHz y el prescaler asignalo al trm0 y de paso le pones el valor minimo 1:1, asi conseguiras q el tmr0 tenga mucha presicion para pequeños tiempos, pues en un cronometro debes mostrar tambien las decimas de segundo, y sobre todo si es para un laboratorio de "fisica experimental", luego tienes q ver una relacion del valor q obtienes en el tmr0 cuando el objeto lanzado llega a su destino, asi como te lo describio BrunoF , un boton de disparo el cual iniciara tu tmr0 y finalmente cuando el sensor de final de recorrido se dispare lo detienes y asi puedes obtener la lectura, luego ya debes tratar ese dato como te convenga.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado jose a...

  • PIC10
  • *
  • Mensajes: 8
Re: cronometro digital (LCD)
« Respuesta #6 en: 18 de Octubre de 2006, 11:19:43 »
   Hey gracias. yo mas o menos me imaginaba algo asi. yo pongo a correr el timer hata q caiga el cuerpo como me estas diciendo. sera q uso interrupcion externa para dejar de contar. pero yo siempre e usado los timer para contar un tiempo especifico y cumplir una tarea, (encender esperar y apagar algo). pero no veo la manera de mostrar el tiempo el el lcd. ya que son muchos tiempos posibles y la veces que e mostrado algo por el lcd a sido usando tablas predeterminadas, mostrando caracter por caracter. no se si me explico.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: cronometro digital (LCD)
« Respuesta #7 en: 18 de Octubre de 2006, 11:32:28 »
Hola Nocturno!
9.8 m/s/s es la aceleracion.....en vacio.
La velocidad va a depender del tiempo que lleva en caida, pudiendo llegar a....lo que quieras (Einstein, perdon por esa afirmacion!!! :lol: ). Supongo que el experimento debe ser para medir distintos cuerpos  en el aire, y ver como varia su aceleracion  o velocidad dependiendo de su forma, peso, etc...

Saludos!  :mrgreen:
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: cronometro digital (LCD)
« Respuesta #8 en: 18 de Octubre de 2006, 15:01:38 »
Veamos...
Si bien distintas formas y diametros generan distintos tiempos de caida debido al rozamiento con el aire la diferencia es casi despreciable(hablando de esferas siempre y de diametros bastantes cercanos).
De la misma manera que es despreciable la diferencia que hay al lanzar un objeto desde 4000m de altura que desde 2m.

Nosotros lo haciamos para calcular mediante formula algo ya sabido: la aceleracion en caida libre: es decir: esos 9,8m/(s*s).

Bueno, respondiendo a tu pregunta jocmoreno:

Lo que debes hacer es tomar por ejemplo 4 registros.
Los llamare por ejemplo: a1,a2,a3,a4.
Uniendolos podria interpretarlos como un solo numero asi: a4 a3 a2 a1.

En cuanto se libera el objeto, limpias todos los registros y activas el Timer previamente configurado.
Dentro del ISR(Interrupt Service Routine) o rutina de interrupcion(vector 0x04) te fijaras cual interrupcion sucedio: si la del TMR0 o la del RB0 u otra si es que usas.

Si sucedio la del TMR0, que es la que nos interesa, lo unico que haces es ir incrementando las variables de la siguiente forma:

Código: ASM
  1. Intr_TMR0
  2. bcf INTCON,T0IF
  3. incfsz a1,F
  4. retlw .0
  5.  
  6. incfsz a2,f
  7. retlw .0
  8.  
  9. incfsz a3,f
  10. retlw .0
  11.  
  12. incfsz a4,f
  13. retlw .0
  14. retlw .1 ;volver indicando desbordamiento(tiempo maximo de caida posible superado)

Listo. Alli tienes las variables que iran almacenando el tiempo de caida.
En cuanto el cuerpo toque el sensor de final de recorrido, sucedera la interrupcion por flanco alto/bajo(segun hayas configurado) en RB0.Aqui desactivas el TMR0 y deberas transformar los valores que poseen a4,a3,a2 y a1 a BCD para mostrarlos en el LCD.
Obviamente la formula que necesitas dependera del tiempo que le tome al TMR0 desbordarse y del oscilador que estes usando.

Un prescaler 1:1 producira interrupciones de TMR0 mas seguidas que un prescaler 1:256. Esto influira directamente en la precision del tiempo a medir.

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 micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: cronometro digital (LCD)
« Respuesta #9 en: 18 de Octubre de 2006, 15:58:46 »
jocmoreno, tienes q encontrar una relacion entre el valor q capturas con el tmr0 (por ejemplo los registros q brono de te sugerido) y la velocidad, eso tienes q buscarlo experimentalmente, es como hacer una relacion de voltajes para el A/D, si quieres medir 10V esto para el pic sera igual a 5V, como si fuera una regla de 3 simple. sigue contandonos como te va en tu proyecto, todos estamos ansiosos :-/ por ayudarte.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado jose a...

  • PIC10
  • *
  • Mensajes: 8
Re: cronometro digital (LCD)
« Respuesta #10 en: 18 de Octubre de 2006, 16:53:58 »
             :-/aaaaaaaaaa. ya va creo q ya entendi pero corrigeme si estoy equivocado.

lo q debo hacer es incrementar un registro cadad vez q se desborde tmr0 hasta  256 alli empiezo a incrementar otro y asi susecivamente hasta q tenga la interrupcion, ahora lo q tendria q calcular seria cuanto tarda cada desborde pa saber el tiempo final. pero si hago como ustedes dicen y uso 1:1 tendrai q usar muchos registros para hacer eso.

          bueno no se es lo q creo q entendi pero no estoy seguro, la verdad es que no tengo mucha experiencia pic.

   y con lo del proyecto lo que tengo hasta ahorita es q ya guardo la altura en la eeprom para luego sacar las cuentas con el tiempo. estoy quedao es en esto de como medir el tiempo pero ya estoy aclarando muchas cosas.
                                    Gracias por preguntar saludos :?

Desconectado jose a...

  • PIC10
  • *
  • Mensajes: 8
Re: cronometro digital (LCD)
« Respuesta #11 en: 18 de Octubre de 2006, 17:00:36 »
y entonce sacaria la cuenta de por ejemplo cuantos desbordes necesito para tener 0.1 seg a cada vez q pase eso alli empezaria a llenar la 4 registros q me nombraron previamente.
     voy bien?  :mrgreen:

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: cronometro digital (LCD)
« Respuesta #12 en: 18 de Octubre de 2006, 17:21:44 »
Claro, pero trata de simplificar la cosa.
Primero: ¿cuantos decimales de precision pretendes? y ¿que cristal?

Si pretendes 0,1 seg(me parece poca precision) podes intentar ver si llegas con alguna relacion del preescaler a algun multiplo del mismo.
Ejemplo:

Siguiendo con una precision de decima de segundo, podrias intentar hacer que el timer desborde cada 100ms. Si no da, fijate si logras que desborde cada 50ms, sino cada 25ms siempre ycuando el valor no se vaya muy lejos.
Esto te simpliicaria mucho despues la tarea para hacer el pasaje de los valores de los registros a un unico valor decimal(expresado en segundos)

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 micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: cronometro digital (LCD)
« Respuesta #13 en: 18 de Octubre de 2006, 19:12:59 »
eso es cierto, yo solia hacer la conversion desde el valor del tmr0 y lo pasaba a ASCII para el llcd, uff no saben como sufria, jejeje, sigue el consejo de brunof, por otro lado, dime, usas el proteus para simular este proyecto?
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado jose a...

  • PIC10
  • *
  • Mensajes: 8
Re: cronometro digital (LCD)
« Respuesta #14 en: 18 de Octubre de 2006, 22:10:09 »
Bueno si, uso proteus para simular lo q tengo. voy a hacer lo q dice bruno voy a tratar de q cuente de 0.01 seg en 0.01seg para tener mejor precision, espero no tener tantos problemas con eso. que hicistes tu q te hizo sufrir tanto? q montaste? :?
« Última modificación: 19 de Octubre de 2006, 18:15:52 por jose a... »


 

anything