Para controlar el posicionamiento de un móvil en ocasiones, debido a grandes velocidades o necesidades de precisión, no es suficiente con los detectores convencionales, para solucionar este problema utilizaremos los Codificadores ópticos rotativos, o encoders. Un codificador óptico rotativo, es un captador angular de posición. Su eje unido mecánicamente a un árbol que lo acciona, hace girar a un disco que consta de una serie de zonas opacas y transparentes. La luz emitida por los diodos electro-luminiscentes alcanza a los foto-diodos cada vez que atraviesan una zona transparente del disco. Los foto-diodos generan una señal eléctrica que se amplifica y convierte en señal cuadrada antes de transmitirse a la señal de tratamiento.
Existen dos tipos de codificadores: incrementales y absolutos.

Encoder incremental.
Determina su posición, contando el número de impulsos que se generan cuando un rayo de luz, es atravesado por marcas opacas en la superficie en un disco unido al eje.
El el estator hay como mínimo dos pares de fotorreceptores ópticos, escalados un número entero de pasos mas 1/4 de paso. Al girar el rotor genera una señal cuadrada, el escalado hace que según el sentido de giro del motor, aparezca una señal antes que la otra.
En nuestra figuras en el lado izquierdo, giro en sentido horario aparece antes la señal B, en el lado derecho, sentido antihorario aparece antes la señal A. O lo que es lo mismo el desfase de las señales en el primer caso es de 1/4 de paso y en el segundo caso de 3/4 de paso.


Estos datos llevados a un sistema lógico, un autómata por ejemplo, pueden determinar desplazamientos a partir de un origen, a base de contar impulsos de un canal y determinar el sentido de giro a partir del desfase entre los dos canales. Algunos encoders pueden disponer de un canal adicional que genere un pulso por vuelta y la lógica puede da número de vueltas más fracción de vuelta.
La resolución del encoder depende del número de impulsos por revolución.
Encoder Absoluto.
Está formado por varios discos codificados, que al ser atravesadas por la luz crean un código, en el ejemplo de la figura correspondería a un código binario, cada posición está representada por un código único, de manera que el sistema puede saber siempre en que posición se encuentra el motor. A medida que aumenta la resolución necesitamos aumentar los dígitos del código binario, y por tanto las coronas del encoder.

En otras ocasiones se utiliza se utiliza el código Gray.
Con el encoder absoluto podemos saber la posición del encoder o del motor después de un corte de electricidad.
Como inconveniente estos encoders son más complejos y caros que los encoders incrementales.