Encoder

Introducción.

Existen dos tipos de encoder: el absoluto y el incremental. Voy a tratar exclusivamente el encoder incremental porque es el más sencillo de construir, económico y además puede tener la resolución que desees. Una vez que tienes la posición "cero" el encoder incremental se comporta igual que un encoder absoluto. Si necesitas una introducción básica sobre el funcionamiento haz clic en este enlace.


Aunque voy a mencionar tres tipos de encoders incrementales: ópticos, magnéticos (a este tipo le dedico una página aparte) y mecánicos, esta sección está dedicada a los ópticos.

Los encoders ópticos son versátiles en el sentido de que hay muchos tipos y resoluciones, por tanto suelen ser los más utilizados. El único problema es que les afecta la contaminación; el polvillo puede acumularse en los diodos emisor y receptor pudiendo crear dificultad para la lectura y tiene poca tolerancia a las temperaturas altas. De todas formas esto que comento es en un sentido extremo, en ambientes normales y con la debida precaución funcionan estupendamente bien.

En otro apartado hablo de los Encoders de efecto Hall, son magnéticos y no les afecta la contaminación ambiental ni el exceso de calor.

                         
    
             
                     
En la foto de arriba a la izquierda puedes ver simples foto-barreras. Está compuesta por un emisor y un receptor de infrarrojos (IR) enfrentados a corta distancia, en particular es el modelo TCST 1103. Necesitamos dos de estas foto-barreras para formar un encoder óptico. La foto central es un encoder experimental muy rústico, pero para comenzar es lo que recomiendo porque se hace más evidente el funcionamiento. Tiene un disco dentado sobre el eje del motor. Las dos foto-barreras (han de estar pegadas una contra la otra) leerán los pulsos y estos más tarde, con una electrónica determinada, se convertirá en posición o ángulo. La imagen de la derecha es un pequeño esquema. Los valores de las resistencias son aproximados; por ejemplo: las resistencias de 5K pueden rondar un valor de 1K a 20K, y las de 220 ohmios pueden rondar valores de 150 a 500 ohmios, todo esto es cierto mientras estemos trabajando con 5 voltios. Haz clic en las imágenes si necesitas ampliación visual.


El disco no ha de ser de plástico porque la luz infrarroja suele atravesar la mayoría de ellos. La mejor opción es usar cartón rígido o chapa de una lata, ambos se pueden mecanizar (cortar) con unas simples tijeras. El cartón rígido lo puedes conseguir de alguna vieja libreta de tapa dura. Usa un piñón de plástico o pequeño engranaje que encaje con el eje del motor y pegar el disco dentado con pegamento instantáneo al piñón o engranaje para hacer de base al disco dentado. De esta forma evitarás que se mueva fuera de donde debe y se mantenga siempre plano. Las aspas (o dientes) y los vacíos entre las aspas (o dientes) han de ser igual o un poco mayor que las dos foto barreras juntas. Evita utilizar fotolito para crear el disco porque necesita una electrónica un poco especial y ajustes para acondicionar las señales de salida.

Desfase de 90 grados.

Los encoders incrementales tienen 2 salidas básicamente que dan las dos ondas, en teoría cuadradas, desfasadas 90 grados cuando hay movimiento. Los encoders industriales muchas veces tienen (sin contar las de alimentación si las tuviera y otras características adicionales) una tercera salida llamada "Index" que sirve para indicar que se ha dado una vuelta completa.

Encoder mecánico.

Otro tipo de encoder son los mecánicos o "tipo potenciómetro" (imagen izquierda; recuerda que no tienen nada que ver con los potenciómetros resistivos, se le nombra así por la semejanza física) son útiles para movimientos lentos, como por ejemplo el control de volumen del sonido. Desaconsejo utilizarlos como control de posición o velocidad en una reductora con motor porque sufriría mucho desgaste debido a que funcionan por contacto mecánico y a altas velocidades sencillamente se estropean. Las salidas pueden llevar un filtrado capacitivo, es decir, a cada salida se le puede poner un condensador para compensar el "rebote" que tienen los contactos mecánicos, de esta forma se evita el falso conteo; los capacitores actúan como anti-rebotes pasivos. Aunque no suele ser necesario ese filtrado capacitivo, por regla general y para curarse en salud, es mejor ponérselo y una vez que veas que funciona correctamente prueba sin ellos. Si el programa del microcontrolador funciona por bucle infinito (cuando no utiliza la interrupción externa para contar) no te hará falta poner los capacitores; de hecho con ese método (bucle infinito) es con el que mejor funciona.


Acondicionar las señales del encoder óptico.

Cuando manejamos encoders ópticos es esencial acondicionar las señales de salida porque aunque pueden parecer digitales no lo son. En realidad son señales analógicas y hemos de poner un circuito activo que elimine la transición (el tiempo) que hay entre cero y la tensión máxima lo más rápido posible.

Nota: Verás que en este apartado hago comentarios sobre control de motores y siempre me estaré refiriendo al método de control más simple que existe; se trata de un comparador numérico. Este tipo de control tiene unas características particulares dependiendo del tipo de acondicionador que utilices. 

Tienes tres tipos.
  • Acondicionador Disparador Schmitt: Transforma señales analógicas a niveles lógicos puros. Como opción de acondicionador es el estándar y funciona estupendamente bien. Lo puedes utilizar cuando el programa lector de encoder funciona tanto por interrupción externa como por bucle infinito. Si lo aplicas a contadores reversible (electrónico puro) es casi inevitable implementarlo. 
Normalmente se utiliza el inversor lógico llamado "puerta Not" con disparador Schmitt (lo de menos es el tipo de puerta lógica, lo que importa aquí es el disparador Schmitt) y siempre recomiendo que sea de tecnología TTL. El símbolo que hay dentro del triángulo y que he coloreado en rojo significa que esa puerta lógica tiene disparador Schmitt (Schmitt-trigger). No utilices puertas lógicas sin disparador Schmitt porque no sirve como acondicionador, es necesario que la puerta lógica tenga el susodicho disparador.

Encoder acondicionado disparador Schmitt

¿Cuándo utilizar y cuándo no utilizar este tipo de acondicionador? Este método es perfecto para la gran mayoría de los casos. En inconveniente viene a la hora de controlar un motor con algoritmo de comparación numérica "en vacío", es decir, sin engranajes ni carga. Una vez que el motor llega a la posición que le designamos sigue en movimiento pendular entre dos posiciones y a no ser que exista algún tipo de suave rozamiento, no deja de pendular.

Histéresis electrónica.

Esto se debe a que el disparador Schmitt tiene una histéresis (ver imagen de arriba), pero es tan pequeño este efecto que normalmente deja de hacerlo si hay contacto directo entre el piñón del eje del motor con los engranajes de la reductora, pero en algunos casos puede persistir, especialmente cuando los engranajes de la reductora tienen mucho "juego" (backslash). Existen formas de evitar ese movimiento de vaivén y explico una técnica usando PWM en uno de los apartados de control de motores.


  • Acondicionador con transistor: Este tipo se puede utilizar cuando el lector de encoder funciona por bucle infinito; es decir, cuando el microcontrolador comprueba continuamente el estado del encoder, o dicho de otro modo, cuando no utiliza la interrupción externa (RB0/Int).

Es simplemente un circuito que amplifica las señales del encoder en modo corte-saturación. Normalmente las salidas de los encoders ópticos dan dos señales supuestamente digitales, pero en realidad son analógicas si salen directamente de los foto-transistores (ver esquema de abajo, puntos A y B en rojo). Para que esas señales sean lo más digital posible se han de amplificar mucho y así evitar estados intermedios que puedan crear falso conteo.

Acondicionador de encoder con transistor.

Se puede utilizar simples transistores de propósito general con beta o hFE (beta o hFE es la ganancia o factor de amplificación) de 100 o más; en mi caso particular utilizo el BC549. Tú usa lo que tengas a mano procurando que la beta o hFE sea mayor de 100; también puedes hacerlo en modo Darlington para multiplicar la ganancia de ambos transistores. En esta página puedes ver un ejemplo práctico realizado por otro autor.

¿Cuándo utilizar y cuándo no utilizar este tipo de acondicionador? Es el más barato y no tiene la indeseable histéresis (es sólo indeseable en el control de motores). Si el programa del microcontrolador funciona por interrupción externa o tiene una electrónica basada en contadores reversibles, no es nada aconsejable poner este tipo de acondicionador porque la interrupción se puede disparar cuando no debería y podría llegar a leer estados intermedios (que no es ni cero ni uno) pudiendo dar error de contaje. Pero si el microcontrolador funciona por bucle infinito (cuando el programa del microcontrolador no utiliza interrupción externa para contar) este acondicionador funciona perfecto. A la hora de controlar un motor este acondicionador funciona genial porque no tiene histéresis, y eso significa que cuando el motor llegue a la posición deseada, el movimiento pendular (movimiento constante entre dos posiciones) será prácticamente nulo y te ahorras el engorroso control PID como verás en otro apartado sobre control de motores.

  • Acondicionador con Amplificador Operacional: Este tipo de acondicionador es el ideal porque, además de no tener histéresis, se puede aplicar a todos los tipos de lectores de encoder, tanto en bucle infinito como por interrupción hardware.
Acondicionador de señales de encoder sin histéresis con amplificador operacional.

El funcionamiento es por comparación de voltajes. Los amplificadores operacionales (AO) tienen dos entradas nombradas con los símbolos '+' y '-', y una salida. Ponemos el voltaje de referencia en el símbolo "menos" y el voltaje a comparar en el símbolo "más". Cuando el voltaje de entrada "más" supera el valor de referencia, a la salida habrá un 1 lógico; y cuando sea menor o igual al voltaje de referencia a la salida habrá un 0 lógico. El LM358 tiene la particularidad de funcionar con 5V (de hecho se puede alimentar a partir de 3V hasta un máximo de 32V) y contiene dos amplificadores operaciones en el mismo integrado, justo los que necesitamos, y como es un chip estándar sale bastante económico. Inicialmente recomiendo poner la tensión de comparación a 3/4 de la tensión máxima en el ajuste de la entrada negativa del comparador correspondiente. Una vez que experimentes un poco puedes eliminar las resistencias variables y sustituirlo por dos resistencias que harán de divisor de tensión con la tensión equivalente que mejor resultado te haya dado.

Con este diseño sí puedes utilizar fotolito para crear discos de encoder, pero es un tanto delicado; hay que imprimir bien las franjas negras y según la calidad de la impresora (láser normalmente) a veces hay que poner varios discos juntos para que sea efectivo; en este sentido es altamente recomendable ver las señales en un osciloscopio para asegurarse de que todo funciona perfecto. Recomiendo poner resistencias variables multi-vuelta en vez de resistencias variables normales para tener un ajuste más fino.


Tipos de lectores de encoder incremental.

El lector de encoder por Hardware (electrónico puro) se hace con contadores reversibles y es el más rápido, pero tiene como contrapartida más componentes que el encoder a través de un microcontrador. Todo depende de las necesidades del proyecto.

El lector de encoder por Software se hace a través de un microcontrolador. Recomiendo este tipo de lector porque es muy sencillo de fabricar y tiene muy pocos componentes. Para velocidades normales trabaja sin problemas. El lector de encoder por software se puede programar de dos maneras; una es por bucle infinito y la otra es por interrupción externa como se verá más adelante.

IR A: