Filtra el pulso de 5v de la entrada micro

Estoy monitoreando un sistema externo que envía un pulso de 5v cada 2 segundos cuando está en modo normal. Cuando el motor está funcionando, envía una constante de 5v diseñada para alimentar una luz intermitente o LED como sistema de advertencia. Cuando el pulso no está presente, es 0v. Actualmente no hay nada conectado a esto, y quiero alimentarlo a un micro para poder monitorearlo (es decir, saber cuándo el dispositivo está activo y enviarme la señal apropiada).

Habrá un optoacoplador entre los dos circuitos, ya que se alimentan de forma independiente (aunque ahora que lo estoy pensando, ciertamente podría integrar mi micro en el marco existente, pero no es así como está configurado actualmente).

Sé que podría eliminar el pulso programáticamente, poniendo la entrada en una interrupción y esperando una cantidad adecuada de tiempo antes de volver a probar, una especie de rebote. Pero me gustaría saber si podría hacerlo filtrando el pulso a través de un circuito.

Mi idea inicial fue filtrar cualquier cosa (por ejemplo) por debajo de 5 Hz (ya que el pulso es de 1/2 Hz) y que necesitaría un filtro de paso alto. Pero luego alguien me señaló que necesitaba un filtro de paso BAJO ya que los 5v constantes que quiero probar están en una frecuencia más baja que el pulso.

Como punto adicional, la salida del filtro conducirá un opto de baja impedancia sin otra carga. No tengo ni idea de cómo tener esto en cuenta.

Cualquier ayuda sería apreciada.

Su diseño también debe tener en cuenta el ancho del pulso. Por lo tanto, debe proporcionar una descripción del ancho.
Sí, quise hacer eso, pero me desvié. El pico es momentáneo, menos de un milisegundo, sin embargo, la caída es muy lenta. Cae rápidamente, pero luego se convierte en una hipérbola clásica que tarda unos 500 ms en llegar a cero voltios. Luego se repite después de dos segundos.
Gracias chicos (@spehro y @jrtrzeciak) por sus respuestas a continuación, pero ahora lo estoy considerando en hardware y usando el pico del pulso como un latido del corazón para el proyecto. Busco una respuesta más rápida y creo que puedo lograr algo mejor en el código. gracias de nuevo

Respuestas (2)

Si realmente desea filtrar los pulsos a través del hardware, definitivamente lo que necesita es un filtro de paso bajo (LPF). PASARÁ las frecuencias bajas y atenuará las frecuencias más altas. Está buscando valores de CC que sean de frecuencia inherentemente más baja que cualquier tren de pulsos. La forma más sencilla es implementar un LPF de primer orden utilizando una resistencia y un condensador . La frecuencia de corte es entonces

F C = 1 2 π R C

esquemático

simular este circuito : esquema creado con CircuitLab

Sin embargo, la respuesta va a ser bastante lenta. Tomará una cantidad de tiempo notable para que el capacitor se cargue. También podría haber un poco de ondulación dependiendo del tamaño de los componentes que elija. Para aliviar un poco la ondulación, podría usar un filtro de segundo orden a través de la topología Sallen-Key .

esquemático

simular este circuito

Si cada resistencia y cada capacitor tienen el mismo valor, la frecuencia de corte será la misma que antes.

Cualquiera que elija, el voltaje de salida dependerá del ciclo de trabajo del pulso. Por lo tanto, si el pulso es bajo y alto por la misma cantidad de tiempo y la amplitud es de 5V, la salida de los filtros será de 2.5V. Si no está utilizando un comparador o una entrada ADC en el microcontrolador, también deberá implementar un comparador. Dado que habrá alguna ondulación en la salida del filtro, será necesario un comparador con histéresis. De un artículo de Analog Devices :

Comparador con Histéresis y Cálculos

Ahora probablemente pueda ver por qué usar una interrupción de captura de entrada es probablemente la mejor opción. Es probable que sea menos trabajo y definitivamente más barato. Si su frecuencia de pulso hubiera sido más alta, una solución analógica podría haber sido más útil.

Sería sencillo hacerlo en el micro, digamos que tiene un contador que cuenta regresivamente hasta 0 a (digamos) 50Hz. Cada vez que se detecta un borde de pulso , preestablece el contador en (digamos) 150. Si el contador llega a cero, deja de disminuir. Si el contador == 0, se puede considerar que los pulsos se han detenido.

Podría hacer algo similar en hardware usando un multibrator monoestable reactivable como la mitad de un 74HC123 . En el siguiente diagrama de temporización, observe la reactivación desde el flanco descendente de la entrada /A (extremo derecho del diagrama de temporización que muestra t r r ).

te gustaría t w ser algo así como 3 segundos, por lo que los componentes de tiempo resultarían ser algo así como 10uF y 300K (para la parte de Toshiba, podría ser diferente para otros fabricantes).

En este caso, la salida Q bajará y la salida /Q subirá si los pulsos se detienen.

ingrese la descripción de la imagen aquí