# Codificador rotatorio

Un codificador rotatorio, también llamado codificador del eje o generador de pulsos, suele ser un dispositivo electromecánico usado para convertir la posición angular de un eje a un código digital, lo que lo convierte en una clase de transductor. Estos dispositivos se utilizan en robótica, en lentes fotográficos de última generación, en dispositivos de entrada de ordenador (tales como el ratón y el trackball), y en plataformas de radar rotatorias. Hay dos tipos principales: absoluto e incremental (relativo).

## Codificador rotatorio absoluto
### Construcción

El tipo «absoluto» produce un código digital único para cada ángulo distinto del eje.
Se corta un patrón complejo en una hoja de metal y se pone en un disco aislador, que está fijado al eje. También se coloca una fila de contactos deslizantes a lo largo del radio del disco. Mientras que el disco rota con el eje, algunos de los contactos tocan el metal, mientras que otros caen en los huecos donde se ha cortado el metal. La hoja de metal está conectada con una fuente de corriente eléctrica, y cada contacto está conectado con un sensor eléctrico separado. Se diseña el patrón de metal de tal forma que cada posición posible del eje cree un código binario único en el cual algunos de los contactos esté conectado con la fuente de corriente (es decir encendido) y otros no (apagados). Este código se puede leer por un dispositivo controlador, tal como un microprocesador, para determinar el ángulo del eje.
| 0º a 45º | L | L | L |
| 45º a 90º | L | L | H |
| 90º a 135º | L | H | L |
| 135º a 180º | L | H | H |
| 180º a 225º | H | L | L |
| 225º a 270º | H | L | H |
| 270º a 315º | H | H | L |
| 315º 360º | H | H | H |
Generalmente, si hay n contactos, el número de posiciones distintas del eje es 2$^n$. En este ejemplo, n es 3, así que hay 2$^3$, es decir, 8 posiciones.
En el ejemplo anterior, los contactos producen una cuenta binaria a medida que el disco gira. Sin embargo, esto tiene la desventaja de que si el disco para entre dos sectores adyacentes, o los contactos no se alinean perfectamente, es imposible determinar el ángulo del eje. Para ilustrar este problema, se considera que el ángulo del eje cambia de 179.9º a 180.1º (sector 4 a sector 5). En cierto instante, según la tabla anterior, el patrón del contacto cambiará de "OFF-ON-ON" a "ON-OFF-OFF". Sin embargo, no sucede realmente. En un dispositivo práctico, los contactos nunca se alinean perfectamente, de modo que cada uno cambiará en diverso momento. Si el contacto 1 cambia primero, seguido por el contacto 3 y luego el contacto 2, por ejemplo, la secuencia real de códigos será:
* OFF-ON-ON (posición de salida)
* ON-ON-ON (primero se activa el contacto 1)
* ON-ON-OFF (después se desactiva el contacto 3)
* ON-OFF-OFF (por último, se desactiva el contacto 2)
Ahora, mira los sectores que corresponden a estos códigos en la tabla. Así, de la secuencia de los códigos producidos, parece que el eje saltó del sector 4 al sector 8, entonces volvió al sector 7, y luego al sector 5, que es donde se esperaba encontrarlo. En muchos casos, este comportamiento es indeseable y podría fallar. Por ejemplo, si el codificador fuera utilizado en un brazo robótico el controlador pensaría que el brazo estaba en la posición incorrecta. Para corregir el error, intentaría girarlo 180º, pudiendo dañarlo.

### Codificación con código de Gray

Para evitar el problema anterior, se utiliza el código Gray. Este es un sistema de código binario en el cual dos códigos adyacentes sólo se diferencian en una posición. Para entrar en contacto con el ejemplo dado arriba, la versión Grey-Cifrada será la siguiente:
| Sector | Contacto 1 | Contacto 2 | Contacto 3 | Ángulo |
| 1 | OFF | OFF | OFF | 0º a 45º |
| 2 | OFF | OFF | ON | 45º a 90º |
| 3 | OFF | ON | ON | 90º a 135º |
| 4 | OFF | ON | OFF | 135º a 180º |
| 5 | ON | ON | OFF | 180º a 225º |
| 6 | ON | ON | ON | 225º a 270º |
| 7 | ON | OFF | ON | 270º a 315º |
| 8 | ON | OFF | OFF | 315º a 360º |
En este ejemplo, la transición del sector 4 al sector 5, como el resto de las transiciones, implica solamente uno de los contactos que cambian su estado de encendido a apagado o viceversa. Esto significa que la secuencia de los códigos incorrectos demostrados en la ilustración anterior no puede suceder aquí.

## Codificador rotatorio relativo

El codificador rotatorio relativo (también llamado codificador incremental) se utiliza cuando los métodos de codificación absolutos sean demasiado incómodos (debido al tamaño del disco modelado). Este método también utiliza un disco unido al eje, pero este disco es mucho más pequeño marcado con una gran cantidad de líneas de la parte radial como los radios de una rueda. El interruptor óptico, parecido a un fotodiodo, genera un pulso eléctrico cada vez que una de las líneas pase a través de su campo visual. Un circuito de control electrónico cuenta los pulsos para determinar el ángulo con el cual el eje da vuelta.
Este sistema, en su forma más simple, no puede medir el ángulo absoluto del eje. Puede medir solamente el cambio en ángulo concerniente a cierto dato arbitrario, tal como posición del eje cuando la energía fue encendida. Esta incertidumbre no es un problema para los dispositivos de entrada de la computadora tales como ratones y trackball. Cuando la posición absoluta debe ser sabida, un segundo sensor puede ser agregado que detecta que el eje pasa por su posición cero.
El segundo problema de este sistema es que no puede decir qué dirección está rotando el eje. Para superar este problema, el sensor óptico se debe aumentar a dos sensores colocados en ángulos diversos alrededor del eje. La dirección de rotación se puede deducir en orden en la cual los dos sensores detecten cada línea radial. Este tipo de codificador se conoce como codificador de la cuadratura.

## Codificador rotatorio limitado

Si el fabricante mueve un contacto a una diversa posición angular (en la misma distancia del eje del centro), después el patrón correspondiente al anillo necesita ser rotado el mismo ángulo para dar la misma salida. Si el segmento más significativo (el anillo interno en el cuadro 1) se rota bastante, empareja exactamente el anillo hacia afuera.
Por muchos años, Torsten Sillke y otros matemáticos creyeron que era imposible codificar la posición respecto a un limitado de modo que las posiciones consecutivas diferencian en solamente un sensor, a excepción del sensor 2, codificador de la cuadratura de la uno-pista. Sin embargo, en 1996, Paterson y Brandestini publicaron un papel que demostraba que era posible, con varios ejemplos.

## Uso industrial

La variante de la cuadratura es la más frecuente de uso industrial, aun cuando es sofisticado y los transductores absolutos más resistentes han estado en el mercado por un tiempo. La mayoría de los usos están satisfechos con una función autoguiada hacia el blanco inicial en energía hasta que alcanzan la colocación absoluta deseada. El cableado simple está asociado a los codificadores de la cuadratura. Y como tal, ha llegado a ser notablemente más barato que el resto de las operaciones de precisión. El único competidor serio que ha notado es el discernidor de imágenes. Esto será debido al discernidor de imágenes que es capaz de soportar así mismo los ambientes del picadillo como el funcionamiento de líquidos.
Otra tendencia que puede suceder son los transductores modernos que se diseñan al salir la cuadratura mientras señala que no son realmente codificadores de la cuadratura en todos.
Durante los años 1980 y 1990, el ratón, con el interior rotatorio de dos codificadores de la cuadratura era popular como socio al fenómeno de interfaz gráfica de usuario de levantamiento. Este aparato iba a ser utilizado como estación de trabajo pero fue considerado una aceptación mucho más grande para la computadora.
El codificador rotatorio vio que una declinación rápida en este papel como el ratón óptico llegó más lejos en la escena en el año 2000. Como nota lateral, estos "opticales" también producen la cuadratura que señala, aun cuando el mercado masivo de la PC ha utilizado siempre el puerto serial del comando para recolectar los deltas.
Un ejemplo de codificadores tanto rotativos como lineales es la marca TR Electronic, marca alemana pionera en el mundo de los sistemas de posicionamiento, especializada en todo tipo de codificadores sobre todo para uso industrial.