Autor Tema: PULSIN (Medir período)  (Leído 6953 veces)

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

Desconectado Marioguillote

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
PULSIN (Medir período)
« en: 04 de Noviembre de 2008, 00:32:05 »
Hola a todos !

Estoy trabajando con un sistema que medirá (entre otros parámetros) la duración de un impulso escalón y para ello pensé en la instrucción PULSIN

He implementado el siguiente circuito a la entrada del PIC (puede ser cualquiera)


Utilizo dentro del programa la siguiente secuencia de instrucciones:

 REPEAT DELAYUS 1:UNTIL PIN = 1    'ME QUEDO ESPERANDO HASTA QUE EL PIN SE PONGA EN ESTADO ALTO
 FLA = PULSIN PIN,HIGH                   'PASO A LA VARIABLE "FLA" EL TIEMPO QUE PERMANECE EN ESTADO ALTO
 PRINT AT 2,1,DEC FLA                    'LO MUESTRO EN PANTALLA AL TIEMPO OBTENIDO

donde FLA es una variable tipo FLOAT que muestro con 3 decimales, PIN es el que utilizo para ingresar con la onda cuadrada y el lazo REPEAT ... UNTIL es para esperar a que ocurra el evento del impulso en su flanco ascendente.

Según el manual de Protón al trabajar con un cristal de 20 Mhz., las unidades que se cargarán dentro de PULSIN corresponderán a un intervalo de 2uS, por lo que al medir una onda cuadrada de 50 Hz (frecuencia de línea) FLA debiera cargarse con un valor de 5000

5000 veces 2uS es igual a 10 mSeg., es decir que el tiempo que dura un semiciclo "es" de 10 milisegundos y éso debiera obtener.

Sucede que obtengo un valor de 5240 aproximadamente.

Mayor precisión en la forma de onda de entrada al PIC no creo poder lograr (lo veo en el osciloscopio y es impecable), entonces mi duda parte hacia la precisión del PULSIN y de la cantidad de tiempo "físico" que ocupan las instrucciones, a pesar de que 240 me parece un valor muy alto y no comprendo de donde puede provenir.

Es por ésto que acudo a quienes puedan tener experiencia en el uso y aprovechamiento de ésta instrucción.
Por cierto muy agradecido a quienes me puedan ayudar.

Gracias y saludos a todos.
Mario
« Última modificación: 04 de Noviembre de 2008, 00:51:58 por Marioguillote »

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: PULSIN (Medir período)
« Respuesta #1 en: 04 de Noviembre de 2008, 00:35:11 »
Hola Mario como estas  :lol:
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Marioguillote

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: PULSIN (Medir período)
« Respuesta #2 en: 04 de Noviembre de 2008, 00:53:17 »
 :D

Hola a todos !!!

Se me escapó el disparo antes de tiempo !
Ahí lo completé !

Saludos
Mario

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PULSIN (Medir período)
« Respuesta #3 en: 04 de Noviembre de 2008, 04:08:12 »
Don Mario, el error que te ha aparecido es en torno al 5%.
No conozco la instrucción PULSIN ni cómo se usa (de hecho yo te recomendaría utilizar el módulo CCP del PIC), pero mirando el esquema que has pegado se me ocurre que el optoacoplador se va a encender unos voltios por encima de cero y por lo tanto el pulso alto será más estrecho que el pulso bajo. No sabría calcular cuánta es la diferencia pero quizás justifique esa desviación que tienes.
Una forma rápida de verificar si es así es medir la duración del pulso bajo: si te sale 4760 estaría claro que es por eso.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: PULSIN (Medir período)
« Respuesta #4 en: 04 de Noviembre de 2008, 07:57:50 »
Que tal marioquillote!
Mira hechale un vistazo al este esquema
http://www.todopic.com.ar/foros/index.php?topic=18862.0
La primera etapa del op amp te podria servir para la entrada del pulsin  :mrgreen:

Saludos

Desconectado Marioguillote

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: PULSIN (Medir período)
« Respuesta #5 en: 04 de Noviembre de 2008, 23:50:12 »
Hola de nuevo !  :)

Manolo, gracias por estar siempre maestro.
La instrucción PULSIN es muy sencilla de implementar en BASIC y sirve para medir el tiempo que un pin del PIC permanezca en un determinado estado.
Por ejemplo para medir lo que dura un impulso en estado alto, se termina la instrucción con HIGH ó 1, en cambio si lo que queremos medir es el tiempo que dura un estado bajo, debemos terminarla en LOW ó 0.
Y tenías razón en tu apreciación.
Al medir la duración del otro semiciclo, me daba el complemento exacto tal como lo habías observado.

Ralf, gracias a tí también por la orientación del circuito.
Lo acomodé para el uso que le estoy dando y me quedó de la siguiente forma:

 

pudiendo obtener ahora una variación de 0,2% (4990 / 5010), valor que es mucho más aceptable para la aplicación que estoy implementando.
No alcanzo a comprender muy bien el motivo de la existencia de dicha variación ya que considero que la frecuencia de red es de lo más estable que se puede conseguir, pero tal vez 0,2% sea un valor normal de tolerancia en la misma.

Gracias por la recomendación del circuito amigo !  :)

Gracias a ambos por la ayuda !

Saludos
Mario

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: PULSIN (Medir período)
« Respuesta #6 en: 05 de Noviembre de 2008, 03:23:54 »
Un 0.2% está muy bien. No sé si entrará dentro del margen de error de la frecuencia de red.

En cualquier caso no entiendo muy bien ese circuito...
¿El diodo D1 es necesario?; lo digo porque también hay cae algo de tensión y hará que la salida del divisor de tensión no sea exactamente la mitad.

Por otra parte, ahora que lo pienso, si has usado resistencias del 1%, conseguir un error del 0,2% es todo un éxito.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PULSIN (Medir período)
« Respuesta #7 en: 05 de Noviembre de 2008, 07:26:25 »
Este si que funciona.
Saludos desde Granada, España.

Desconectado RALF2

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2062
Re: PULSIN (Medir período)
« Respuesta #8 en: 05 de Noviembre de 2008, 15:09:26 »
Que tal amigos!
Me alegro mucho que te alla servido el circuito marioguillote!  :mrgreen:
Dogflux muy buen ejemplo, utiliza dos diodos uno como limitador de pico positivo y el otro como limitador de tension negativa para proteger el op amp  :mrgreen:

Quedaria fino con el uso del lm358 tambien  :mrgreen:

Saludos