Tengo un proyecto de pasatiempo con una plataforma de robot móvil de cuatro ruedas, donde he adjuntado dos codificadores de rueda ópticos, que están más conectados al microcontrolador:
(Fuente:
El microcontrolador maneja la entrada del codificador usando dos interrupciones, que están configuradas para disparar 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 hace que el seguimiento de la posición sea imposible. 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.006 0.064 0.062 0.060 0.025 0.058 0.060.
La diferencia de tiempo es más bien un contraste alrededor de 0.06, puesto que de repente el intervalo se divide en dos interrupciones, sumando alrededor de 0.06. También estoy observando 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 tipo diente de sierra del codificador, es decir, cuando el voltaje cae, debido a que llega a la región del orificio, causa algún tipo de oscilación corta que genera un falso aumento. He intentado reducir el problema usando un disparador Schmitt, cuyas entradas están conectadas al filtro de paso bajo (10kOhms, 9nF, y 20kOhms y 9nF combinaciones 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 una gran cantidad de cableado que también son fuentes potenciales de interferencia.
Agradecería cualquier sugerencia sobre cómo eliminar las interrupciones falsas.