Autor Tema: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???  (Leído 18551 veces)

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

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
Buenas tardes gomias...
                                  Les comento le idea es la de poder saber con "exatitud" las vueltas de un motor(tacometro) o bien la frecuencia de algun equipo electronico(frecuencimetro), el principio de contar los pulsos que hay en un segundo o dos y lugo multiplicarlo por 60 o 30 no esta mal, pero no te permite medir frecuencias de por ejemplo 38 -40 RPM, entonces que queda? "medir" o "contar" el tiempo entre pulso y pulso y luego calcular cuantas veces entra ese "tiempo" en un minuto... la idea de dejar contando durante un minuto no sirve ya que hay otros trabajos que controlar como temperatura y algun estado logico para detener una maquinaria.
Cualquier idea o comentario constructivo sera agradecido.

Cordiales Saludos.

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #1 en: 23 de Abril de 2009, 15:41:28 »
Nada mejor para eso que la combinación TIMER1 + CCP. El timer 1 da la temporización, viene siendo el cronómetro, el CCP en modo captura te da la sincronización de marcha/parada del cronómetro. En este caso el CCP se debe utilizar para capturar el valor del contador, saber que tiempo ha pasado se debe hacer por software, pero en las interrupciones que generará el CCP y no el TIMER.

Si lo que quieres es medir el tiempo de pulso, bastará con un CCP, si necesitas saber el ciclo útil necesitarás dos de ellos uno activo por frente de subida y el otro por frente de caida.

Hasta donde se es la mejor solución, revisa el datasheet del PIC que usas a ver si tiene CCP, si no es así te tienes que buscar uno con CCP y luego ir y revisar como anda este módulo.

Saludos
Reinier

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #2 en: 23 de Abril de 2009, 16:03:51 »
Hola antes que nada te agradezco la respuesta, mira no necesito saber la duracion de un pulso, sino que necesito saber que tiempo trasncurre entre un pulso y el otro que le sigue  asi sabiendo ese valor puedor calcular cuantas veces entra en en un minuto con esto puedo saber cuantas  hay en un minutos con la ventaja de qe puedo medir rpm menores a 60 y sin tener que esperar un minutos. mmm quedo claro el desafio?

toda idea suma gracias...

Desconectado J_jOsE

  • PIC12
  • **
  • Mensajes: 57
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #3 en: 23 de Abril de 2009, 18:12:06 »
hola otto_79  :mrgreen:

talvez te sirva este link
http://picmania.garcia-cuervo.net/tecnicas_en_c_4.php

no lo e probado pero creo que es lo que buscas

salu_2 a to_2
No Pain No Gain

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #4 en: 23 de Abril de 2009, 20:46:07 »
Bueno, gracias mil...

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #5 en: 28 de Abril de 2009, 11:50:01 »
Primero tendrías que definir con que frente llega el pulso, si con la subida o la caida, o sea con frente positivo o negativo respectivamente. Recordemos que un pulso es así:

      ____
|___|      si es con frente negativo, es decir comienza con la caida y termina en el instante en que comienza la caída de la señal.

 ___
|    |___ si es con frente positivo, es decir comienza con la subida y termina en el instante en que comienza la subida de la señal.

Luego para medir cuanto dura el pulso, que es lo mismo que medir cuanto tiempo hay entre un pulso y otro, suponiendo que todos los pulsos son del mismo período, basta con echar a andar un contador con el frente que inicia el pulso y detenerlo con el frente que inicia el siguiente.  Para eso los PICs disponen de un módulo muy útil el CCP, que trabaja de conjunto con un temporizador, típicamente el TIMER1 y si el dispositivo tiene otros timers con el 1 y el 3.

El procedimiento es bastante simple, aunque a algunos pueda parecerle lo contrario. Basta con configurar el CCP para que haga la captura del TIMER1 con cada frente que nos interesa y llevar la cuenta de los desbordamientos del TIMER1 y de las interrupciones del CCP, un breve estudio de ambos periféricos es un método muy útil para saber exactamente cuanto dura un pulso, o que distancia separa a uno de otros en un tren de pulsos donde todos son de la misma duración.

Saludos
Reinier

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #6 en: 05 de Mayo de 2009, 23:35:08 »
Gracias por la respuesta, fue muy nitritiva la explicacion, mmm tendras por ahi algun material sobre el modulo ccp en basic?
un abrazo

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #7 en: 11 de Mayo de 2009, 22:49:39 »
Nada mejor para eso que la combinación TIMER1 + CCP. El timer 1 da la temporización, viene siendo el cronómetro, el CCP en modo captura te da la sincronización de marcha/parada del cronómetro. En este caso el CCP se debe utilizar para capturar el valor del contador, saber que tiempo ha pasado se debe hacer por software, pero en las interrupciones que generará el CCP y no el TIMER.

Si lo que quieres es medir el tiempo de pulso, bastará con un CCP, si necesitas saber el ciclo útil necesitarás dos de ellos uno activo por frente de subida y el otro por frente de caida.

Hasta donde se es la mejor solución, revisa el datasheet del PIC que usas a ver si tiene CCP, si no es así te tienes que buscar uno con CCP y luego ir y revisar como anda este módulo.

Saludos
Reinier

Estoy haciendo unas practicas calculando la frecuencia mediante el par timer1+ccp(interrumpido) y como era de esperarse hay problemas, el problema es que como al terminar de calcular el período de la señal, hay que hacer otras actividades, entonces el proceso de medir la frecuencia viene siendo por "tiempos discretos" dando como resultado que la señal mostrada cambia significativamente en cada medición (los últimos dígitos casi ni se ven de lo rápido que cambian)

 :(



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #8 en: 13 de Mayo de 2009, 22:39:18 »
Nada mejor para eso que la combinación TIMER1 + CCP. El timer 1 da la temporización, viene siendo el cronómetro, el CCP en modo captura te da la sincronización de marcha/parada del cronómetro. En este caso el CCP se debe utilizar para capturar el valor del contador, saber que tiempo ha pasado se debe hacer por software, pero en las interrupciones que generará el CCP y no el TIMER.

Si lo que quieres es medir el tiempo de pulso, bastará con un CCP, si necesitas saber el ciclo útil necesitarás dos de ellos uno activo por frente de subida y el otro por frente de caida.

Hasta donde se es la mejor solución, revisa el datasheet del PIC que usas a ver si tiene CCP, si no es así te tienes que buscar uno con CCP y luego ir y revisar como anda este módulo.

Saludos
Reinier

Estoy haciendo unas practicas calculando la frecuencia mediante el par timer1+ccp(interrumpido) y como era de esperarse hay problemas, el problema es que como al terminar de calcular el período de la señal, hay que hacer otras actividades, entonces el proceso de medir la frecuencia viene siendo por "tiempos discretos" dando como resultado que la señal mostrada cambia significativamente en cada medición (los últimos dígitos casi ni se ven de lo rápido que cambian)

 :(


Hola que tal...

                  pensaba en lo que has comentado, y me pregunto si probaste de agregar un pequeño delay al final de la rutina de escritura de esta manera se haria un poco mas legible.
 espero contribuya en algo el comentario     saludos.



Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #9 en: 14 de Mayo de 2009, 16:43:41 »
Palitroquez, no entiendo a que te refieres con TIMER1+CCP interrumpido, si me explicas que cosa es a lo mejor te puedo ayudar con eso que estás tratando de hacer.

Saludos
Reinier

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #10 en: 14 de Mayo de 2009, 22:19:45 »
Reiniert, es lo mismo que explicabas en uno de tus post arriba, configurar el CCP en modo captura junto con el timer1, pero solo usar la interrupción del CCP.

ya he disminuido bastante la variación del resultado de la captura y es (no se porque) para borrar el registro CCP1 hay que apagar el modulo primero. y después volverlo a encender.




La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado satandreu

  • PIC10
  • *
  • Mensajes: 10
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #11 en: 19 de Mayo de 2009, 07:24:17 »
Buenas, me cuelo en este mensaje porque creo que es la solución a lo que andaba buscando. Tengo un aparato que al iniciarse emite una secuencia luminosa mediante un led. La secuencia consta de 3 parpadeos que varían de más largo a más corto hasta que ya se queda el led prendido. ¿Como podría detectar esos 3 parpadeos mediante el pic?.

Gracias.

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #12 en: 19 de Mayo de 2009, 11:26:57 »
Palitroquez, el problema es que el registro del CCP, se captura desde el TIMER, no se puede escribir allí, sólo leer, cuando está en modo captura. Si está en modo comparación si se puede escribir, porque pones allí el valor de comparación.

satandreu, Si lo que te interesa es detectar tres parpadeos, no creo que te haga falta tanta complicación, basta poner un fotodetector a una entrada de interrupción externa y contar tres interrupciones, listo. Si quieres medir el tiempo de duración de cada parpadeo, entonces puedes utilizar este método, pero poniendo el fotodetector a una de las entradas de comparación.

Saludos
Reinier

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #13 en: 19 de Mayo de 2009, 20:48:43 »
Palitroquez, el problema es que el registro del CCP, se captura desde el TIMER, no se puede escribir allí, sólo leer, cuando está en modo captura. Si está en modo comparación si se puede escribir, porque pones allí el valor de comparación.

...

y mira que leí varias veces el datasheet y no me percaté de ese detalle, de todas formas ya se como borrar el ccp en ese modo.
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado satandreu

  • PIC10
  • *
  • Mensajes: 10
Re: Como medir un tiempo entre un pulso de inicio y uno final? IDEAS???
« Respuesta #14 en: 20 de Mayo de 2009, 23:10:42 »
satandreu, Si lo que te interesa es detectar tres parpadeos, no creo que te haga falta tanta complicación, basta poner un fotodetector a una entrada de interrupción externa y contar tres interrupciones, listo. Si quieres medir el tiempo de duración de cada parpadeo, entonces puedes utilizar este método, pero poniendo el fotodetector a una de las entradas de comparación.

Solo quiero contar el número de parpadeos y lo cierto es que no había contado con esta solución tan sencilla. Supongo que la interrupción externa a la que te refieres es a la de cambio de estado del puerto ¿no?. Ahora lo veo claro pero al no estar en casa para probarlo me entra un cabreo de 3 pares de coj....

Gracias por la idea, ya postearé resultados.

Saludos.