ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA Uso de Matlab y Simulink para el control de robots y la observación de sensores de luz y ultrasónico Mariano Malavé (1), Manuel Nevárez (2), Pedro Vallejo (3), Carlos Valdivieso (4) Facultad de Ingeniería en Electricidad y Computación (1) (2) (3) (4) Escuela Superior Politécnica del Litoral (ESPOL)(1) (2) (3) (4) Campus Gustavo Galindo, Km 30.5 Vía Perimetral, Apartado 09-01-5863. Guayaquil, Ecuador (1) (2) (3) (4) marianomalave@hotmail.com (1), papuec@hotmail.com (2),pvallejo2806@hotmail.com (3), cvaldiv@fiec.espol.edu.ec (4) Resumen El proyecto que a continuación se presenta consiste en el diseño y construcción de un Brazo Robótico con Banda Transportadora, este proyecto está basado en el principio de una envasadora de bebidas. El objetivo principal es introducirse en el campo de la robótica, utilizando el kit de Lego Mindstorms NXT y herramientas de software como Matlab y Simulink. El brazo tiene dos etapas de secuencia, una para detectar que los recipientes que van a circular por la banda están con el nivel correcto y la segunda para niveles incorrectos. Estos niveles son medidos con el sensor ultrasónico. El sensor de luz cumple la función de detectar la presencia del recipiente; y el sensor de tacto se usa para detener la secuencia del brazo robótico. En la programación de Matlab se crea un algoritmo para obtener la adquisición de datos del sensor ultrasónico en tiempo real. Se utiliza el servo HITEC-HS311 para mover la banda transportadora, el cual es controlado por el PIC- 16F628A. Además se utiliza dos sensores infrarrojos como entradas en el PIC, con la función de hacer dos pausas al servo, la primera para que el sensor ultrasónico mida el nivel del recipiente y la segunda para que el brazo agarre el recipiente. Palabras claves: NXT, servo, PIC Abstract This project consists in the design and construction of a Robotic Arm with a belt conveyor, it is based on the principle of beverage containers. The main objective is to work in the field of robotics using the Lego Mindstorms NXT kit and software tools such as Matlab and Simulink. The Robotic arm has a two stages sequence, one to detect the right level of containers and the second to detect the wrong level. These levels are measure by an ultrasonic sensor. The light sensor detects the presence of the container, and the touch sensor is used to stop the sequence of the robotic arm. Matlab is used to create an algorithm for the acquisition of ultrasonic sensor data in real time. The servomotor HS311 is used to move the conveyor belt, which is controlled by the PIC-16F628A. In addition, two infrared sensors are used as inputs to the microcontroller, one is to read the level of container and the second to grab the container. Keywords: NXT, servo, PIC ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA 1. Introducción El presente proyecto tiene como finalidad el diseño y construcción de un Brazo Robótico con Banda Transportadora. La cual es una de las muchas aplicaciones que se puede realizar con Lego en el campo de la robótica. La implementación del proyecto se realizará con las piezas de Lego NXT, que incluyen cuatro sensores (ultrasónico, luz, tacto y sonido) y tres servomotores para el Brazo Robótico; y para el circuito de control de la Banda Transportadora se utilizará el PIC 16F628A. [8] Se explica las herramientas de hardware, equipos y materiales adicionales utilizados en la construcción de la Banda Transportadora. Para la programación del Brazo Robótico se usa Matlab, se describe también las herramientas de software utilizadas para la programación del PIC. 2. Aplicaciones Este proceso es utilizado en el control de calidad de algunas envasadoras de bebidas, la mayor parte de los envases que contienen niveles inferiores al establecido por el fabricante son rechazadas, produciendo pérdidas en la producción. Nuestro sistema propone que los envases que no completan el llenado, puedan ser retornados a la línea de producción para que cumpla los requerimientos del nivel de producto. 3. Herramientas de Hardware utilizadas. En esta sección se detallan los equipos utilizados para la construcción del brazo robótico y la banda transportadora. 3.1 Lego Mindstorms NXT Lego Mindstorms posee elementos básicos, como la unión de piezas y la programación de acciones en forma interactiva, es usado para construir un modelo de sistema integrado con partes electromecánicas controladas por computador. En el bloque de NXT existen cuatro entradas para los sensores y las salidas son tres localizadas en la parte posterior del bloque. El bloque NXT puede comunicarse con el computador mediante la interfaz de USB. Además, para comunicarse con otros robots posee una interfaz Bluetooth que es compatible con la Clase II v 2.0. 3.2 Sensor de Luz Este sensor le permite a nuestro robot distinguir entre luz y oscuridad, midiendo la intensidad de la luz le permite a nuestro robot “ver” en blanco y negro. Este valor lo considera como un porcentaje, el cual es procesado por el bloque lógico, obteniendo un porcentaje aproximado de luminosidad. [5] 3.3 Sensor Ultrasónico Los ultrasónicos son antes que nada sonido, exactamente igual que los que oímos normalmente, salvo que tienen una frecuencia mayor que la máxima audible por el oído humano. Ésta comienza desde unos 16 Hz y tiene un límite superior de aproximadamente 20 KHz, en este caso se utiliza sonido con una frecuencia de 40 KHz, cuyo funcionamiento básico es medir distancias. 3.4 Sensor de Tacto El sensor de contacto permite detectar si el bloque que lo posee ha colisionado o no con algún objeto que se encuentre en su trayectoria inmediata. Al tocar una superficie, una pequeña cabeza externa se contrae, permitiendo que una pieza dentro del bloque cierre un circuito eléctrico comience a circular energía, provocando una variación de energía de 0 a 5 V 3.5 Servomotor de Lego En la tabla de medición, el motor estándar es más veloz que el de 9 volts, pero este último posee más fuerza para mover el robot, ya que pueden levantar cerca de 240 piezas de 8x8, pero es más lento y a la vez más preciso. El motor Micro es sólo para funciones menores debido a su escaso torque y la mínima velocidad de rotación. Tabla 1. Parámetros del Motor del NXT Motor Velocidad normal (RPM) Torque (kg/cm) Velocidad estándar (RPM) Estándar 3240 1,760 40 9 voltios 370 3.840 15 Micro 36 0,128 36 Tabla correspondiente a las mediciones para los distintos motores de Lego Robotics ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA 4. Equipos adicionales utilizados El Kit de Lego NXT solo permite conectar 3 motores y 4 sensores en sus puertos, para tener un control más completo del proceso se añadieron 2 sensores de luz infrarroja y un servomotor adicional, los cuales son controlados por un microcontrolador. 4.1 Pic16F628A Es un microcontrolador CMOS FLASH de 8 bits de arquitectura RISC capaz de operar con frecuencias de reloj hasta de 20 MHz. Posee internamente un oscilador de 4 MHz y un circuito de Power-On Reset que eliminan la necesidad de componentes externos y expanden a 16 el número de pines que pueden ser utilizados como líneas I/O (entrada/salida; Input/ Output) de propósito general. Proporciona una memoria de datos EEPROM de 128x8 (128 Bytes), una memoria de programa FLASH de 2024x14 (2K con 14 bits por localidad), una memoria de datos RAM de propósito general de 224x8, un módulo CCP (captura/comparación/PWM). [8] 4.2 Servomotor Hitec HS311 Los servos son un tipo especial de motor de D.C. que se caracterizan por su capacidad para posicionarse de forma inmediata en cualquier posición dentro de su intervalo de operación. Para ello, el servomotor espera un tren de pulsos que corresponde con el movimiento a realizar. 5. Herramientas de Software El proyecto consta de dos etapas, la primera cosiste en armar un prototipo y programarlo utilizando el software de programación de Lego Mindstorms, mientras que en la segunda etapa se utilizan las herramientas de Matlab para la programación y adquisición de datos en tiempo real, en esta etapa se incluye la programación del controlador de la banda transportadora, en el que se usó Mikrobasic. [7] [9] [10] 5.1 Programación de Lego Mindstorms NXT La programación de Lego tiene un entorno visual, el cual emula la construcción por bloques. Este lenguaje permite las instrucciones secuenciales, instrucciones de ciclos e instrucciones de decisiones, éstas últimas, basadas en los datos reportados por los sensores que se puede añadir al robot. 5.2 Matlab y Simulink Matlab es un ambiente de cómputo, de alta ejecución numérica y de visualización, que integra el análisis numérico, calculo de matrices, procesamiento de señales, diseño de sistemas de potencia, mapeo y tratamiento de imágenes, instrumentación y adquisición de datos, identificación de sistemas, graficación entre otras aplicaciones en un ambiente sencillo de utilizar. [2] Simulink es una herramienta para el modelaje, análisis y simulación de una amplia variedad de sistemas físicos y matemáticos, con dos fases de uso: la definición del modelo y el análisis del modelo. Simulink usa un ambiente gráfico lo que hace sencillo la creación de los modelos de sistemas. 5.3 RWTHMindstormsNXT y Embedded Coder Robot NXT RWTHMindstormNXT es un toolbox que ha sido desarrollado para el control de LEGO MINDSTORMS NXT con MATLAB a través de una conexión inalámbrica Bluetooth o vía USB. [7] Embedded Coder Robot NXT es la librería que proporciona los bloques de Mindstorms NXT para desarrollar un modelo en Simulink, posee una capacidad de modelado para la estrategia de control. 5.4 MikroBasic Es una herramienta de desarrollo que se permite realizar proyectos para microcontroladores PIC. Proporciona una solución fácil para aplicaciones para sistemas embebidos, sin comprometer el rendimiento o el control, desarrolla rápidamente y desplegar aplicaciones complejas. [6] 6. Descripción del Proyecto El proyecto consiste en la construcción de una banda transportadora que contiene un brazo robótico, en ella circularán recipientes llenados a diferentes niveles de producto, estos niveles serán medidos con el sensor ultrasónico. El brazo robótico clasificará los recipientes según el nivel medido. El prototipo será construido con Lego Mindstorms NXT y su programación se la realizará con Matlab y Simulink; el brazo tendrá 2 grados de libertad, utilizando 2 servomotores para mover la base de brazo y un motor que controlará el gipper o garra. Además contará con un sensor de luz para detectar la presencia de los ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA recipientes. La banda transportadora será controlada por un microcontrolador, el que tendrá como dispositivos de entrada dos sensores de luz infrarrojo y como dispositivo de salida un servomotor. Los sensores de luz infrarroja son colocados a lo largo de la banda para monitorear la presencia de los recipientes en diferentes puntos, estos sensores serán las entradas del circuito controlador de la banda; en el primer punto la banda se detendrá para hacer la mediciones de nivel y en el segundo punto la banda se detendrá para que actué el brazo robótico en la selección de los recipientes. Fig. 1: Esquema, ubicación de los sensores y motores. BANDA TRANSPORTADORA RECIPIENTE Sensores de Luz IRR E R E SERVO MOTOR Sensor Ultrasónico NXT R E Sensor de Luz NXT 6.1 Diseño electrónico del controlador de la Banda. La banda consiste en transportar los envases de producto, a lo largo de la banda se colocarán 2 sensores de luz infrarroja reflectivos, el primero hará que la banda se detenga en el punto A para sensar los niveles de producto utilizando el ultrasonido de Lego Mindstorms, luego de esto se accionará automáticamente la banda hasta que el segundo sensor detecte la presencia del envase en el punto B, aquí el brazo robótico seleccionará los envases según el nivel de producto en su interior, colocándolos en diferentes compartimientos. [4] 6.2 Diagrama de flujo del Proceso del Brazo Robótico En el diagrama observamos que la secuencia empieza por el sensor de luz, el cual verifica que cumpla con el valor establecido, si es el correcto indica que hay un recipiente en la banda transportadora. Una vez detectado la presencia del objeto, el sensor ultrasónico lee el nivel del mismo; si éste cumple con el nivel establecido el brazo robótico realiza la primera secuencia, caso contrario si éste es incorrecto realiza la segunda secuencia. Esto se realiza dentro de un lazo cerrado hasta que el sensor de tacto detecte el valor de uno, con lo cual se detiene todo el proceso. us=n1 Lee_sensor_us us=n2 Lee_sensor_tacto sw=1 0 Fin de la secuencia Lee_sensor_luz Luz=L1 Secuencia 2 del brazo robótico 1 Inicio Secuencia 2 del brazo robótico 1 1 1 1 6.3 Circuito del Microcontrolador Para controlar la banda utilizamos el PIC16F628A, al tener muy pocas entradas y salidas que manejar se eligió este microcontrolador, también por su facilidad al momento de armar el circuito ya que este PIC posee un oscilador interno. [8] Fig. 2 Circuito controlador de la Banda transportadora ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA En el puerto RB0-RB1 se conectaron los sensores B y A respectivamente, en el puerto RB4-RB5 están conectados dos leds indicadores y en el puerto RB2 se conecta el servomotor que controla el movimiento de la banda, este motor fue previamente modificado para que pueda trabajar a 360 grados y su control se lo realiza por modulación de ancho de pulso PWM. [3] Diagrama de Flujo del microcontrolador Encender Motor Banda Inicio Sensor B detecta objeto 0 Apagar Motor Banda Delay 20 segundos Encender Motor Banda Sensor A detecta objeto 1 0 Apagar Motor Banda Objeto retirado de banda 0 1 1 7. Configuración y Funcionamiento del equipo El proyecto está equipado con 5 sensores distribuidos en diferentes posiciones, los sensores del Lego NXT presentan señales digitales, en el caso del sensor ultrasónico 8 bits de resolución y el sensor de Luz 10 bits; los sensores adicionales presentan valores de voltaje que varían entre 3.5 y 4.5 Vdc. Se utilizó 2 servomotores para su movimiento (Puerto A y B), el tercer motor (Puerto C) para el control de la garra, un sensor de luz (Puerto 3) para identificar la presencia del recipiente y un sensor ultrasónico (Puerto 4) mide los niveles de producto. Para el diseño de la banda transportadora utilizamos un circuito controlador mediante el PIC16F628A, el servomotor (Puerto RB2), 2 sensores de luz infrarrojo (puerto RB0 y RB1) y un sensor de tacto (Puerto RB3). Fig. 3 Brazo robótico con Banda Transportadora 7.1 Tarjetas electrónicas (PCBs) Para el diseño de las tarjetas se utilizó el software PROTEL 99 SE, la programación se la desarrolló en lenguaje C usando el compilador de mikroBASIC, para grabar el microcontrolador se utilizó el quemador de Microchip PICkit 2. [1] Básicamente el control de la banda contiene 3 tarjetas electrónicas independientes: Tarjeta Controladoras, Sensor Infrarrojo y fuente de Poder. Los elementos de entrada son 2 sensores infrarrojos y un sensor de tacto, mientras que a la salida del controlador se conecta un servomotor HITEC HS311 modificado para que trabaje a 360 grados. Fig. 4 Esquema de conexión entre las tarjetas electrónicas Circuito Controlador Sensor-A (IR) Sensor-B (IR) Sensor-Tacto Servomotor Tarjeta Sensor de Luz 8. Calibración de Sensores del NXT. Para la calibración de los sensores de luz y ultrasónico se usó la herramienta Watch Sensor GUI, la cual permite fijar los parámetros para el brazo robótico. ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA Dentro del toolbox de Matlab RWTH - Mindstorms NXT se encuentra la herramienta Watch Sensor GUI, esto nos permite una visualización gráfica de los valores analógicos medidos por los sensores de Lego NXT. Podemos ingresar a esta herramienta mediante la ayuda de Matlab. Fig. 5 Help de Matlab en la librería RWTH Mindstorms NXT El sensor de luz tiene una resolución de 10 bits, es decir presenta valores de 0 a 1024, se lo ha conectado en el puerto 3 del NXT. En la figura 4.2.2 se presentan valores inferiores a 350 bits, todo lo que está por debajo de este rango significa que no hay presencia de algún objeto frente al sensor. Todos los valores que están sobre los 420 bits representan presencia de un objeto claro en frente del sensor. Fig. 6. Rango de Valores de sensor de luz El sensor ultrasónico tiene 8 bits de resolución, es decir que presenta valores entre 0 a 256, para el proyecto utilizaremos envases con tres niveles de producto, vacío, medio y lleno respectivamente. El sensor está clocado a una altura de 9.5cm. de la banda transportadora. Tabla 2: Valores medidos en el sensor de Ultrasonido La superficie de color blanco en las gráficas mostradas representan los valores medidos de los sensores en diferentes condiciones de nivel. Fig. 6 Rango de Valores, Sensor Ultrasónico en nivel de producto Vacío, intermedio y lleno de arriba a abajo respectivamente. Conclusiones 1.- El desarrollo de este proyecto es un Brazo Robótico con una Banda Transportadora, aplicación del campo de la robótica con el cual aportamos una solución de diseño para mejorar la calidad de una línea de producción en una industria envasadora de bebidas, a Niveles Valor Medido (Bits) Cero 11 Vacío 9 Medio 8 Lleno 7 ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA su vez mejorar el orden de almacenamiento de los envases que tiene el nivel correcto y rechazar los envases que tienen un nivel fuera del rango. 2.- Con el principio del prototipo inicial del proyecto, se determinó la aplicación de los sensores con las siguientes funciones: el sensor de luz detecta la presencia del recipiente, el sensor de ultrasonido mide el nivel del recipiente y el sensor de tacto detiene todo el proceso del Brazo Robótico una vez terminada la secuencia del mismo. 3.- Se usó Matlab para desarrollar la programación de la secuencia del Brazo Robótico y de igual manera para obtener la adquisición de datos del sensor ultrasónico en tiempo real. Con el comando xlswrite de Matlab exportamos los datos medidos del sensor ultrasónico durante toda la secuencia del Brazo a una hoja de Excel. 4.- En la implementación del proyecto se utilizó los tres servomotores que trae Lego Mindstorms NXT para el Brazo Robótico, por lo que se adicionó el servomotor HITEC HS311 para controlar la Banda Transportadora donde circularán los recipientes. Se usó este servomotor porque tiene la capacidad de ubicarse en cualquier posición dentro de su rango de operación y de mantenerse estable en dicha posición, la cual nos facilita en los instantes que se detiene la Banda para que el sensor ultrasónico mida el nivel del recipiente. 5.- Para la alimentación de la tarjeta de control de la Banda Trasportadora, se diseñó una fuente independiente de voltaje de 5 VDC, utilizando el regulador 7805 para tener una salida constante de 5 V. Con este circuito también se consiguió tener la corriente necesaria de 180 mA para mover el servomotor debido que la alimentación que proporciona Lego Mindstorms NXT no es la requerida. Recomendaciones 1.- Programar la secuencia del brazo robótico en Matlab, utilizando los comandos de rotación para mover los servomotores, los cuales dan un valor exacto de giro para el servo, ya que si es realizado con comandos de tiempo presenta margen de error en cuanto al posicionamiento del brazo. 2.- Para calibrar el sensor de luz, tomar en cuenta que ésta es afectada por la luz del ambiente ya que el sensor del NXT funciona con luz visible roja, por lo que puede dar error al momento de la calibración, por tanto se recomienda trabajar con sensores de luz infrarroja ya que estos no son afectados por la luz del ambiente. 3.- Con los conocimientos adquiridos en el desarrollo del proyecto se puede motivar el desarrollo y la investigación de las aplicaciones del Lego NXT para la implementación de futuros proyectos que integren nuevas tendencias tecnológicas para encontrar soluciones a las mismas. Referencias [1] McCOMB GORDON, The Robot Builder’s Bonanza 2º Edición, McGrill-Hill, Estados Unidos, 2001. [2] MANUEL GIL RODRIGUEZ, Introducción rápida a Matlab y Simulink, Ediciones Díaz Santos, Madrid , 2003. [3] MYKE PREDKO, Programming Robot Controllers, McGrill-Hill, Estados Unidos, 2003. [4] ANIBAL OLLERO BATURONE, ROBÓTICA Manipuladores y Robots móviles, Marcacombo Boixareu Editores, 2001 [5] Extreme NXT “Extending the LEGO MINDSTORMS NXT to the Next Level”, página html: http://www.apress.com [6] PIC Microcontrollers - Programming in C Mikroelektronika, página html: http://www.mikroe.com/en/books/pic- books/mikroc/ [7] Embedded Coder Robot NXT Instruction Manual, página html: http://www.pages.drexel.edu/~dml46/Tutorials/Ba lancingBot/files/Embedded_Coder_Robot_NXT_I nstruction_En.pdf [8] MICROCHIP, Hoja de Datos PIC16F628A, página html: http://www.datasheetcatalog.net/es/ [9] How to upload a nxtOSEK program to the NXT , página html: http://lejos- osek.sourceforge.net/howtoupload.htm [10] Cygwin Information and Installation, página html: http://www.cygwin.com/