¿Qué es un Encoder? En muchas aplicaciones diarias (electrodomésticos, equipos de audio, de radio, etc.) encontramos un mando de selección que siempre posee un relieve importante en el frente de la aplicación y se presenta como una rueda de tamaño notorio. Se suele utilizar para ajustar volumen, sintonía de radio o para recorres las múltiples variantes de un menú de opciones. Es un mando que gira sin topes y al que podemos encontrarle infinitas aplicaciones prácticas dentro de nuestros proyectos. El propósito del artículo de hoy es poner en funcionamiento un circuito “encoder” y prepararlo para futuras aplicaciones que pueden incluir control de velocidad de motores hasta el mando de sintonía de un receptor.
Ahora que ya entendemos que un encoder es esa gran rueda que muchos equipos poseen en su frente y nos permite seleccionar parámetros que el fabricante pensó para nuestra comodidad de uso; podemos dar un repaso a su funcionamiento que, por cierto, es muy sencillo y fácil de comprender. Con la ayuda de gráficos muy elementales podremos iniciar la comprensión de esta herramienta que será muy útil en muchos desarrollos que podamos requerir. En esta etapa inicial no hablaremos de ninguna aplicación definida, sino que nos limitaremos a asignarle valores a una variable con el simple hecho de girar hacia un lado y hacia otro, la “rueda de mando”. En la faz constructiva, algunos diseñadores se inclinan por utilizar pequeños imanes y sensores de efecto Hall. Otros utilizan discos ranurados (el clásico mecanismo del ratón de ordenador) con la ayuda de acopladores ópticos en forma de U mientras que nosotros emplearemos aquellos que son similares a los potenciómetros convencionales pero que, como mencionamos en el sumario, no poseen topes y giran sin fin. Si aún no tienes claro de qué estamos hablando, observa este video.
La elección de este tipo de dispositivos radica en su facilidad de montaje, de su obtención y su bajo costo. Muchos viejos sistemas de sonido poseen este elemento que puede resultar muy útil para este trabajo. Su aspecto externo es el de un potenciómetro, pero sus conexiones devuelven una secuencia de contactos organizadas en cuadratura y entregadas en forma de contacto eléctrico como vemos en la imagen siguiente. Una de las cosas importantes a destacar en este punto es que estos dispositivos “no siempre” respetan un orden universal en su distribución de pines. Es decir, en algunas oportunidades el punto central es el común a GND y en otros es alguno de los extremos. La manera de saber el correcto conexionado puede ser resuelto de dos maneras muy sencillas. Una es mirando el PCB de donde extraemos el dispositivo y observando la distribución de vías (será muy sencillo descubrir cuál es GND). La otra es utilizando el multímetro hasta descubrir el pin común a ambos interruptores. Porque en realidad es eso lo que posee un encoder en su interior, dos interruptores con una conexión común a GND.
Como todo en la vida, las ventajas de facilidad de uso que brinda un encoder se ven opacadas por la rapidez en que estos componentes presentan algunas fallas. El deterioro de los contactos mecánicos internos y los problemas de ruidos eléctricos cuando son afectados por la suciedad, son las primeras causas de fallos en este tipo de dispositivos. Esos dos fantasmas siempre acechan a la durabilidad y eficiencia de un encoder. Por ejemplo, un par de sensores de efecto Hall y dos imanes serían eternos y no presentarían fallas durante toda su vida útil. Sin embargo, en el equilibrio que componen la practicidad, la complejidad constructiva mínima y los costos, hacen que el encoder rotativo tipo potenciómetro, sea la solución más eficiente. Por este motivo, los diseñadores de los equipos de consumo masivo han adoptado esta clase de encoders. Economía y funcionamiento eficaz durante un tiempo prudencial de vida útil. Por citar otro ejemplo, los antiguos ratones de ordenador utilizaban encoders ópticos y eran un sistema propenso a fallar con la suciedad y el polvo ambiente. Sin embargo, las fallas eran originadas por otros factores y no ése. Por lo tanto, utilicemos lo que el reciclado electrónico nos ofrece y aprovechemos los beneficios de los encoders mecánicos, tipo potenciómetro.
El funcionamiento básico de un encoder se sustenta, como mencionamos antes, en dos llaves individuales con una conexión común a GND y que se activan una tras otra con un desfasaje de 90 grados. En uno de los sentidos de funcionamiento, uno de los impulsos obtenidos en los resistores pull-up (A) se adelantará 90° al otro (B) y en el sentido inverso B se adelantará a A. Así de simple y sencillo. Lo mismo ocurre con el programa del microcontrolador, cuando uno de los pines conectados a cada llave recibe el impulso antes que el otro, determina el modo de trabajo en que el software resolverá el sentido de giro y la cantidad de impulsos contados. Para esta tarea se utiliza una interrupción activada por hardware con las llaves conectadas en RB0 y RB1 y el PIC interpretará una interrupción por RB0 (INT0).
El modo de trabajo es el siguiente: Observo el estado lógico de RB0. Si está en estado alto, “asumo y espero” (de manera ideal) que RB0 pase con un flanco negativo a estado bajo (de 1 a 0), para luego recibir en RB1 un estado alto a partir de un estado bajo (de 0 a 1). Si esto ocurre, incremento el contador de una variable e interpretaré que estoy girando en sentido de las manecillas del reloj (CW). Si en cambio, el que primero sube a un estado lógico alto es RB1 y luego lo hace RB0, por supuesto, con un flanco ascendente, interpretaré que estoy girando en el sentido inverso al anterior (CCW). Por lo tanto, el microcontrolador pondrá especial atención en esperar los acontecimientos en un pin y luego en el otro para saber si debe sumar o restar unidades a una variable. Como función adicional, el código utilizado, se incrementa hasta un valor “techo” y a pesar de hacer girar el mando en sentido de aumentar el valor indicado este permanecerá estable en el máximo seleccionado. Por supuesto, también colocamos un “piso” donde el valor por lógica es el cero. Es decir, una vez alcanzado el cero, no vuelve a “descontar” a partir de un máximo.
En el caso de reemplazar a un potenciómetro (como hemos hecho hoy nosotros) ahorraremos una entrada A/D (cuando estos recursos son escasos) o podremos utilizar microcontroladores de gama baja que no posean este tipo de interfaces. Además, un encoder brinda un toque de jerarquía a cualquier desarrollo que necesite un control manual. Por ejemplo, el dial de una radio (como la imagen del sumario) sería muy aburrido con un par de teclas para subir y bajar sintonía. La acción de una rueda para la función de dial es mucho más atractiva y estética. Como siempre, al final del artículo, te dejamos el código fuente para que puedas leerlo, interpretarlo y adaptarlo al lenguaje de programación que te resulte más eficaz y apropiado. El circuito impreso listo para imprimir estará en el mismo archivo comprimido para que puedas armar tus prácticas con la Entrenadora NeoTeo y tu futuro sistema encoder. Por último, no olvides que estamos en el Foro de Electrónica de NeoTeo para ayudarnos a aprender entre todos. ¡Súmate!