Quiero convertir una señal de servocontrol en una salida digital de 5V o 0V.
Este es el formato de mi señal PWM:
La diferencia es que el ancho de mi pulso de entrada será de 1 ms (mínimo) o 2 ms (máximo). Puede haber un ligero ruido, pero no hay valores como 1,5 ms. Solo 1 o 2.
Traté de crear un circuito que hace esto:
Cuando mido Vout:
Realmente no sé por qué no funcionó. Estaba esperando esto:
¿Saben por qué no funcionó y qué puedo hacer para mejorarlo?
Desde el enlace en el diagrama, supongo que está usando un microcontrolador, ¿posiblemente un Arduino?
En ese caso, conectaría la entrada PWM a un pin de interrupción y usaría la interrupción de cambio de pin para activar una rutina de servicio de interrupción (ISR) para medir el tiempo de activación del pulso. El ISR establecería/restablecería una bandera para indicar si era 1 ms o 2 ms.
¿Saben por qué no funcionó y qué puedo hacer para mejorar?
El filtro solo puede promediar su señal en un valor de CC. Si conecta directamente un multímetro de voltaje de CC a su señal pulsante, obtendrá exactamente el mismo valor de CC.
Si desea hacerlo de manera más efectiva, puede usar un circuito monoestable. El monoestable se activaría por el flanco ascendente positivo de su señal de control de servo digital. Produciría un pulso de duración de alrededor de 1,5 ms (es decir, se agotaría el tiempo de espera a mitad de camino entre los dos tiempos de nivel lógico).
Y, cuando ese pulso se agote, usaría ese evento para muestrear la señal de control del servo digital. Probablemente usaría un flip-flop tipo D para esto y la salida se resolvería en un 0 o un 1 que representa el nivel lógico detrás de la salida de la señal de control del servo digital.
Así es como lo haría de todos modos.
Puede usar un comparador después de que su señal filtrada haga la salida lógica, pero luego hay otras cosas a considerar, como cuánta histéresis se necesita, cuánto filtrado RC se necesita y cuánto tiempo de retraso se puede tolerar debido al filtro. El monoestable/flip-flop resolverá el valor digital en un ciclo (20 ms) como máximo.
Un enfoque de Rube Goldberg (Reino Unido: Heath Robinson) sería diseccionar un servo RC y reemplazar el motor con un optoacoplador de entrada de CC + resistencia en serie, por ejemplo. PC817 + 330 ohmios. Establezca el potenciómetro de retroalimentación en aproximadamente el 50 % del recorrido o (más confiable) reemplácelo con dos resistencias de 2,49 K.
Cuando los pulsos que llegan son inferiores a ~1,5 ms, el servo ASIC intentará impulsar el motor en una dirección y el LED del optoacoplador conducirá. Cuando son superiores a 1,5 ms, el ASIC intentará impulsar el motor en dirección inversa y el LED se bloqueará.
En el extremo receptor, solo necesita una resistencia pullup como 10K.
Es posible que pueda encontrar los servo ASIC como componentes, pero no sé los números de pieza de antemano y aparentemente la mayoría están fabricados por oscuros proveedores chinos.
usuario1850479
isa turk
usuario_1818839
isa turk
Transistor
isa turk
ocrdu
isa turk
Transistor
ocrdu
isa turk
usuario253751