TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: DarkVect en 11 de Septiembre de 2008, 13:45:55

Título: Dudas sobre resolución al medir baja frecuencia
Publicado por: DarkVect en 11 de Septiembre de 2008, 13:45:55
Hola, me gustaría aclarar una duda que tengo a la hora de medir baja frecuencia: teóricamente es más preciso medir el tiempo entre pulsos más que contar los pulsos en un segundo, por ejemplo.

El tema es el siguiente:

Quiero medir frecuencias de 0 a 200Hz. Si cuento los pulsos en un segundo, voy a tener una resolución de 1Hz y un error máximo de 1Hz también, bien?

Por contra, si mido el tiempo entre los dos flancos del pulso (tienen duty 50%) para manetener la resolución de 1Hz sobre el margen de 200Hz debo considerar lo siguiente:

200Hz -> 0,005s
199Hz -> 0,005025126s

Por lo tanto debo ser capaz de discriminar 0,00002s para poder mantener 1Hz de precisión. Estoy haciendo bien el cálculo? No es demasiado meter una interrupción cada 0,02ms?

Gracias por aclararme la duda.
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: Nocturno en 13 de Septiembre de 2008, 05:38:42
No tendrías que meter una interrupción cada 0.02ms , ¿no?

Yo creo que sólo tienes que meter la interrupción en el cambio de flanco, y en ella miras qué valor tiene el Timer y lo inicializas para contar la duración del siguiente flanco.

Eso sí, el timer tiene que tener una precisión igual o superior a 20us.
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: DarkVect en 16 de Septiembre de 2008, 07:35:24
Gracias por la respuesta Nocturno.

Lo de la interrupción lo implementaba así para poder contar las vueltas de que da el timer. Si sólo recojo su valor, podría ser que desbordase y recuperase un valor erróneo, no?

Sobre la resolución, ok! Veo que lo he calculado bien, necesito esos 20us de precisión para poder ditinguir las frecuencias con una precisión superior a 1Hz.

Supongo que este segundo método es mucho mejor que contar pulsos, no?

Gracias!!
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: Nocturno en 16 de Septiembre de 2008, 08:50:35
Por supuesto que tendrás que poner interrupción en el Timer, para contar las veces que desborda, claro. Pero eso no significa que tenga que desbordar cada 20us.
Si es de 8 bits desbordaría cada 20*256us = 5,12ms
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: DarkVect en 16 de Septiembre de 2008, 14:52:19
Sí, sí. Ha sido un error al expresarlo. Quiero decir que interrumpe cada 20us.

Mil gracias!!

PD: Me salta la duda de que si para medir 200Hz ya tiene que interrumpir cada tan poco tiepo, cómo se hace para medir frecuencias mayores, pongamos 800Hz?? Ya empieza a salir más eficiente lo de contar pulsos, supongo.

Saludos!!
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: Nocturno en 16 de Septiembre de 2008, 16:37:30
¡Que no interrumpe cada 20us!  :D
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: reiniertl en 16 de Septiembre de 2008, 16:49:48
Si quieres tener ese nivel de precisión te recomiendo este matrimonio feliz:

TIMER1+CCP1

Esto sin duda te dará precisiones muy altas en tus mediciones, ya que el CCP lo que hace es capturar el valor del TIMER en cada frente de subida o caida, según sea el caso y pedirte una INT, si lo tienes debidamente configurado una vez capturado el dato se resetea el TIMER así que siempre recibes el el registro de captura el valor de tiempo que consume cada ciclo.

Por si fuera poco puedes configurar el CCP para que se active en cada frente, cada dos, cada 4, cada 8 o cada 160, así que si el proceso no te deja procesar los datos porque tiene una frecuencia un poco alta, simplemente lo haces que se active luego de algunos frentes y eso te daría tiempo a procesar los datos.

Saludos
Reinier
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: DarkVect en 17 de Septiembre de 2008, 05:01:29
¡Que no interrumpe cada 20us!  :D

 :shock: :shock:

Según lo entiendo, debo contar las veces que me salta la interrupción del timer, es decir, las veces que desborda. Por qué este valor no es 20us, si es la resolución que necesito?

Vale... lo que tú dices es que si en vez de contar dentro de la interrupción del timer las veces que salta lo que hago es coger su valor en cada flanco de la señal, los 20us ya no son sobre la interrupción sino sobre cada "ciclo" (cada vez que se incrementa el timer).  :lol: :lol:

Gracias reiniertl por el consejo. Miraré a ver si me aclaro con el CCP1.

Saludos!!
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: Nocturno en 17 de Septiembre de 2008, 05:25:14
Vale... lo que tú dices es que si en vez de contar dentro de la interrupción del timer las veces que salta lo que hago es coger su valor en cada flanco de la señal, los 20us ya no son sobre la interrupción sino sobre cada "ciclo" (cada vez que se incrementa el timer).  :lol: :lol:

Exacto, eso en mi pueblo es "tú te lo guisas, y tú te lo comes"  :D

De todas formas, mira lo de Reinier, porque es lo ideal.
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: DarkVect en 17 de Septiembre de 2008, 05:37:04
Vale... lo que tú dices es que si en vez de contar dentro de la interrupción del timer las veces que salta lo que hago es coger su valor en cada flanco de la señal, los 20us ya no son sobre la interrupción sino sobre cada "ciclo" (cada vez que se incrementa el timer).  :lol: :lol:

Exacto, eso en mi pueblo es "tú te lo guisas, y tú te lo comes"  :D

De todas formas, mira lo de Reinier, porque es lo ideal.

 :lol: :lol:
Gracias!!

Os cuento que tal ha ido...
Título: Re: Dudas sobre resolución al medir baja frecuencia
Publicado por: DarkVect en 17 de Septiembre de 2008, 13:57:30
Pues desgraciadamente no puedo usar el CCP1 porque ese mismo pin se corresponde con la salida SPI del PIC y la estoy usando para comunicarme con otro integrado  :(

Así que toca hacerlo con la externa y lo de obtener el timer.