Instituto Polit�cnico Nacional
Instituto Politécnico Nacional
"La Técnica al Servicio de la Patria"
Error
  • JUser: :_load: No se ha podido cargar al usuario con 'ID': 77

Boletín No 50
1 de septiembre 2015

 

 

 

IMPLEMENTACIÓN DE DECODIFICADOR INCREMENTAL ALTERNATIVO EN PIC PARA ENCODER

 

Hernández Girón Alan,
10mo Semestre
Dra. Yesenia Eleonor González Navarro
email: Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Teléfono: 52 (55) 57296000 ext. 56867
Unidad Profesional Interdisciplinaria en Ingeniería y Tecnologías Avanzadas-IPN

 

Resumen

Existen diversas metodologías para la decodificación incremental (señales en cuadratura) de distintos dispositivos, como es el caso del sensor encoder. Estos métodos se basan en el uso de interrupciones en controladores y mediante la lectura de los canales A y B se determina la dirección de movimiento. Sus limitaciones comienzan para la lectura de diversos encoders, debido a que sus mediciones son independientes entre sí y pueden realizarse interrupciones durante el tiempo de decodificación, ocasionando perdida de la posición real del sistema. Este trabajo propone un código decodificador de señales en cuadratura (inspirado en el controlador LS7184) implementado en un microcontrolador de gama baja PIC10F200 reduciendo tiempos de decodificación y costos, que es controlado por un código maestro, logrando la medición de cuatro motores en un móvil omnidireccional. Palabras Clave: Decodificador, señal en cuadratura, driver, controlador, encoder incremental, odometría, sistema multi-encoders.

 

 

Introducción

Los dispositivos de lectura odométrica se ha utilizado continuamente para robots móviles, ya que brindan el posicionamiento del mismo y la posibilidad de manipular su velocidad, aceleración y trayectoria. Pese al error que se generan debido al deslizamiento de ruedas, continúa siendo un dispositivo muy utilizado como retroalimentación en sistemas de posicionamiento y autolocalización en ambientes.

Con el desarrollo de nuevos sistemas, como es el caso de los móviles omnidireccionales, se han implementado estos sensores a los sistemas, sin embargo, para la multilectura de encoders los requerimientos en controladores cambian, el pasar de un móvil diferencial a un móvil omnidireccional hace insuficientes diversos métodos tradicionales de decodificación a altas velocidades, por lo que se tienen que buscar distintas metodologías para un correcto funcionamiento del sistema.

El presente trabajo se desarrolla de la siguiente manera: una vista general al encoder incremental, la codificación incremental en sus métodos bidireccionales de alta resolución, la propuesta de un decodificador alternativo, mostrando los resultados obtenidos y una conclusión del sistema.

 

Encoder Incremental

Posee un mínimo de dos canales de salida (Canal A y Canal B), en donde los pulsos están desfasados 90° de un canal con respecto del otro y dependiendo de la secuencia de pulsos generada es posible determinar el sentido de movimiento. Algunos encoders de incremento también producen otra señal conocida como “índice” o “canal Z” que es producida una vez cada determinada distancia (Fig. 1).

image001

Figura 1. Salidas de los distintos canales de un encoder incremental

Codificación Incremental Es posible utilizar la lectura de un solo canal de salida para aplicaciones donde el sentido de la dirección de movimiento no es importante (unidireccional). En donde se requiere conocer el sentido de dirección, se utiliza la salida de cuadratura (bidireccional), con los canales conocidos como canal A y canal B, de 90 grados eléctricos fuera de la fase.

Para realizar las mediciones del dispositivo se emplean los distintos tipos de resolución, dependiendo de las necesidades y precisión del sistema. El presente trabajo se centra en las resoluciones alta(x4) bidireccional.

Resolución Bidireccional x4

Se utilizan flancos de subida y de bajada para ambos canales, esto brinda mayor precisión al sistema, también mayores requerimientos y un menor tiempo de interpretación (Fig. 2).

image002
Figura 2. Seguimiento de flancos de subida y de bajada en modo x4

Tabla 1.- Análisis de la metodología bidireccional x4

Requerimientos en el controlador Ventajas Desventajas
Se requieren 2 pines de entrada que se pueda configurar para interrupciones Resolución alta. Se requieren dos pines de interrupción del controlador por motor. El tiempo corto para decodificar

 

Resolución Bidireccional x4 con Compuerta XOR

En diversas aplicaciones se utiliza una compuerta XOR con la finalidad de disminuir los pines de interrupción en el controlador, dado que la salida cambia de estado cada vez que ocurre un movimiento en las señales A y B.

Aunque solo necesitemos un pin de interrupción para este modo bidireccional x4, se requieren otros dos pines de entrada normales para monitorear las señales A y B y determinar el sentido de dirección.Ver Fig. 3.

image003
Figura 3. Seguimiento de la salida de la compuerta XOR dependiendo de la entrada que recibe de los canales A y B

 

Requerimientos en el controlador Ventajas Desventajas
1 pines de entrada que se pueda configurar para interrupciones (canal XOR). 2 pines normales de entrada (Canales A y B) Resolución alta. Se requieren tres pines del controlador por motor. Requiere mayor número de instrucciones para decodificar con tiempo corto de decodificación.

 

Decodificador Alternativo en PIC

Dada la necesidad de una resolución bidireccional alta para cuatro encoders en un móvil omnidireccional no se pudo utilizar una metodología existente dado que:

• La mayoría de controladores no proveen un número tan extenso de pines de interrupción.
• Para el registro de varios encoders independientes no se garantiza un conteo exacto debido a que si se generan interrupciones en el tiempo de decodificación se perderá el registro de mínimo una de las señales.

Para solucionar la segunda problemática se realiza una decodificación en el menor tiempo posible con ayuda de controladores, disminuyendo drásticamente el tiempo de decodificación y la probabilidad de empalme de interrupciones.

La opción en el mercado que satisface estos requerimientos se encontró en el controlador LS7184, pero debido a un costo excesivo de envío (13 veces mayor al costo del producto) y a los tiempos de entrega se optó por implementar un código a un microcontrolador PIC de gama baja para que realice la misma función.

El microcontrolador utilizado es el PIC10F200, microcontrolador de gama baja que posee 3 pines de entrada y/o salida y un pin que es solo de entrada, la frecuencia de operación es típicamente a 4 MHz (1µs ciclo de instrucción) y es ajustable mediante programación.

La salida generada consiste en establecer un pin de dirección, que estando en alto especifica un sentido de movimiento y estando en bajo representa el sentido opuesto; y otro pin que manda un pulso negativo (alto-bajo -alto) para mandar el dato adquirido como interrupción a otro dispositivo mientras se leen los canales del encoder (inspirada a la del driver LS7184). La lógica de programación se muestra en (Fig. 4).

image004
Figura 4. Máquina de estados del código a implementar para el decodificador alternativo

Este código se emplea para cada encoder y se manipula por un dispositivo maestro para el almacenamiento de la posición de los 4 motores, con una disminución significativa de requerimientos tanto en código como en hardware. De esta manera con el dispositivo maestro, por medio de interrupciones de flanco de bajada se detecta el movimiento de cada motor y leyendo el pin de dirección del decodificador del motor correspondiente se identifica el sentido de dirección (1 pin de interrupción y un pin de lectura).

image005
Figura 5. Máquina de estados para control maestro del decodificador alternativo

 

Resultados

El programa se adaptó y probó para controlar cuatro encoders en cuadratura rotacionales magnéticos de codificación incremental con salida en cuadratura que se encuentran en los moto-reductores “75:1 Metal Gearmotor 25Dx54Lmm HP with 48 CPR Encoder” de la marca Pololu (como se indica, brinda 48 conteos por revolución del encoder en modo x4 y, asociado a una caja de engranajes con relación encoder-motor de 74.83:1, proporciona 3592 conteos por revolución del motor) a un voltaje de 9 volts (cerca de 185 rpm cada motor) que tarda 75 microsegundos en realizar cambios de estado a la salida de las señales para cada motor.

image006
Figura 6. Medición de los motores a 9 volts. Motor 3 a 189.48 rpm

Tarda un máximo de 50 ciclos de máquina en realizar la medición más tardada, que es el pasar del estado 00 al 10. En este microcontrolador se traduce típicamente en 50 microsegundos, pero como se requiere utilizarlo a su máxima velocidad de trabajo, se espera un tiempo menor.

 

Conclusiones

En las diversas pruebas realizadas no se muestra pérdida de la posición para ningún motor, aunque el código para el dispositivo maestro se redujo a cuatro líneas de código. Cabe la probabilidad de que se generen diversas interrupciones al mismo tiempo causando pérdidas de posición. Debe aclararse que esta problemática es propia del dispositivo maestro utilizado y no del método propuesto. El Decodificador Incremental Alternativo en PIC para encoder ha mostrado resultados excelentes, con una disminución en costos del 87.10%.

 

Referencias

[1] Ramón Pallás Areny (2003). Sensores y Acondicionadores de Señal (4ta Edición), Boixareu Editores
[2] West Instruments de México, MANUAL DE APLICACIÓN DE ENCODERS. [Último acceso 21 mayo 2015] Disponible en: http://www.westmexico.com.mx/pfd/dynapar/catalogos/4.-Manual%20de%20Aplicacion%20de%20Encoders.pdf
[3] http://facultad.bayamon.inter.edu/arincon/encoderincrementales.pdf
[4] http://www.datasheetcatalog.com/datasheets_pdf/L/S/7/1/LS7184.shtml
[5] http://www.datasheetcatalog.com/datasheets_pdf/P/I/C/1/PIC10F200.shtml
[6] http://www.ni.com/tutorial/7109/es/