El codificador óptico activa interrupciones falsas

Tengo un proyecto de hobby con una plataforma de robot móvil de cuatro ruedas, donde he adjuntado dos codificadores ópticos de rueda, que están conectados al microcontrolador:

Esquemático

(Fuente: https://www.dfrobot.com/wiki/images/b/b9/FIT0029_Encoder_Schematics.png )

El microcontrolador maneja la entrada del codificador mediante el uso de dos interrupciones, que están configuradas para activar el flanco ascendente. En general, la configuración funciona bien.

Sin embargo, el problema es que de vez en cuando se detectan falsas interrupciones, lo que imposibilita el seguimiento de la posición. Aquí hay un ejemplo de secuencia de diferencias de tiempo entre las interrupciones para una rueda específica: 0.059 0.059 0.060 0.061 0.064 0.063 0.058 0.006 0.064 0.062 0.060 0.025 0.034 0.058 0.060.

La diferencia de tiempo es más bien un contraste alrededor de 0.06, luego, de repente, el intervalo se divide en dos interrupciones, sumando alrededor de 0.06. También observo intervalos mucho más cortos, pero estos son fáciles de eliminar simplemente detectando el intervalo demasiado corto.

La división del intervalo podría estar relacionada con el perfil de diente de sierra del codificador, es decir, cuando el voltaje cae, debido a que alcanza la región del orificio, provoca algún tipo de oscilación corta que genera un flanco ascendente falso. He intentado reducir el problema usando un disparador Schmitt, cuyas entradas están conectadas a un filtro de paso bajo (combinaciones de 10kOhms, 9nF y 20kOhms y 9nF probadas, ¿no estoy seguro de si son óptimas?).

Esto reduce en gran medida los intervalos cortos, pero los más largos siguen siendo un problema. La configuración contiene muchos cables que también son posibles fuentes de interferencia.

Agradecería cualquier sugerencia sobre cómo eliminar las interrupciones falsas.

"... luego se detectan interrupciones falsas", ¿ cómo lo sabes? su ejemplo muestra una medición anormal (¿de tiempo?), Pero eso puede deberse o no a una interrupción falsa provocada por el decodificador. No digo que la interrupción falsa no sea un problema, solo que no ha establecido de manera concluyente que es un problema.
Hola, también he intentado eliminar las detecciones "falsas" mediante inspecciones manuales y, en este caso, puedo ver que la posición se rastrea muy bien (en la prueba fuera de línea usando datos registrados). Sí, es posible/probable que el problema no esté en el codificador sino en la interferencia o en el rebote de voltaje en el contenedor de interrupción que causa detecciones falsas.
"pero el problema está en la interferencia o en el rebote de voltaje en el contenedor de interrupción que causa detecciones falsas". tal vez tal vez no. Piense en toda la cadena de eventos y visualice todas las posibilidades que podrían salir mal y trate de eliminar la mayor cantidad posible. simplemente no ha proporcionado suficiente información para que otros lo ayuden a reducirlo.
Si solo tiene un sensor por rueda, entonces no puede distinguir el movimiento hacia adelante del movimiento hacia atrás, incluida cualquier fluctuación mecánica, que es probablemente lo que está viendo aquí. Para una detección inequívoca de la dirección y la distancia, debe tener al menos dos sensores por rueda, dispuestos para dar señales de cuadratura. Así funcionan, por ejemplo, los sensores de un ratón mecánico.

Respuestas (3)

El disparador Schmitt que está utilizando específicamente no tiene un gran diferencial entre los umbrales de disparo. Si observa la hoja de datos, verá que para la operación de 4,5 voltios, Vhi tiene un valor mínimo de 2,16 voltios y Vlo podría ser tan alto como 1,79 voltios.

Ese es un rango de 370 mV y muy probablemente es demasiado bajo. Sin embargo, el DS indica que el diferencial en el peor de los casos es de 0,71 voltios, pero es motivo de reflexión.

El CMOS estándar probablemente sea mejor pero, por supuesto, tendrá dificultades para encontrar esa pequeña parte de 1 puerta.

Gracias por su respuesta. Mi pregunta fue un poco engañosa porque no me di cuenta de que el codificador de rueda ya incluía una compilación en schmitt-trigger (SN74LV...) como señaló y es visible en los esquemas del codificador publicados. También utilizo un disparador Schmitt externo (74HCT14) combinado con un filtro de paso bajo, lo que mejora enormemente la precisión (sin disparador externo, la señal es prácticamente inútil). Me di cuenta de que obtenía una señal perfecta si coloco el disparador externo lejos del resto de la configuración. Por eso creo que el problema está relacionado con la interferencia.
O... a cierta distancia el ruido se reduce lo suficiente como para no provocar falsos disparos. No creo que sea una cosa de interferencia o tendrías problemas cuando el opto estaba permanentemente bloqueado o abierto. Es una cosa de umbral.
Ok, entonces, ¿te refieres al ruido que causa activaciones falsas a schmitt externo y qué quieres decir con "cosa de umbral"?
Como el ruido y todas las señales se reducen con la distancia, de hecho, no necesita mucha reducción para caer por debajo de un umbral. En otras palabras, es fácil creer una cosa cuando es otra.

La nota de Andy sobre la histéresis limitada podría mitigarse reduciendo la ganancia del fototransistor de detección. Intente reducir R3 de 10K hasta que no tenga ninguna interrupción, luego duplique ese valor para R3.
Los bordes detectados falsamente son un gran problema cuando el interruptor debe operar en un amplio rango de velocidad. La situación más difícil es una transición muy lenta de un hoyo. Un circuito Schmitt debe probarse cuidadosamente para este caso.

Hay algunas otras causas menos probables:

  • Los fototransistores también son sensibles a la luz ambiental. ¿Pueden entrar otras fuentes de luz?
  • El interruptor óptico (con los orificios que proporcione) podría transmitir algo de luz infrarroja. Algunos materiales bloquean visiblemente, pero dejan pasar la luz infrarroja Asegúrese de que no tenga agujeros.
  • Para una cámara interruptiva gruesa, es posible que tenga reflejos desde los lados interiores del orificio, antes y después de la alineación principal del orificio con la fuente y el detector, lo que produce un pulso falso. La solución es un interruptor muy delgado (pero opaco).
  • La retroalimentación capacitiva de Schmitt puede causar problemas de inestabilidad, porque sus velocidades de borde de salida son muy altas. Mantenga las señales de salida bien alejadas del fototransistor.

Pon el robot sobre ladrillos. Haga un lazo de alambre aislado de 2" por 2", péguelo con cinta adhesiva a un trozo delgado de cartón para que pueda sondear los campos magnéticos. Busque grandes transitorios con su antena Hfield.

¿Tiene los voltajes LED VDD combinados con la potencia del motor paso a paso?

¿Tiene los cables de entrada/salida del 7414 incluidos o expuestos a la alimentación del motor paso a paso?

¿Qué tan grave puede ser esto? Suponga que la potencia del motor es de 10 amperios, cambiando en 10 nanosegundos, o dI/dT = 10^+9 amperios/segundo. Supongamos un bucle de 4" por 4" del cable de la víctima, ubicado a 4" del bloqueador. Matemáticas:

V i norte d tu C mi = 2 10 7 ( a r mi a / d i s t a norte C mi ) d I / d T

V i norte d tu C mi = 2 10 7 [ ( 0.1 metro mi t mi r 0.1 metro mi t mi r ) / 0.1 metro mi t mi r ] 10 + 9

V i norte d tu C mi = 2 10 7 0.1 10 + 9

V i norte d tu C mi = 2 10 ( 7 1 + 9 ) = T W mi norte T Y V O L T S

El motor está alimentado por una batería externa y los codificadores de rueda y el microcontrolador están alimentados por otra fuente de alimentación. Sin embargo, el cableado va "muy lejos" cerca de los motores paso a paso y es probable que esté expuesto a la interferencia de los motores. Como señalé en mi comentario a Andy Aka arriba, las detecciones falsas se pueden eliminar colocando el gatillo schmitt externo lo suficientemente lejos del resto de la configuración en el caso de prueba. Sin embargo, todavía estoy experimentando el problema cuando todo está empacado. Me preguntaba si hay algunos cables especiales que podrían ser más tolerantes a las interferencias y más adecuados en este caso.