Autor Tema: captura de pulsos  (Leído 2504 veces)

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

Desconectado joseydoris

  • PIC12
  • **
  • Mensajes: 58
captura de pulsos
« en: 27 de Marzo de 2019, 19:16:38 »
Un saludo a todos:Tengo un detector de flujo de agua.Tiene un detentor efecto hall,tiene un pequeño iman en las aspas que el detector cuando gira van saliendo pulsos.El asunto es que si el aspa se queda proximo al detector me maraca 5v y si se queda en el otro lado maraca 0v.¿como podria detectar que no esta pasado agua?,ya que cuando se para podria dar 5v 0 0v,gracias por vuestro tiempo

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:captura de pulsos
« Respuesta #1 en: 27 de Marzo de 2019, 20:09:55 »

Un interrupción sobre un pin de entrada del microcontrolador,  que salte por cambio de estado de la señal (falling o rising) del sensor y cuente los pulsos.

Configuras una interrupcion con un timer,  que compruebe el contador de pulsos para saber si las aspas están girando o no, y reinicias el contador. Asi puedes saber también la velocidad de giro de las aspas.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:captura de pulsos
« Respuesta #2 en: 27 de Marzo de 2019, 22:07:25 »
La otra es usar 2 Timers..

1 Timer para que tome los pulsos externos, ya que pose entrada exterior y podes seleccionar el flanco que queres.

Y un timer que necesitas como base para determinar el tiempo que paso, primero para medir el caudal, y segundo para saber como bien dijo planeta si circula o no agua. Si no cambia el contador entonces no circula. Y si estas calculando el caudal, es obvio que el mismo te va a dar 0. Por lo tanto ahi tenes un indice de que no pasa agua.

Desconectado joseydoris

  • PIC12
  • **
  • Mensajes: 58
Re:captura de pulsos
« Respuesta #3 en: 28 de Marzo de 2019, 14:52:23 »
Un saludo:Peor cuando se para puede quedar en 5v o en 0v según donde se quede el iman,si esta próximo al detector hall da 5v y si esta al lado contrario 0v.Si teneis algun ejemplo lo agradeceria.No he tabajado con los timer hago los retardos con loop.Solo es saber si esta parado o girando.Gracias a todos

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:captura de pulsos
« Respuesta #4 en: 28 de Marzo de 2019, 18:22:33 »
 
Si esta parado, da igual en que estado,  no salta la interrupción por cambio de estado de la señal, y no se incrementa el contaje de pulsos. Así en la rutina del timer, el contador de pulsos siempre estaría a cero, y ya sabes que no se están moviendo las aspas del sensor, y no circula agua.

Yo no te puedo dar un ejemplo de programación de interrupciones y timer en PIC porque hace mucho que me pasé al mundo ARM, pero si buscas por Google te van a salir ejemplos a capazos. Es algo muy común y usado en todo tipo de microcontroladores.

En cualquier caso, aún sin usar el timer, remplazado por un simple bucle, siempre que programes la interrupción para el pin de entrada de la señal, debería de funcionar igualmente, solo pierdes precisión para calcular la velocidad de giro. Como en tu caso solo quieres saber si las aspas giran o estan paradas,  da igual usar o no un timer, aunque con el timer es más fácil de programar y el fuente queda más limpio.

En cuanto a usar interrupciones, es conveniente, aunque también se podría reemplazar por un código sucio, en bucle, guardando el estado de la lectura del puerto y contando pulsos cada vez que cambie el estado de la señal. Si no cambia de estado, las aspas del sensor están paradas, ergo no circula el agua. Puedes contar igualmente los pulsos, llevando un contador de tiempo, sin timer, para hacer un cálculo aproximado de la velocidad de giro, aunque será mucho menos preciso que usar interrupciones y un timer, aparte de que será más complicado de programar y el fuente quedará más feo. Con la función millis() o micros() puedes tener algo de precisión, si no usas un timer, y quieres calcular la velocidad de giro.

Las interrupciones y los timer, se crearon entre otras cosas, para facilitar la programación y ganar precisión, hay que usarlas. Si no las conoces, por internet encontrarás montones de ejemplos y tutoriales.
« Última modificación: 28 de Marzo de 2019, 19:19:07 por planeta9999 »


 

anything