El KY-040 suele ser un encoder incremental, lo que significa que proporciona información sobre el movimiento relativo del eje en forma de pulsos. Tiene dos canales A y B, que generan señales en cuadratura cuando el disco codificador gira. Estas señales en cuadratura se utilizan para determinar la dirección de rotación y la velocidad del eje.
El sensor rotativo tiene salidas digitales en los pines «CLK» y «DT», y dependiendo de la respuesta de las señales, se puede determinar el sentido de giro del sensor:
Si el flanco de subida o bajada de la señal DT esta adelantada con respecto a la señal del pin CLK, se determina que el sensor gira en sentido «horario».
Si el flanco de subida o bajada de la señal DT esta atrasada con respecto a la señal del pin CLK, se determina que el sensor gira en sentido «anti-horario».
El tiempo de desfase entre los pines CLK y DT, depende de la velocidad de giro del sensor.
En las imágenes siguientes se muestra un ejemplo de la salida de las señales.
Si se gira «rápidamente» el sensor, el tiempo sera aproximadamente de 3 milisegundos.
Si se gira «lentamente» el sensor, el tiempo sera aproximadamente de 20 milisegundos.
El sensor puede generar rebotes de señal en los flancos de subida o bajada, debido a que funciona con partes mecánicas, por lo que se deben tomar en cuenta para evitar errores en la lectura de las señales.
El sensor cuenta con un pin de salida digital «SW» que corresponde a un «switch» o botón.
La salida de la señal del pin «SW», se debe conectar en una configuración PULL UP para detectar los cambios en la señal cuando se pulse el botón.
Si no esta pulsado el botón, la salida de la señal en el pin «SW» sera «1» o «HIGH».
Si esta pulsado el botón, la salida de la señal en el pin «SW» sera «0» o «LOW.
Circuito de conexión
Procedimiento
Se definen los pines de entrada conectados a los pines del sensor.
Cuando se detecta un flanco de subida en el pin de interrupción externa «INT0» que corresponde a la señal del pin «CLK» se habilita la interrupción externa y el programa se dirige a la directiva de la interrupción «#INT_EXT».
Cuando se detecta un flanco de subida en el pin de interrupción externa «INT2» que corresponde a la señal del pin «SW» se habilita la interrupción externa y el programa se dirige a la directiva de la interrupción «#INT_EXT».
La función del botón sera de resetear a «o» el valor de la variable «valor».