UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica “DISEÑO DE NUEVOS CONTROLADORES PARA LOS ROBOTS HUMANOIDES DE NUEVA GENERACIÓN” Por Ruben Antonio Campos Bonaguro Sartenejas, Julio de 2008 UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica “DISEÑO DE NUEVOS CONTROLADORES PARA LOS ROBOTS HUMANOIDES DE NUEVA GENERACIÓN” Por Ruben Antonio Campos Bonaguro Realizado con la Asesoría de Prof. Gerardo Fernández López (USB, Venezuela) Dr. Manuel Ángel Armada Rodríguez (IAI CSIC, España) Ing. Roberto Carlo Ponticelli Lima (IAI CSIC, España) INFORME FINAL DE CURSOS EN COOPERACIÓN TÉCNICA Y DESARROLLO SOCIAL Presentado ante la Ilustre Universidad Simón Bolívar como requisito parcial para optar al título de Ingeniero Electrónico Sartenejas, Julio de 2008 ii UNIVERSIDAD SIMÓN BOLÍVAR Decanato de Estudios Profesionales Coordinación de Ingeniería Electrónica “DISEÑO DE NUEVOS CONTROLADORES PARA LOS ROBOTS HUMANOIDES DE NUEVA GENERACIÓN” INFORME FINAL DE CURSOS EN COOPERACIÓN TÉCNICA Y DESARROLLO SOCIAL presentado por Ruben Antonio Campos Bonaguro REALIZADO CON LA ASESORIA DE Prof. Gerardo Fernández López (USB, Venezuela) Dr. Manuel Ángel Armada Rodríguez (IAI CSIC, España) Ing. Roberto Carlo Ponticelli Lima (IAI CSIC, España) RESUMEN El Instituto de Automática Industrial (IAI) del Consejo Superior de Investigaciones Científicas de España (CSIC) ha trabajado durante años en el desarrollo de robots caminantes con distintas configuraciones de patas. Actualmente el IAI desea estudiar más a fondo la manera de controlar robots bípedos; se requiere el diseño de nuevos controladores de movimiento para ser utilizados en los robots humanoides de nueva generación. El contenido de este trabajo se centra en el diseño de un sistema de control miniaturizado de movimiento de bajo consumo, que pueda ser distribuido por el robot y permita ejercer un control descentralizado. Como resultado de este trabajo, se obtuvo un prototipo de una tarjeta de control de movimiento que posee un bus de comunicaciones Ethernet y está basada en el controlador de movimientos de precisión LM629. PALABRAS CLAVES Control de movimiento, Ethernet, Robots humanoides, Microcontroladores Sartenejas, Julio de 2008 iii A mis seres queridos iv AGRADECIMIENTOS En primer lugar quiero agradecer a mi familia por estar siempre conmigo y apoyarme en todo lo que me propongo, me han ensañado que ningún sueño es muy grande y que todo se puede lograr con trabajo y empeño. Debo agradecer de forma muy especial a 2 personas: A Roberto Ponticelli, sin su constante ayuda y sus acertados consejos no hubiera podido lograr los objetivos que me propuse para mi pasantía, un gran amigo y uno de los mejores ingenieros electrónicos que he tenido la dicha de conocer. A Gerardo Fernández por las oportunidades que me ha brindado y por todo lo que me ha enseñado tanto dentro de los salones de clases como fuera de ellos, más que un profesor, un amigo… Al Dr. Manuel Armada, vicerrector del IAI y mi tutor industrial, por brindarme la oportunidad de desarrollar un proyecto retador e interesante que me permitió aprender muchas cosas y por siempre estar abierto a escuchar nuevas propuestas. Al Dr. Pablo González, Jefe del Departamento de Control Automático del IAI, por permitirme hacer uso de las instalaciones, materiales y equipos de su departamento. A Julián Serrano y Juan Carlos Liébana por estar siempre dispuestos a ayudarme con todos los problemas de hardware y fabricación que se me presentaron (que fueron muchos), siempre encontraron la mejor manera de solucionarlos y proyecto no hubiera funcionado sin su ayuda. A mi compañero de oficina Javi, siempre supo como alegrar el día con sus huevitos de chocolate (suena extraño, pero es cierto). A Jorge Clarem, Meche, Álvaro y Carlota por ayudarme a adaptarme rápidamente a la vida en España y siempre estar ahí como apoyo brindándome su amistad. A todos en el DCA del IAI, gracias por hacer tan agradable mi estadía en Madrid. Finalmente quiero agradecer a todos aquellos que por alguna u otra razón (es decir, por olvido y/ o falta de espacio) no aparecen expresamente en esta página, ustedes saben quienes son y los tengo siempre presentes. MUCHAS GRACIAS. v ÍNDICE GENERAL RESUMEN ................................................................................................................................ iii PALABRAS CLAVES .............................................................................................................. iii AGRADECIMIENTOS ............................................................................................................... v ÍNDICE GENERAL ...................................................................................................................vi ÍNDICE DE TABLAS, FIGURAS Y ECUACIONES ..............................................................ix CAPITULO 1. INTRODUCCIÓN ......................................................................................... 1 1.1. Antecedentes ................................................................................................................................ 1 1.2. Planteamiento del problema ........................................................................................................ 2 1.3. Organización del trabajo ............................................................................................................... 2 CAPITULO 2. FUNDAMENTOS TEÓRICOS ..................................................................... 4 2.1. Introducción .................................................................................................................................. 4 2.2. Esquemas de control a lazo cerrado ............................................................................................. 4 2.3. Compensadores PID ...................................................................................................................... 5 2.3.1. Fundamentos básicos ............................................................................................................. 5 2.3.2. PID digitales ............................................................................................................................ 5 2.4. Medición de posición en motores................................................................................................. 6 2.5. Actuación de motores ................................................................................................................... 8 2.5.1. PWM versus Accionamiento Lineal ........................................................................................ 8 2.6. Modelos OSI y TCP/IP .................................................................................................................... 9 2.7. Diseño asistido por ordenadores ................................................................................................ 11 2.8. Fabricación de circuitos impresos ............................................................................................... 13 2.9. Tarjetas de control de movimiento del IAI .................................................................................. 15 CAPITULO 3. CONTROLADOR DE MOVIMIENTOS DE PRECISIÓN LM629 ........... 18 3.1. Introducción ................................................................................................................................ 18 3.2. Descripción general ..................................................................................................................... 18 3.3. Teoría de operación .................................................................................................................... 19 3.3.1. Comandos de control ........................................................................................................... 24 3.4. Control de alto nivel del LM629 .................................................................................................. 25 3.4.1. Librerías para el control del LM629 desarrolladas por el DCA del IAI ................................. 25 vi 3.4.2. Control del LM629 con las nuevas tarjetas controladoras de movimiento del DCA del IAI 27 CAPITULO 4. SELECCIÓN DEL BUS DE DATOS DE LA NUEVA TARJETA DE CONTROL DE MOVIMIENTO ............................................................................................... 28 4.1. Introducción ................................................................................................................................ 28 4.2. BUS USB ....................................................................................................................................... 28 4.2.1. Protocolo USB....................................................................................................................... 29 4.3. Bus Ethernet ................................................................................................................................ 32 4.3.1. Protocolo UDP ...................................................................................................................... 34 4.4. Análisis comparativo ................................................................................................................... 36 CAPITULO 5. IMPLEMENTACIÓN DEL STACK TCP/IP DE Microchip EN UN dsPIC33…………. .................................................................................................................... 40 5.1. Introducción ................................................................................................................................ 40 5.2. Microchip dsPIC33....................................................................................................................... 40 5.2.1. Características principales del dsPIC33FJ256MC710 ........................................................... 42 5.2.2. Herramientas de desarrollo ................................................................................................. 44 5.2.3. Controlador Ethernet e interfaz SPI ..................................................................................... 47 5.2.3.1 SPI ....................................................................................................................................... 47 5.2.3.2. Controlador Ethernet ENC28J60 ....................................................................................... 48 5.3. El stack TCP/IP de Microchip ....................................................................................................... 49 5.3.1. Configuración básica del stack TCP/IP.................................................................................. 50 CAPITULO 6. TARJETA DE CONTROL DE MOVIMIENTO PARA ROBOTS DE NUEVA GENERACIÓN .......................................................................................................... 52 6.1. Introducción ................................................................................................................................ 52 6.2. Arquitecturas para el diseño de robots autónomos ................................................................... 52 6.2.1. Arquitectura centralizada..................................................................................................... 52 6.2.2. Arquitectura distribuida ....................................................................................................... 53 6.3. Tarjetas de control de movimiento con bus ISA ......................................................................... 55 6.4. Esquema general de Hardware de la tarjeta de control de movimiento Ethernet..................... 56 6.5. Esquema del software de la tarjeta de control de movimiento Ethernet .................................. 62 CAPITULO 7. PRINCIPALES APORTACIONES, CONCLUSIONES Y LÍNEAS DE INVESTIGACIÓN FUTURAS ................................................................................................. 66 7.1. Principales aportaciones y conclusiones ..................................................................................... 66 6.2. Líneas de investigación futuras ................................................................................................... 67 vii CAPITULO 8. REFERENCIAS BIBLIOGRÁFICAS ......................................................... 68 ANEXOS ................................................................................................................................... 69 viii ÍNDICE DE TABLAS, FIGURAS Y ECUACIONES Tabla 3.1. Sumario de especificaciones de sistema del LM629. ............................................... 20 Tabla 3.2. Comandos del LM629. ............................................................................................. 25 Tabla 4.1. Características de los tipos de transferencia USB. ................................................... 30 Tabla 4.2. Paquete Ethernet. ...................................................................................................... 35 Tabla 4.3. Secuencia de comandos del LM629. ........................................................................ 37 Figura 2.1. Sistema de Control a Lazo Cerrado. ......................................................................... 4 Figura 2.2. Encoder óptico. ......................................................................................................... 7 Figura 2.3. Modulación por ancho de pulso. ............................................................................... 8 Figura 2.4. Modelo OSI. .............................................................................................................. 9 Figura 2.5. Descripción de las capas del modelo OSI. .............................................................. 10 Figura 2.6. Conexión de Componentes en ORCAD CAPTURE. ............................................. 12 Figura 2.7. Simulación de un circuito en PSPICE. .................................................................... 12 Figura 2.8. Lámina para la fabricación de PCB. ....................................................................... 14 Figura 2.9. Fabricación de PCB multicapas. ............................................................................. 14 Figura 2.10. Proceso de fabricación de PCB. ............................................................................ 15 Figura 2.11. Tarjeta de Control de movimiento IAI 3 Ejes. ...................................................... 16 Figura 2.12. Tarjeta de control de movimiento IAI 4 ejes. ....................................................... 17 Figura 3.1. Generador de perfiles de velocidad trapezoidal. ..................................................... 19 Figura 3.2. Esquema típico de conexión del LM629................................................................. 20 Figura 3.3. Señales del encoder de cuadratura. ......................................................................... 21 Figura 3.4. Perfil de velocidad trapezoidal estándar (A) y perfil de velocidad trapezoidal modificado (B). .......................................................................................................................... 22 Figura 3.5. Señal de salida del LM629. ..................................................................................... 24 Figura 4.1. Tipos de paquete USB. ............................................................................................ 31 Figura 4.2. Paquete UDP. .......................................................................................................... 35 Figura 5.1. Gamas y familias de microcontroladores PIC de Microchip. ................................. 41 Figura 5.2. Gama de microcontroladores de 16 bits de Microchip. .......................................... 43 Figura 5.3. MPLAB IDE. .......................................................................................................... 44 Figura 5.4. MPLAB ICD 2. ....................................................................................................... 46 Figura 5.5. Conexión MPLAB ICD 2. ...................................................................................... 46 Figura 5.6. Líneas de comunicación SPI. .................................................................................. 47 Figura 5.7. Esquema general de conexión del ENC28J60. ....................................................... 48 Figura 6.1. Arquitectura de control centralizado. ...................................................................... 53 Figura 6.2. Arquitectura de control distribuido. ........................................................................ 54 Figura 6.3. Robots caminantes del DCA del IAI. ...................................................................... 55 Figura 6.4. Módulo de Alimentación......................................................................................... 58 Figura 6.5. Módulo de control de motores. ............................................................................... 58 Figura 6.6. Módulo Ethernet...................................................................................................... 59 Figura 6.7. Módulo de procesamiento. ...................................................................................... 60 Figura 6.8. Vista superior de la tarjeta de control de movimiento Ethernet. ............................. 61 Figura 6.9. Vista inferior de la tarjeta de control de movimiento Ethernet. .............................. 61 ix Figura 6.10. Comparación del tamaño de las 3 versiones de la tarjeta de control de movimiento. ............................................................................................................................... 62 Figura 6.11. Algoritmo del programa principal de la tarjeta Ethernet. ..................................... 63 Figura 6.12. Primera parte del esquema de la interfaz PC/Tarjeta de control de movimiento Ethernet. ..................................................................................................................................... 64 Figura 6.13. Segunda parte del esquema de la interfaz PC/Tarjeta de control de movimiento Ethernet. ..................................................................................................................................... 64 Ecuación 2.1. Función de transferencia de los controladores PID. ............................................. 5 Ecuación 2.2. Ecuación en tiempo discreto del control PID. ...................................................... 6 Ecuación 3.1. Ecuación de control PID del LM629. ................................................................. 23 Ecuación 4.1. Cálculo de la máxima velocidad de comunicación con el LM629. .................... 37 x CAPITULO 1. INTRODUCCIÓN 1.1. Antecedentes La robótica es una disciplina especializada en el diseño de máquinas que realizan operaciones o trabajos de forma automática. Esta disciplina, aunque recibió su nombre formal a principios del siglo XX, ha existido desde tiempos inmemorables. El hombre, en busca de facilitar y hacer más eficiente la realización de sus trabajos, siempre ha experimentado con la forma de automatizar los procesos y es de ahí de donde surge la robótica. Con la revolución industrial a principios del siglo XX, surgieron los primeros “robots industriales”, que eran máquinas que realizaban tareas en sustitución de la mano de obra humana o bien servían como apoyo a los trabajadores en algunas tareas críticas dentro del proceso de manufactura. La robótica industrial tradicionalmente se ha desarrollado en ambientes fuertemente estructurados y dentro de entornos controlados y estáticos. Los robots caminantes han surgido por la necesidad de realizar tareas u operaciones en situaciones en las que la movilidad en entornos complejos y la autonomía son requerimientos importantes. Dentro de esta rama de la robótica, los investigadores han buscado imitar a la naturaleza en cuanto a la forma caminar de los robots que diseñan y la configuración de patas con respecto al terreno en el que se va a llevar a cabo la actividad específica para la que fue diseñado el robot. Es por esto que algunos robots caminantes se asemejan en su forma y movimientos a animales o insectos. Los robots humanoides aparecieron en la literatura de ciencia ficción mucho antes que en la ciencia y siempre fueron vistos por los autores como ayudantes a los seres humanos en sus tareas diarias. Hoy en día se estudia el potencial de este tipo de robots para servir de ayuda, por ejemplo, a personas mayores o enfermas y se han producido avances importantes que permiten pensar que en un futuro no muy lejano, los robots humanoides puedan comercializarse. 1 1.2. Planteamiento del problema El Departamento de Control Automático (DCA) del Instituto de Automática Industrial (IAI), adscrito al Consejo Superior de Investigaciones Científicas (CSIC) en España, ha trabajado durante años en el desarrollo de robots bípedos y otros robots caminantes. Para llevar a cabo sus investigaciones, el IAI ha desarrollado, a lo largo de los años, tarjetas controladoras de movimiento que han servido en numerosos robots con distintas configuraciones de patas. Actualmente el IAI desea estudiar más a fondo la manera de controlar bípedos, para ello se desea y necesita diseñar nuevos controladores para los robots humanoides de nueva generación. Se requiere que el diseño de sistemas de control sea de bajo consumo y miniaturizados, de forma que puedan ser distribuidos por el robot y permitan un control descentralizado. El presente trabajo tiene como objetivo principal el diseño e implementación de dichos sistemas de control para ser utilizados en los robots de nueva generación que serán diseñados por el IAI durante los próximos años. 1.3. Organización del trabajo El presente trabajo ha sido estructurado en 7 capítulos, de forma que la organización permita una rápida compresión de los temas tratados En el segundo capítulo, se ponen a disposición del lector, una serie de conceptos teóricos e ideas que facilitarán el entendimiento de los capítulos posteriores. El capítulo 3 presenta al dispositivo controlador de movimientos LM629 de la compañía NATIONAL SEMICONDUCTOR, pieza fundamental en las tarjetas controladoras de movimientos diseñadas en este trabajo. 2 El cuarto capítulo presenta la selección del bus de datos de la tarjeta controladora diseñada, en él se hace un análisis comparativo de los 2 buses que se estudiaron como candidatos y finalmente se justifica la selección de uno de ellos. El capítulo 5 trata sobre la implementación del stack TCP/IP desarrollado por Microchip en un dsPIC33. Se presentan las herramientas de desarrollo con las cuales se trabajó y se explica la interfaz de la tarjeta de control de movimiento con el bus Ethernet. En el sexto capítulo se muestra el esquema general del diseño de la tarjeta controladora. Para finalizar, en el capítulo 7, se presentan las conclusiones derivadas de este trabajo y se proponen las líneas futuras de investigación. 3 CAPITULO 2. FUNDAMENTOS TEÓRICOS 2.1. Introducción En el capítulo a continuación se presentan los conceptos fundamentales para la comprensión de los temas a tratar en el presente trabajo. En las secciones 2.2, 2.3, 2.4 y 2.5 se tratan temas de control automático, la sección 2.6 trata sobre protocolos de envío de datos. Las secciones 2.7 y 2.8 muestran temas sobre el diseño y fabricación de circuitos impresos. La sección 2.9, finalmente, da una introducción a las tarjetas de control de movimiento diseñadas por el Departamento de Control Automático del IAI. 2.2. Esquemas de control a lazo cerrado Los sistemas de control a lazo cerrado, también conocidos como sistemas realimentados, son aquellos en los que se mantiene una relación prescrita entre la salida y una señal de referencia que actúa como entrada. En estos sistemas, se compara constantemente la salida con la entrada y se utiliza la diferencia para ejecutar la acción de control. Un ejemplo de esto es el sistema de control de temperatura de una habitación en el que se mide la temperatura real con un termómetro ambiental y se compara el valor con la temperatura de referencia (temperatura deseada en este caso). El termostato activa o desactiva los equipos de calefacción o enfriamiento para asegurar que la temperatura de la habitación se conserva en el valor deseado sin importar las condiciones externas. Figura 2.1. Sistema de Control a Lazo Cerrado. 4 La principal ventaja de un sistema de control a lazo cerrado es que, por lo general, el uso de la realimentación permite ajustar la sensibilidad del sistema y modificar el comportamiento ante perturbaciones internas o externas (1). 2.3. Compensadores PID 2.3.1. Fundamentos básicos En el control de sistemas se utilizan compensadores para buscar mejoras en la respuesta total del sistema. Existen varios tipos de compensadores, cada uno con características de estabilidad relativa y respuesta transitoria que los hacen más o menos adecuados para cierto tipo de aplicaciones. Los controladores PID son frecuentemente utilizados para el control industrial; es común ver a este tipo de controladores como base fundamental de los sistemas de control más complejos utilizados en la industria. El mnemónico PID está compuesto por la inicial de cada uno de los términos presentes en este tipo de compensadores, esto es, P para el término proporcional, I para un término integrador y D para un término derivador. La función de transferencia de los controladores PID está dada por la siguiente ecuación (2). 1 1 1 Ecuación 2.1. Función de transferencia de los controladores PID. Las principales ventajas de este tipo de controladores son que pueden ayudar a disminuir la tendencia a producir oscilaciones en la salida y que la desviación en el error es, en la mayoría de los casos, cercana a cero (1) (3). 2.3.2. PID digitales 5 El control PID tiene una larga historia y ha sobrevivido a los cambios en las teorías de control de sistemas de la era analógica a la era digital. Las 3 posibles razones que lo han hecho mantenerse como uno de los esquemas de control más usados por todo este tiempo son: el éxito obtenido en sus implementaciones en el pasado, su amplia disponibilidad y la simplicidad de su uso (2). Los compensadores PID digitales trabajan en tiempo discreto y requieren de un tiempo de muestreo determinado y una tasa de muestreo para el término derivativo como se observa en la siguiente ecuación en diferencia: 1 Ecuación 2.2. Ecuación en tiempo discreto del control PID. Donde u(n) es la salida en el instante de tiempo n, e(n) es el error en el instante de tiempo n, n’ denota muestreo a la tasa de muestreo derivativa, Kp, Ki y Kd son las constantes proporcional, integradora y derivativa respectivamente (4). 2.4. Medición de posición en motores El control de motores puede ejercerse de distintas maneras. Los parámetros más utilizados para el control de motores son: posición, velocidad y par de fuerzas (torque). Existen esquemas de control híbridos más complejos como el control por par-velocidad y el control par-posición. Para ejercer alguno de los tipos de control mencionados anteriormente, se necesita conocer algunos parámetros para cerrar el lazo de control, bien sea la posición, la velocidad o el par, por ejemplo. La posición es uno de los parámetros más utilizados para esto ya que al derivar su valor en el tiempo se puede obtener directamente la velocidad. Para medir la posición normalmente se utiliza un sensor conocido como “encoder”. 6 Un encoder es un dispositivo electromecánico que convierte desplazamiento lineal o rotatorio en señales digitales o señales de pulsos. El tipo de encoder más popular es el encoder óptico, que consiste en un disco giratorio conectado a un eje, una fuente de luz y un sensor de luz. En el disco se encuentra grabado un patrón entre secciones opacas y secciones transparentes en una o varias pistas que interrumpen el paso de la luz desde la fuente hacia el fotodetector generando así una señal de salida digital o de pulsos. Figura 2.2. Encoder óptico. Existen varios tipos de encoders según la información que proporcionan, los 2 tipos principales son los absolutos y los incrementales. Los encoders absolutos generan un patrón único (palabra digital) para cada posición del eje. Las pistas del disco, generalmente entre cuatro y seis, llevan escritas en ellas típicamente un código binario, código binario-decimal (BCD) o código gray. Este tipo de dispositivos se utilizan comúnmente en aplicaciones en las que el dispositivo estará inactivo durante largos períodos de tiempo, si existe el riesgo de que el sistema se apague o si la posición inicial del sistema es desconocida. Los encoders incrementales generan un pulso para cada paso del disco giratorio. A pesar de que la salida del encoder incremental no es una posición absoluta, tienen una buena resolución a un precio inferior que el de los encoders absolutos y son convenientes para muchas aplicaciones (5). 7 2.5. Actuación de motores Existen diversas formas para actuar los motores eléctricos de corriente continua (DC). En esta sección se compara el método de control por modulación de ancho de pulsos (PWM) con el método de control lineal. 2.5.1. PWM versus Accionamiento Lineal Los motores DC pueden ser controlados por un voltaje DC continuo entre sus terminales o por modulación de ancho de pulsos. El método de accionamiento lineal, consiste aplicar un voltaje DC fijo producido en una fuente lineal a los terminales del motor. Este método de control es muy robusto y simple ya que requiere de pocos componentes electrónicos. La forma de onda enviada al motor tiene fuertes componentes armónicos debido a la frecuencia de la línea (50 Hz en Europa y 60 Hz en América, ambos valores dentro del rango de audición humana de entre 20 Hz y 20 KHz aproximadamente), esto tiene como consecuencia un rizado en la corriente y en el par de fuerzas, además de un sonido audible que puede ser molesto. El método de control por modulación de ancho de pulso (PWM) consiste en generar un tren de pulsos variando el tiempo de encendido (ciclo de trabajo) en cada pulso de acuerdo al requerimiento dado por el movimiento deseado del motor. Por lo general, un ciclo de trabajo igual al 50% hace que el motor permanezca estático, mientras que los valores mayores hacen que el motor gire en sentido positivo y los menores en sentido negativo. Figura 2.3. Modulación por ancho de pulso. 8 Una variante de este método de control consiste en generar, además del tren de pulsos, una señal digital llamada signo que permite seleccionar la dirección de giro del motor, de esta manera se logra que el motor permanezca estático cuando el ciclo de trabajo es igual a cero. Esta variante se llama PWM en magnitud y signo. La electrónica asociada es más compleja que la de los actuadores lineales pero la conmutación de los transistores se puede hacer a frecuencias mucho más altas, lo que hace que la corriente tenga un rizado mucho menor en comparación a los actuadores lineales. En este caso se puede eliminar el sonido audible si se trabaja a frecuencias mayores a 20 KHz (6) (7) (8). 2.6. Modelos OSI y TCP/IP Gran parte de los sistemas de comunicación actuales utilizan protocolos basados en el modelo de capas OSI (del inglés Open Systems Interconnection) planteado por la Organización Internacional de Estándares (ISO por sus siglas en inglés). Figura 2.4. Modelo OSI. 9 El modelo OSI plantea 7 capas, cada capa se comunica únicamente con su similar del otro lado de la línea. Los datos se van empaquetando con información del remitente, el destinatario, chequeos de integridad de los datos a medida que va descendiendo desde la capa 7 hasta la capa 1 en el remitente, cada capa agrega información que sólo su similar en el destinatario puede entender. Para recibir los datos, en el destinatario, ocurre el proceso inverso, cada capa va removiendo la información que introdujo su similar en el remitente hasta que la capa 7 obtiene el dato que se quería transmitir inicialmente. Figura 2.5. Descripción de las capas del modelo OSI. El modelo TCP/IP fue construido empleando el modelo OSI y es ampliamente utilizado hoy en día. Los datos que circulan por Internet (páginas web, servicios de mensajería, etc.) utilizan este protocolo o alguno muy similar para desplazarse de un lugar a otro. A diferencia del modelo OSI, el modelo TCP/IP sólo tiene 4 capas: la capa de acceso a medios, equivalente a las capas 1 y 2 del modelo OSI; la capa de internet, que equivale a la capa 3 del modelo OSI; la capa de transporte, similar a la capa 4 del modelo OSI y la capa de aplicación, dentro de la cual se encuentran condensadas las funciones de las capas 5,6 y 7 del 10 modelo OSI. Los navegadores web y servidores http (espacios de memoria donde se encuentra almacenada la información contenida en una página web) están representados en estos modelos por la capa de aplicación que es la que interactúa directamente con el usuario (9) (10). 2.7. Diseño asistido por ordenadores El diseño asistido por ordenadores (CAD por sus siglas en inglés) es un método por el cual se utilizan herramientas computacionales para realizar los dibujos técnicos y definir las dimensiones físicas de los componentes de un sistema que se quiere fabricar. Las herramientas de software que existen para el CAD ayudan a reducir el tiempo de desarrollo y los costos, ya que permiten el análisis y la simulación de los diseños antes de la compra y fabricación de “hardware” (conjunto de componentes que integran la parte física o material de un instrumento electrónico), con lo cual, se puede predecir el comportamiento de los sistemas diseñados mucho antes de tener el primer prototipo funcional. Una vez que un diseño se ha validado a través de dibujos, simulaciones, y los análisis correspondientes, el sistema puede ser fabricado. Para el diseño de circuitos electrónicos existen 3 fases principales en las que se puede utilizar el diseño asistido. La primera fase es el diseño del esquema eléctrico, en esta fase se seleccionan los componentes que se van a utilizar y se diagrama su interconexión mediante un software especializado (como por ejemplo ORCAD CAPTURE). En el esquemático del circuito, cada componente se trata como una caja con salidas y entradas que se interconectan mediante cables virtuales de un componente a otro según lo vaya requiriendo el usuario. De esta manera queda plasmado el circuito en un dibujo técnico que muestra los componentes que se van a utilizar y como están conectados unos con otros dentro del diseño. Si los componentes que se van a utilizar en el circuito no existen en la base de datos del software, es posible crearlos como nuevos componentes y agregarlos a la lista. 11 Figura 2.6. Conexión de Componentes en ORCAD CAPTURE. La fase siguiente es la simulación del circuito diseñado, utilizando un software como ORCAD PSPICE, se puede importar el dibujo hecho en la fase 1 para simular y analizar su comportamiento, de esta forma se pueden comprobar los niveles de voltaje, corriente y/o potencia en cada punto de circuito para así determinar si la selección de componentes fue correcta o si es necesario realizar algún cambio. Figura 2.7. Simulación de un circuito en PSPICE. La tercera y última fase es el dibujo del circuito impreso, un programa con el cual se puede hacer esto es ORCAD LAYOUT. En esta fase, se escoge el encapsulado correspondiente a cada componente electrónico y se hace un dibujo de las “pistas” que servirán como cables en la tarjeta del circuito impreso para interconectar los distintos 12 componentes. Es posible crear nuevos encapsulados que no se encuentren en las listas que trae el programa y agregarlos a ellas. En esta fase es importante tomar en cuenta factores como el ancho y la separación de las pistas a utilizar, sobretodo, porque existen limitaciones a la hora de fabricar los circuitos impresos con respecto a estas medidas; los programas de diseño permiten tener control sobre los valores de estas distancias. Otro punto importante es seleccionar el número de capas con el que se va a hacer el circuito impreso finalmente, para esto se debe tomar en cuenta el tamaño físico que se desea que tenga la tarjeta y las limitaciones del proceso de fabricación que se va a utilizar. Los programas permiten hacer la conexión de las pistas de forma manual, automática o una mezcla de ambas dependiendo de las preferencias del usuario y de la complejidad del circuito que se quiere realizar (10). 2.8. Fabricación de circuitos impresos Una vez finalizado el diseño, se procede a la fabricación del circuito impreso (PCB por sus siglas en inglés). Principalmente, un PCB se compone de dos partes: un sustrato (la tarjeta en sí) y cables impresos que se encuentran dibujados en una fina película de cobre sobre el sustrato. El sustrato es la estructura que físicamente soporta los componentes del circuito y los cables impresos, además sirve de aislamiento eléctrico entre partes conductoras del circuito. Uno de los materiales más comunes de los que se fabrican estos sustratos es el FR4, un laminado de fibra de vidrio con una resina plástica resistente al fuego. Al comenzar el proceso de fabricación, el sustrato se encuentra cubierto por una fina película de cobre (generalmente presente en ambos lados del sustrato). 13 Figura 2.8. Lámina para la fabricación de PCB. Las películas de cobre tienen normalmente un espesor de entre 0,03 y 0,04 milímetros y pueden ser una fina lámina de cobre pegada al sustrato o cobre que recubre directamente el sustrato. Los circuitos multicapas están hechos de uno o más sustratos llamados núcleos con láminas de cobre en uno o ambos lados, los núcleos se pegan unos a otros con una capa de resina parcialmente curada llamada “PrePreg” que sirve de aislante eléctrico entre núcleo y núcleo. Figura 2.9. Fabricación de PCB multicapas. Una vez diseñado el circuito con el software apropiado, se hace una fotolitografía de cada una de las capas del circuito en una lámina de resina llamada “fotoresist” que una vez impresa en alta resolución con el patrón de una de las capas del circuito, se adhiere al núcleo y se trata con rayos ultravioleta para que quede dibujado en el cobre el patrón de la capa. Si el núcleo tiene 2 caras, se debe realizar este procedimiento en ambas caras antes de seguir. Luego, se trata la tarjeta con cloruro férrico u otro químico parecido, que ataca al cobre que no está cubierto por el “fotoresist” y lo elimina de la tarjeta. Así queda dibujado en cobre el patrón de pistas y las almohadillas (pads en inglés) sobre las cuales se van a colocar los componentes del circuito. 14 Figura 2.10. Proceso de fabricación de PCB. Una vez terminadas las capas del circuito, se deben alinear con mucha precisión y pegar. Posteriormente se abrirán los huecos que servirán para el montaje de los componentes que lo necesiten y las vías que harán las veces de un cable que interconecta una capa con otra. Luego se metaliza el interior de estos huecos para que haya conductividad, se colocan las películas de aislamiento (Solder Mask) en las capas exteriores y se rotula la tarjeta con los identificadores de cada componente (Silk Screen) (10). 2.9. Tarjetas de control de movimiento del IAI El DCA del IAI ha desarrollado, a lo largo de los años, las tarjetas de control de movimiento que utiliza en los robots que diseña para sus investigaciones. Actualmente existen 2 versiones en uso, ambas están basadas en el controlador de movimiento de precisión LM629 producido por la compañía NATIONAL SEMICONDUCTOR. Una de las versiones es capaz de controlar 3 ejes y la otra permite el control de 4 ejes con una sola tarjeta de control. Ambas versiones utilizan el bus de datos ISA como medio de comunicación con el ordenador de abordo que dicta las instrucciones de movimiento a cada eje en cada una de las tarjetas que tenga conectadas a él. 15 La de 3 ejes es la más sencilla de estas 2 versiones, posee tres LM629 a bordo, cada uno para controlar un eje, se conecta al ordenador de a bordo del robot mediante un bus ISA de 8 bits y la información que recibe por este puerto se direcciona por medio de electrónica digital a cada uno de los LM629 de forma que cada uno tiene una dirección local a la que se le pueden enviar comandos de movimiento o actualización de parámetros. Una serie de interruptores sirven para seleccionar la dirección base de la tarjeta cuando existen varias de ellas conectadas a la vez al ordenador de a bordo. A partir de esta dirección base se calculan las direcciones locales de cada LM629 en la tarjeta, de esta manera se garantiza por hardware que cada eje tiene una dirección única para que se le envíe la información de control. Figura 2.11. Tarjeta de Control de movimiento IAI 3 Ejes. Las salidas de esta tarjeta de control son 3 señales PWM en magnitud y signo (un par magnitud-signo para cada eje), esta información se envía a las tarjetas de potencia por medio de un conector DB37. Dicho conector también posee los terminales de entrada para el encoder asociado a cada eje que controla la tarjeta. Adicionalmente, esta tarjeta cuenta con 8 puertos de entrada/salida digitales programables. Las tarjetas de 4 ejes, son un tanto más complejas que las mencionadas anteriormente, las cuales realizan un control PID directamente a través de los LM629, esta versión, además de este tipo de control, tiene la opción de realizar un control personalizado vía software o utilizar una combinación de ambos al mismo tiempo. Esta tarjeta posee 16 entradas analógicas 16 para el manejo de sensores exteriores y acceso del exterior al bus de datos. En esta versión no sólo se cuenta con la salida estándar de los LM629 (PWM en magnitud y signo) sino que, en su lugar, se puede contar con una salida de +/- 10 Voltios para los casos en que sea necesario. Esto hace a esta tarjeta bastante versátil ya que quede usarse en combinación con distintos tipos de tarjetas de potencia según se requiera. Figura 2.12. Tarjeta de control de movimiento IAI 4 ejes. Esta versión de las tarjetas de control de movimiento del IAI se conecta al ordenador de a bordo del robot mediante un bus de datos ISA de 16 bits. Al igual que la versión de 3 ejes, las salidas de control y las entradas de los encoders de encuentran mapeadas en un conector DB37 (11) (12). 17 CAPITULO 3. CONTROLADOR DE MOVIMIENTOS DE PRECISIÓN LM629 3.1. Introducción El controlador de movimientos de precisión LM629 es un dispositivo electrónico, introducido al mercado a mediados de los años 80, que contiene un procesador dedicado para control de movimientos de motores DC, servomotores DC sin escobillas y otros servomecanismos que generan señales de realimentación de cuadratura incremental de posición. En este capítulo se presentan las características principales de este dispositivo ya que es una pieza fundamental de las tarjetas de control diseñadas por el DCA en el IAI. 3.2. Descripción general A pesar del tiempo que tiene en el mercado, el LM629 es un dispositivo que se mantiene vigente gracias a su facilidad de uso y de implementación. El procesador dedicado de este dispositivo trabaja en tiempo real y el control se ejecuta mediante un software de alto nivel programado por el usuario, estas dos características hacen que el LM629 sea ideal para muchas aplicaciones. Utilizar a este dispositivo reduce considerablemente los componentes necesarios para implementar un servosistema, sólo es necesario contar con un motor DC, un encoder incremental y un puente H en la etapa de potencia. El LM629 tiene como salida una señal PWM en magnitud y signo con una resolución de 8 bits, ideal para manejar un puente H. Según el requerimiento de velocidad de operación que se tenga, existen 2 versiones de este dispositivo, una que trabaja a 6 MHz y la otra a 8 MHz. Para manejar al LM629 se utilizan 6 líneas de control y 8 puertos de entrada/salida para la escritura/lectura de datos desde/hacia el “HOST” (dispositivo de cómputo desde donde se generan las instrucciones a realizar y se realizan chequeos del estado actual de los 18 controladores), la comunicación es asíncrona y paralela. Internamente, este dispositivo, cuenta con un generador de perfiles de velocidad trapezoidal, esto hace que las aceleraciones sean constantes por lo que los movimientos generados son suaves y precisos. Figura 3.1. Generador de perfiles de velocidad trapezoidal. Este dispositivo tiene 2 modos de operación, control por velocidad o control por posición. Posee registros independientes para la aceleración y la velocidad, cuenta con una resolución de 32 bits para posiciones. Tiene un filtro PID digital programable con coeficientes de 16 bits. Los parámetros de este filtro, la velocidad y la posición deseada pueden ser modificados durante el movimiento. Otra característica importante es la posibilidad de generar interrupciones para el HOST en tiempo real, esta característica también es programable y hace del LM629 un dispositivo muy versátil que puede integrarse fácilmente con sistemas digitales que utilicen interrupciones. 3.3. Teoría de operación En un servosistema típico basado en el LM629 el HOST se comunica a través de los 8 puertos de entrada/salida para realizar la programación de perfiles de velocidad trapezoidales o modificar los parámetros del filtro PID. La salida PWM en magnitud y signo se conecta con el puente H para manejar al motor y un encoder incremental de cuadratura se encarga de la realimentación del sistema al cerrar el lazo de posición. En operación, el LM629 tiene almacenada en uno de sus registros a la posición actual que se va actualizando con las cuentas que genera el encoder, este valor se sustrae a la posición deseada (almacenada en otro registro del dispositivo) y el error de posición resultante es procesado por el filtro de compensación digital para mover al motor hacia la posición deseada. 19 Figura 3.2. Esquema típico de conexión del LM629. En la Tabla 3.1 se muestran las especificaciones de algunos parámetros importantes y características del LM629. Rango de posición De −1.073.741.824 a 1.073.741.823 [cuentas]. Rango de velocidad De 0 a 1.073.741.823/216 [cuentas/muestra]; Ejemplo: de 0 a 16.383 [cuentas/muestra] con una resolución de 1/216 [cuentas/muestra]. De 0 a 1.073.741.823/216 [cuentas/muestra]; Rango de aceleración Ejemplo: de 0 a 16.383 [cuentas/muestra] con una resolución de 1/216 [cuentas/muestra]. Salida de manejo del motor Señal PWM en magnitud y signo con una resolución de 8 bits. Modos de operación 2 modos: velocidad o posición. Dispositivo de realimentación Encoder incremental (señales en cuadratura y soporte para señal de índice). Algoritmo de control PID (más el límite de integración programable) Intervalos de muestreo Término derivativo: Programable desde 2048/fCLK hasta (2048 * 256)/fCLK en pasos de 2048/fCLK (de 256 a 65,536 µs en la versión de 8.0 MHz). Proporcional e Integral: 2048/fCLK Tabla 3.1. Sumario de especificaciones de sistema del LM629. 20 La interfaz entre el LM629 y el motor se realiza vía un encoder incremental. Se tienen tres entradas: 2 entradas para señales en cuadratura y una entrada para un pulso de índice. Las señales en cuadratura se utilizan para mantener actualizada la posición absoluta del motor. Cada vez que existe una transición lógica en una de las señales de cuadratura, se incrementa o decrementa el valor del registro de posición dentro del LM629 según sea el caso. Gracias a esto se tiene una resolución 4 veces mayor al número de líneas del encoder que se esté utilizando. La señal opcional de pulso de índice que poseen algunos encoders, cambia de estado a cero lógico una vez por revolución. Si el usuario lo desea, puede programar al LM629 para que cada vez que las tres señales de entrada se encuentren en cero lógico se almacene la posición absoluta del motor en un registro dedicado llamado “INDEX REGISTER”. Si el encoder que se tiene no posee una salida para la señal de índice, la entrada de esta señal en el LM629 puede ser utilizada para almacenar la posición inicial del motor “HOME POSITION”. Esto se puede hacer colocando un interruptor conectado a la entrada INDEX del LM629 que adquiera el valor de cero lógico cuando el motor pase por una determinada posición, esto hará que se almacene esa posición en el INDEX REGISTER y se generará una interrupción para el HOST alertando que se ha almacenado la nueva posición. Es importante que si el encoder que se utiliza no cuenta con señal de índice, se coloque la entrada INDEX del LM629 al valor de uno lógico permanentemente, de no hacerse esto el dispositivo se puede comportar de manera impredecible. Figura 3.3. Señales del encoder de cuadratura. 21 El generador de perfiles de velocidad trapezoidales se encarga de calcular la posición deseada del motor en cada instante de tiempo. En el modo de operación de posición, el HOST especifica al LM629 la aceleración, velocidad máxima y la posición final. Esta información se utiliza para afectar el movimiento del motor acelerando hasta que se alcance la velocidad máxima especificada o hasta que se deba comenzar con la desaceleración para detenerse en la posición deseada. La tasa de aceleración y de desaceleración es constante. La posición final deseada y la velocidad máxima pueden ser modificadas por el usuario en cualquier momento, incluso durante un movimiento; si esto ocurre, el motor acelerará o desacelerará según sea el necesario. En el modo de velocidad, el motor acelera hasta la velocidad final especificada a la aceleración especificada y se mantiene en esa velocidad al avanzar a la posición deseada a una tasa constate, hasta que se le indica al LM629 que debe detenerse. Si hubiera perturbaciones en el movimiento durante la operación en este modo, la velocidad promedio de movimiento se mantiene constante. Figura 3.4. Perfil de velocidad trapezoidal estándar (A) y perfil de velocidad trapezoidal modificado (B). En la figura 3.4 se muestran un perfil de velocidad trapezoidal estándar (trapecio simple) y un perfil de velocidad modificado, que muestra cómo se comporta una trayectoria cuando la velocidad final y la posición final deseada se cambian varias veces durante la ejecución de un movimiento. 22 Si por alguna razón el motor se bloquea durante el movimiento, el generador de perfiles de velocidad continuará incrementando el valor de la velocidad deseada instantánea y de esta forma el error de posición irá en aumento. Si el motor es desbloqueado, el motor puede alcanzar una alta velocidad hasta que el valor del registro de posición actual sea igual a la posición deseada instantánea. Todos los parámetros de trayectoria son valores de 32 bits. La posición es un valor con signo y se mide en número de cuentas del encoder. La velocidad y la aceleración tienen 16 bits de parte entera (sólo valores positivos) y 16 bits de parte decimal, estos dos parámetros se miden en número de cuentas del encoder por intervalo de muestreo y número de cuentas del encoder por intervalo de muestreo al cuadrado, respectivamente. El filtro de compensación PID tiene como función compensar el lazo de control. El motor es mantenido en la posición deseada al aplicar una fuerza en dirección contraria al movimiento que es proporcional al error de posición, más el error integral, más el error derivativo como se muestra en la siguiente ecuación en tiempo discreto: 1 Ecuación 3.1. Ecuación de control PID del LM629. Durante la operación, el algoritmo del filtro recibe una señal de error de 16 bits proveniente de la comparación entre el valor de la posición deseada y el valor real actual y trabaja con esto para determinar, en caso de ser necesario, que acción de movimiento tomar. El HOST se comunica con el LM629 por medio de los puertos de entrada/salida y utiliza las señales de control PS, CS, WR y RD para definir la dirección en la que se van a transmitir los datos por estos puertos de acuerdo a si se van a escribir comandos, parámetros de una función o si se van a leer datos del dispositivo. 23 La salida del LM629 es una señal PWM en magnitud y signo con 8 bits de resolución tal como se muestra en la siguiente figura: Figura 3.5. Señal de salida del LM629. 3.3.1. Comandos de control En esta sección se presenta una tabla que contiene los comandos de control del LM629 y una breve descripción de lo que hace cada uno. COMANDO RESET DEFINE HOME SET INDEX POSITION LOAD POSITION ERROR FOR INTERRUPT LOAD POSITION ERROR FOR STOPPING SET BREAKPOINT (ABSOLUT) SET BREAKPOINT (RELATIVE) MASK INTERRUPTS RESTET INTERRUPTS ACCIÓN QUE REALIZA Pone en cero los valores de los coeficientes del filtro, parámetros de trayectoria y la salida del motor. Almacena la posición actual del como la posición cero o posición inicial de referencia. Almacena en un registro el valor máximo que debe alcanzar el error de posición para que el LM629 genere una interrupción al HOST. Almacena en un registro el valor máximo que debe alcanzar el error de posición para que se detenga el motor automáticamente. Almacena en un registro la posición de un punto de control para el motor (en términos absolutos). Se generará una interrupción al HOST cuando el motor alcance esta posición. Almacena en un registro la posición de un punto de control para el motor (en términos relativos). Se generará una interrupción al HOST cuando el motor alcance esta posición. Permite al usuario seleccionar cuales de las potenciales condiciones de interrupción están activadas y cuales no. Coloca las banderas de interrupción en cero para 24 LFIL UDF LOAD TRAJECTORY START TRAYECTORY READ STATUS REGISTER READ SIGNALS REGISTER READ INDEX POSITION READ DESIRED POSITION READ REAL POSITION READ DESIRED VELOCITY READ REAL VELOCITY READ INTEGRATION SUMMATION VALUE que se pueda detectar si ocurre una nueva interrupción. Permite escribir nuevos parámetros para el filtro PID digital. Actualiza los parámetros del filtro PID. Permite escribir nuevos parámetros de trayectoria. Actualiza los parámetros de trayectoria y comienza el movimiento del motor. Lee el valor del registro de estado. Lee el valor del registro de señales donde se encuentran las banderas de interrupción. Lee la posición almacenada en el registro INDEX. Lee la posición deseada actual que fue calculada por el generador de perfiles trapezoidales. Lee la posición real del motor en un instante de tiempo determinado. Lee la velocidad deseada actual que fue calculada por el generador de perfiles trapezoidales. Lee la velocidad real del motor en un instante de tiempo determinado. Lee el valor que se ha acumulado en el registro del término integral. Este valor puede ser de gran utilidad para sintonizar el filtro PID. Tabla 3.2. Comandos del LM629. 3.4. Control de alto nivel del LM629 El HOST que controla al LM629 puede ser programado en un lenguaje de alto nivel. Esto facilita mucho el desarrollo de rutinas de movimiento para un servomecanismo. El lenguaje en sí depende del HOST que se utilice, ya que para esta función se pueden utilizar desde ordenadores personales hasta tarjetas de control con un microcontrolador dedicado. 3.4.1. Librerías para el control del LM629 desarrolladas por el DCA del IAI El Departamento de Control Automático del IAI ha desarrollado a lo largo de sus años de investigación, diversas librerías de control del LM629 programadas en lenguaje C para ser utilizadas con las tarjetas de control que han sido diseñadas por este mismo departamento. 25 Estas librerías han sido programadas de forma modular y en varias capas de software. La librería de nivel más bajo lleva por nombre LM629, esta librería se comunica directamente con las tarjetas de control diseñadas por el DCA del IAI (la de 3 o la de 4 ejes), mediante un bus de datos ISA. En ella se encuentran programadas las funciones que ejercen el control de forma inmediata al LM629. Cada función se corresponde con un comando de los que están implementados en el controlador de movimiento. Los parámetros que se le deben pasar a cada una de estas funciones son los mismos (y en el mismo formato) que requiere el LM629, en capas superiores de software se realizan las transformaciones necesarias para que el usuario final introduzca los datos de la forma más intuitiva posible. Por ejemplo, la librería LM629 trabaja directamente con valores de posición expresados en número de cuentas del encoder por intervalo de muestreo, ya que estas son las unidades que entiende el LM629; si un usuario requiere que el motor gire 10 grados con respecto a su posición actual en una dirección determinada, debería realizar una serie de cálculos para determinar la equivalencia entre esos 10 grados y el número de cuentas del encoder por intervalo de muestreo. Para evitar este inconveniente, que puede consumir mucho tiempo valioso para un usuario final de un robot desarrollado por el DCA del IAI, se tienen un gran número de funciones en capas intermedias entre la librería LM629 y la librería de más alto nivel, que se encargan de transformar los 10 grados de movimiento en la dirección determinada que desea el usuario a su equivalente en número de cuentas del encoder por período de muestreo. Estas librerías han sido utilizadas exitosamente en numerosos robots caminantes y otras aplicaciones robóticas desarrolladas por el DCA del IAI. Por lo general, se utilizan ordenadores industriales en cuyo bus ISA se “pinchan” las tarjetas de control de movimiento y así se logra el control simultáneo de múltiples ejes con un solo HOST. Las capas más altas de software dependen exclusivamente de la aplicación y normalmente en ellas se programan rutinas de movimiento predefinidas de forma que el sistema funcione de forma autónoma o con la mínima intervención de un operador. 26 3.4.2. Control del LM629 con las nuevas tarjetas controladoras de movimiento del DCA del IAI Las nuevas tarjetas de control de movimiento del DCA del IAI fueron diseñadas bajo la premisa de que debían ser compatibles, dentro de lo posible, con las librerías de software de alto nivel existentes. Dichas librerías han demostrado ser muy estables a lo largo de los años y se pretende continuar utilizándolas en futuros desarrollos. Para las nuevas tarjetas, se sugirió cambiar la interfaz del bus de datos ISA que se utilizaba en las tarjetas de control de movimiento que se encuentran en uso por algún estándar actual que ofreciera mejores prestaciones, hacer esto implica que, necesariamente, se deben realizar cambios en la programación del nivel más bajo de las librerías en lenguaje C existentes (es decir, la librería LM629 que fue mencionada en el apartado anterior). La forma en la que fueron diseñadas las nuevas tarjetas de control de movimiento, hace que los cambios que deben realizarse en la librería LM629 sean mínimos. Sólo basta con modificar las porciones de código en los que se colocaban los datos en el bus ISA para que estos mismos datos sean colocados en el nuevo bus seleccionado. En el siguiente capítulo se discute la selección del bus de datos para la nueva tarjeta. 27 CAPITULO 4. SELECCIÓN DEL BUS DE DATOS DE LA NUEVA TARJETA DE CONTROL DE MOVIMIENTO 4.1. Introducción Uno de los requerimientos de diseño para las nuevas tarjetas de control de movimiento fue la sustitución del bus de datos ISA, que se utiliza en las versiones anteriores de la tarjeta, por un estándar actual que posea mejores prestaciones. Las primeras opciones que se consideraron fueron USB y Ethernet ya que son dos de los estándares más utilizados hoy en día y su implementación para este tipo de aplicaciones es relativamente sencilla. 4.2. BUS USB El bus USB (Universal Serial Bus) es una interfaz rápida y flexible para conectar dispositivos a ordenadores. Hoy en día su uso está tan generalizado que es prácticamente imposible imaginar un ordenador que con cuente con conexión USB. La interfaz es tan versátil que permie la conexión de periféricos estándar como teclados, ratones y unidades de disco, así como también dispositivos más complejos o especializados. USB fue diseñado pensando en su facilidad de uso para el usuario final, no requiere configuración del usuario en hardware ni en software. Su uso es muy intuitivo y es sólo cuestión de conectar y usar (filosofía Plug & Play). Un dispositivo USB puede utilizar cualquiera de los cuatro tipos de transferencia disponibles (Control, Bulk, Interrupt o Isochronous) y las tres velocidades de transmisión (Low Speed = 1,5 Mbps, Full Speed = 12 Mbps, High Speed = 480 Mbps). Al conectar un dispositivo USB a un ordenador, este debe responder a una serie de peticiones que permiten al ordenador conocer información importante sobre el dispositivo y establecer la comunicación. En la PC cada dispositivo USB debe tener un software de bajo nivel (driver) encargado de manejar la transferencia de datos entre las aplicaciones y el bus USB (14) (15). 28 4.2.1. Protocolo USB Los buses USB tienen una topología tipo TOKEN/RING, es decir, que cuando se conectan varios dispositivos, ellos toman turnos para comunicarse con el HOST quien pasa un “TOKEN” (señal de control que sirve como permiso) a cada uno en un orden determinado. Sólo un dispositivo puede tener el TOKEN a la vez y mientras este se comunica con el HOST, los otros deben permanecer en estado de espera, cuando finalice la comunicación, el HOST le quita el TOKEN al primer dispositivo y se lo pasa al siguiente. Cuando se conecta el dispositivo USB al ordenador, este realiza una serie de peticiones para conocer la función del dispositivo, el software asociado que se va a utilizar y establecer la comunicación. Una vez establecida la comunicación, se comienzan a realizar las transferencias de datos. El protocolo USB utiliza espacios de tiempo llamados “FRAMES” con 1 milisegundo de duración dentro de los cuales se acomodan las transferencias. Cada trasferencia está compuestas de una o varias transacciones según sea el caso. Existen cuatro tipos de transferencias en el protocolo USB, cada una de ellas está diseñada para una función en específico y tienen un protocolo propio: • Control: tienen un ancho de banda reservado (que es expandible según la disponibilidad) en el bus. Son las de más alta prioridad. Permiten transmitir como máximo 64 bytes por FRAME en una sola transacción. • Bulk: especial para transmitir grandes cantidades de datos. No tienen ancho de banda reservado y su prioridad es baja. • Interrupt: no son interrupciones como tal, el HOST debe hacer un llamado al dispositivo para que este responda (dar el TOKEN), sin embargo tienen alta prioridad. Son transferencias rápidas pero tienen un ancho de banda limitado en el bus. No hay garantía de velocidad constante de transmisión, sólo hay garantía de que el tiempo 29 entre los intentos para transmitir un dato no será mayor que la “latencia” (tiempo de retardo del bus) especificada. • Isochronous: los datos se entregan a una frecuencia constante, no hay confirmación de llegada. Se usan cuando la pérdida de algunos datos es aceptable. TIPO DE TRANSFERENCIA USO TÍPICO ¿REQUERIDA POR TODOS LOS DISPOSITIVOS? ¿PERMITIDA EN DISPOSITIVOS QUE TRABAJEN EN LA VELOCIDAD LOW SPEED? MÁXIMO NÚMERO DE BYTES/MILISEGUNDO POR TRANSFERENCIA EN MODO FULL SPEED ASUMIENDO EL PAQUETE MÁS GRANDE POSIBLE DIRECCIÓN DEL FLUJO DE DATOS ANCHO DE BANDA RESERVADO ¿PERMITE CORRECCIÓN DE ERRORES? ¿DATOS POR MENSAJE O POR CORRIENTE (STREAM)? ¿TASA DE RECEPCION GARANTIZADA? ¿LATENCIA (TIEMPO MÁXIMO ENTRE TRANSFERENCIAS) GARANTIZADA? CONTROL BULK INTERRUPT ISOCHRONOUS Configuración Impresoras, scanners Teclados, ratones Audio si no no no si no si no 832 (13 transacciones de 64 bytes por FRAME) 1216 (19 transacciones de 64 bytes por FRAME) 64 (1 transacción de 64 bytes por FRAME) 1023 (1 transacción de 1023 bytes por FRAME) IN/OUT IN/OUT 10% en modos low/full speed, 20% en modo high speed (mínimo) 0% si si si no mensaje stream stream stream no no no si no no si si IN/OUT (sólo IN en IN/OUT dispositivos USB 1.0) 90% en modos low/full speed, 80% en modo high speed (isochronous e interrupt combinados) (máximo) Tabla 4.1. Características de los tipos de transferencia USB. Cada transacción se refiere al envío de un paquete, existen cuatro tipos de paquetes en el protocolo y algunos tienen longitud variable de acuerdo el número de datos que se desee transmitir. En la siguiente figura se muestran los diferentes tipos de paquetes y su longitud. 30 Figura 4.1. Tipos de paquete USB. Al principio de cada FRAME se envía un paquete de tipo START OF FRAME para configurar la comunicación e indicar el inicio de un nuevo FRAME. Para cada transferencia se requiere como mínimo el envío de 3 paquetes: Primero el HOST envía al dispositivo el TOKEN PACKET en el cual se encuentra la información del dispositivo con el que quiere comunicarse, luego uno o más DATA PACKET donde va la información que se quiere transmitir (estos paquetes pueden ir del HOST al dispositivo o viceversa dependiendo de la naturaleza del dispositivo y de la transferencia que se quiere realizar) y para terminar un HANDSHAKE PACKET en el cual dependiendo de la dirección en la cual se enviaron los datos, el dispositivo o el HOST informan a su contraparte que la transferencia ha terminado satisfactoriamente y se da una señal de fin de la transferencia (se le quita el TOKEN al dispositivo). A continuación se explica brevemente el contenido de cada uno de los campos de cada tipo de paquete: • SYNC: 1 byte para sincronizar la transferencia de datos. • PID: PACKET ID, 1 byte para identificar el tipo de paquete (TOKEN, DATA, HANDSHAKE o SPECIAL). • ADDR: Dirección del dispositivo al que va dirigido el paquete, son 7 bits. • ENDP: END POINT indica desde donde y hacia donde va dirigido el paquete, 4 bits. • CRC: 5 bits para paquetes tipo TOKEN y 16 bits para paquetes tipo DATA. • EOP: END OF PACKET 3 bits. 31 USB utiliza 2 líneas para transmitir los datos de todos los dispositivos en el bus, los cables forman un camino de transmisión que todos los dispositivos deben compartir. A diferencia de otros buses de datos, USB no tiene una línea dedicada para envío y otra para recepción, sino que el par de cables USB forman una señal diferencial y la dirección del flujo de datos toma turnos (HOST-> dispositivo, HOST <- dispositivo). Para la tarjeta de control USB, se determinó que el mejor tipo de transferencias que se podía utilizar para enviar las instrucciones al LM629 son las del tipo INTERRUPT por las siguientes razones: el estándar recomienda dejar las transmisiones de CONTROL para las configuraciones de transferencia del dispositivo, las transferencias tipo BULK son muy eficientes para enviar una gran cantidad de datos a la vez pero no son las mejores dentro del estándar para enviar una cantidad de datos inferior a los 64 bytes por transferencia; las instrucciones que se envían al LM629 como máximo llegan a los 15 bytes, lo normal es que sea menos. Las transferencias ISOCHRONOUS se utilizan principalmente cuando la aplicación requiere de un flujo de datos constante, en el caso de la tarjeta de control esto no es un requerimiento. Las transferencias tipo INTERRUPT tienen gran parte del ancho de banda reservado (entre el 80% y el 90% dependiendo de la velocidad a la que se trabaje) y su protocolo parece el ideal para manejar la cantidad de datos por transferencia que requiere la tarjeta de control. 4.3. Bus Ethernet Ethernet es la tecnología más utilizada para redes de área local (LAN por sus siglas en inglés) hoy en día. El estándar fue desarrollado por Xerox en la década de 1970 y poco a poco su popularidad fue creciendo hasta el punto en que en 1985 la IEEE (sociedad de ingenieros electricistas y en electrónica que regula los estándares en esta área) lo aceptó oficialmente como el estándar IEEE 802.3, desde entonces se ha convertido en el estándar más usado para redes en el mundo. Las principales ventajas que tiene este estándar y han logrado que su uso sea tan generalizado son las siguientes: 32 • Versatilidad: Es posible utilizar Ethernet para transferir cualquier tipo de datos sin importar su tamaño o naturaleza y existen diversos protocolos que se adaptan a las necesidades de virtualmente cualquier aplicación. • Facilidad de uso: La mayoría del trabajo ya está hecho en las redes Ethernet, sólo hace falta conectar los dispositivos u ordenadores a la red y realizar, si hiciera falta, unas pocas configuraciones referentes a los protocolos de datos que se van a utilizar. No hace falta desarrollar una interfaz de hardware nueva o proponer reglas nuevas de transmisión o protocolos, el estándar es suficientemente amplio como para que pueda ser utilizado por cualquiera para cualquier aplicación. • Disponibilidad de productos: Gracias a su amplio uso, existe una gran disponibilidad de dispositivos de hardware en el mercado y de componentes de software (incluso software libre en la Internet) listos para ser utilizados. • El hardware controla el tráfico de la red: Todos los elementos de la red tienen la misma prioridad de acceso a ella y el hardware se encarga de detectar colisiones y hacer las peticiones para retransmisiones (esperando un tiempo al azar antes de volver a transmitir para que se libere el canal) si fuera necesario. • Alta velocidad: Ethernet soporta velocidades desde 10 Mbps hasta 1 Gbps. • Puede cubrir grandes distancias: el uso de los cables de tipo par trenzado permite la conexión de 2 dispositivos de la misma red que se encuentren hasta a 100 metros de distancia uno del otro. Para distancias mayores se puede utilizar fibra óptica que son capaces de cubrir hasta 5 kilómetros de distancia sin repetidoras. • Las interfaces están aisladas eléctricamente: Cada interfaz Ethernet debe estar aislada eléctricamente de su cable de red, el estándar incluye las especificaciones de los transformadores que deben utilizarse. Con esto se protegen los dispositivos conectados a la red, de posibles cambios dañinos que puedan ocurrir en el voltaje de la red. • Bajo costo: Mientras menor sea la velocidad de transmisión, menor será el costo del sistema. Hoy en día resulta muy económico desarrollar dispositivos que funcionen con el estándar Ethernet (16) (17) (18). 33 4.3.1. Protocolo UDP La selección del protocolo para la tarjeta de control de movimiento se hizo pensando en que a futuro, la versatilidad del bus Ethernet permitiría cambiar de protocolo sin que hiciera falta mucho trabajo adicional. El protocolo UDP (siglas del inglés USER DATAGRAM PROTOCOL) es uno de los de más fácil y rápida implementación sobre el estándar Ethernet. EL protocolo UDP es una versión más simple del protocolo TCP/IP que está basado en el modelo OSI. UDP es un protocolo que trabaja sobre la capa de transporte que envía paquetes llamados datagramas sin que haya necesidad de establecer conexión, toda la información que pudiera hacer falta está contenida dentro del datagrama. Este protocolo no tiene confirmación, ni control de flujo, por lo que los paquetes pueden adelantarse unos a otros; tampoco hay confirmación de entrega o de recepción por lo que existe la posibilidad de que algunos paquetes se pierdan bajo ciertas condiciones. Comúnmente se utiliza en aplicaciones en las que la pérdida de un paquete no es algo crítico, sin embargo, gracias a lo robusto del hardware Ethernet, esto no representa una gran preocupación cuando se trata de redes pequeñas ya que las probabilidades de pérdida de un paquete son muy bajas. Un paquete Ethernet está compuesto por 7 campos como se muestra en la siguiente tabla: CAMPO TAMAÑO (en Bytes) FUNCIÓN PREÁMBULO 7 Patrón de sincronización. START FRAME DELIMITER 1 Fin del patrón de sincronización. Dirección física (MAC) del DIRECCIÓN DE DESTINO 6 dispositivo al que va dirigido el paquete. DIRECCIÓN DE REMITENTE LONGITUD O TIPO Dirección física (MAC) del 6 dispositivo que envía el paquete. 2 Si es 1500 (0x05DC) o menor, 34 se refiere a la longitud en bytes del campo de datos del paquete. Si es 1536 (0x0600) o mayor, se refiere al protocolo utilizado por el contenido del campo de datos del paquete. Contiene la información que DATOS De 46 a 1500 quiere transmitir el remitente al destinatario. FRAME CHECK SEQUENCE 4 Valor para la detección de errores. Tabla 4.2. Paquete Ethernet. Como se mencionó anteriormente, UDP está basado en el protocolo TCP/IP y trabaja directamente sobre la capa de transporte. Un paquete UDP se ubica dentro del paquete Ethernet como se muestra en la siguiente figura: Figura 4.2. Paquete UDP. En la figura 4.2 se aprecia que la mínima cantidad de datos que se puede enviar con un paquete UDP son 18 bytes. En caso de uno utilizarse estos 18 bytes completos, el estándar exige que se haga un “PADDING” (relleno) de los bytes que no se van a utilizar. La cabecera UDP tiene un campo que indica la longitud en bytes de los datos que se envían dentro del datagrama. Si se quiere, se pueden enviar hasta 1472 bytes de datos en un solo paquete UDP. 35 Implementar un STACK (pila) TCP/IP que pueda manejar paquetes UDP es una tarea bastante sencilla ya que existen librerías y ficheros escritos en los lenguajes de programación más utilizados que pueden descargarse de forma gratuita desde la internet. Estos STACKS genéricos que se consiguen en la web son compatibles con muchos compiladores y es sencillo incluirlos en los proyectos de software que se estén desarrollando. 4.4. Análisis comparativo Después de conocer los protocolos de los dos estándares planteados como posibles opciones para sustituir al bus ISA en las tarjetas de control de movimiento del DCA del IAI, se seleccionó el estándar que ofrece las mejores prestaciones tomando en cuenta las funciones que se puedan requerir en un futuro de la interfaz de la tarjeta controladora. La versión de USB que se planteó utilizar en la tarjeta es USB 2.0 a la velocidad FULL SPEED (12 Mbps) ya que es posible encontrar controladores USB de este tipo en microcontroladores comerciales a muy bajo costo. De forma análoga, la versión de Ethernet que se consideró fue la versión 10BASE-T (10 Mbps) que también se encuentra disponible en microcontroladores o controladores dedicados a muy bajo costo. Debido a que la interfaz se comunicará directamente con un LM629, se estudió cuales son las funciones de este dispositivo más utilizadas en un programa estándar de movimiento de un robot. Luego, se calculó cuanto tiempo le lleva al LM629, operando a 8 MHz, ejecutar cada una de estas instrucciones y finalmente se calculó la mayor velocidad a la que se podría comunicar un LM629. Las funciones más utilizadas por el LM629 son LTRJ (cargar una trayectoria), UDF (actualizar filtro), STT (comenzar trayectoria) y RDRP (leer posición real). Se creó una secuencia ficticia que asemeja el comportamiento más usual de los programas de los robots y se calculó el tiempo de duración total, la secuencia está basada en 2 comandos de la librería ROB (segundo nivel por arriba de la LM629 diseñada por el DCA del IAI): RobMovPosAxis que mueve el eje a una posición deseada y RobGetPosAxis que lee la 36 posición actual del eje. En la siguiente tabla se muestra la secuencia de instrucciones y los tiempos aproximados calculados con la información disponible en la hoja de datos del LM629. COMANDO ACCIÓN TIEMPO DE EJECUCIÓN LTJR Cargar velocidad 3670 ns LTRJ Cargar posición 3670 ns LTRJ Activar control de posición 700 ns UDF Actualizar parámetros del filtro 700 ns RDRP Leer posición actual 700 ns 11,13 µs Tabla 4.3. Secuencia de comandos del LM629. Esta secuencia transmite un total de 33 bytes en 11,13µs. Con esto se puede calcular la máxima velocidad teórica a la cual se podría enviar comandos a un LM629. Esta velocidad se calculó de la siguiente forma: 33 8 ! 23,7 &' 11,13 # Ecuación 4.1. Cálculo de la máxima velocidad de comunicación con el LM629. Con esto se sabe que no se puede comunicar más rápido que a 23,7 Mbps con un LM629. Ahora bien, conocer que enviar los 33 bytes necesarios para un movimiento tarda 11,13µs en transmitirse, es útil para calcular cuántos LM629 se pueden conectar a la vez en un bus. Si se envían las instrucciones antes mencionadas cada 11,13µs, se tiene una frecuencia de refrescamiento de aproximadamente 90 KHz. El ancho de banda teórico de Ethernet es de 10 Mbps y el de USB es de 12 Mbps, esto permitiría conectar simultáneamente ciento once LM629 en un bus Ethernet y ciento treinta y tres en un bus USB actualizando movimientos en cada uno de ellos a una frecuencia de 90Khz. 37 El estándar Ethernet sugiere que no se utilicen cables, del tipo par trenzado, con más de 100 metros de longitud en una red. El estándar USB, por su parte, recomienda que no se utilicen cables con más de 5 metros de longitud. Al usar una topología tipo TOKEN RING, USB sólo soporta el tipo de transmisión HALF DUPLEX, es decir, la información viaja en ambos sentidos por el mismo cable tomando turnos, primero en un sentido y luego en el otro, no es posible que un dispositivo y el HOST se envíen datos mutuamente a la vez. Por otro lado Ethernet utiliza CSMA/CD, que es una topología que permite la detección de colisiones y retransmisión de datos pasado un tiempo aleatorio si se detecta alguna. En Ethernet se puede trabajar tanto en HALF DUPLEX como en un modo FULL DUPLEX (un cable para transmisión y otro para recepción, lo que permite una comunicación bidireccional). El protocolo USB es por su naturaleza bastante complejo, esto se debe a que está enfocado a ser muy fácil de usar para el usuario. En el caso del DCA en el IAI, sería necesario programar drivers especializados de la tarjeta controladora para distintos sistemas operativos (Windows, Qnx y Linux) ya que no todos los robots utilizan el mismo sistema en su HOST. Esto además del software del microcontrolador dedicado en la tarjeta controladora y del software de alto nivel que se utilice para generar los comandos e instrucciones. En el caso de Ethernet, como su uso en redes está estandarizado, los drivers ya se encuentran en todos los sistemas operativos y el trabajo de programación se reduce al software del microcontrolador y el software de alto nivel. Ethernet es un estándar muy flexible sobre el cual se puede trabajar con diferentes protocolos: UDP, TCP/IP, http, entre otros. USB sólo trabaja con su protocolo propio según está definido por el estándar. Si se utiliza Ethernet, en un futuro se puede desarrollar un servidor http dentro del microcontrolador de la tarjeta de control y así acceder desde internet a una página web, propia de cada una de tarjetas (bien sean de 1 eje o de varios) para modificar parámetros del filtro PID, secuencias de movimiento, etc. 38 En USB se determinó que el tipo de transferencias más conveniente es el INTERRUPT, se conoce que con este tipo de transferencias el máximo número de bytes por FRAME que se puede transmitir es 64 en una sola transferencia. Si se quisieran enviar 2 secuencias de comandos como la expuesta anteriormente con 33 bytes de datos cada una, se requeriría más de un FRAME (1 milisegundo) para poder enviarlas ya que 2 de estas secuencias suman 66 bytes y no caben en uno solo. Esto reduce la velocidad de transmisión ya que es necesario enviar más paquetes de control; el protocolo cortará la segunda secuencia de comandos al finalizar el primer FRAME, luego el HOST enviará el paquete START OF FRAME del segundo FRAME y restablecerá la conexión para terminar de enviar el remanente de la segunda secuencia de comandos, para se termine la transmisión habrá pasado más de 1 milisegundo. Utilizando el protocolo UDP sobre Ethernet, se pueden enviar los 33 bytes en un solo paquete, considerando que se necesitan 58 bytes de control (cabeceras Ethernet, IP, UD y pie de FRAME Ethernet), el paquete tendría un tamaño total de 91 bytes. Tomando la velocidad teórica de la versión de Ethernet a utilizar (10 Mbps), se obtiene que para transmitir estos 33 bytes de datos se requiere de 72,8 µs. Como en Ethernet no se depende de los FRAMES de 1 milisegundo para el envío de datos, se consigue que la transferencia de 2 de estas secuencias de comandos se haga en aproximadamente 145,6 µs que es un tiempo notablemente menor a 1 milisegundo. Tomando en consideración los puntos expuestos anteriormente, se determinó que el bus de datos que mejor se adapta a las necesidades de la tarjeta de control de movimiento nueva del DCA en el IAI es Ethernet. 39 CAPITULO 5. IMPLEMENTACIÓN DEL STACK TCP/IP DE Microchip EN UN dsPIC33 5.1. Introducción En los capítulos anteriores se seleccionaron componentes importantes de las nuevas tarjetas controladoras de movimiento del DCA en el IAI. Una vez decidido el bus de datos que se va a utilizar, es necesario estudiar la mejor manera de implementarlo en el diseño. El presente capítulo trata sobre como implementar un bus de datos Ethernet con protocolo UDP de forma rápida y sencilla. 5.2. Microchip dsPIC33 Existen en el mercado numerosas alternativas para implementar un bus Ethernet utilizando microcontroladores. La compañía Microchip ofrece entre sus productos de la línea de microcontroladores PIC, algunas versiones que incluyen como periférico un controlador Ethernet. También ofrece controladores Ethernet “Stand Alone”, dispositivos cuya única funcions es servir de controlador Ethernet y poseen una interfaz estándar para comunicarse de forma sencilla con cualquier microcontrolador. Se decidió utilizar microcontroladores PIC de Microchip en lugar de otros fabricantes ya que su implementación es muy sencilla, ofrecen una muy buena relación coste/beneficio, son fáciles de usar y de programar, existen numerosas herramientas de desarrollo disponibles, algunas incluso de forma gratuita en la web del fabricante, el DCA del IAI posee desde hace un tiempo experiencia trabajando con estos microcontroladores y además ha adquirido en los últimos años herramientas de desarrollo para ellos que facilitan el diseño y la puesta a punto de los nuevos sistemas a implementar. Para seleccionar el mejor microcontrolador a utilizar, se estudiaron diferentes opciones. A la fecha de realización de este libro, Microchip ofrece 3 gamas de microcontroladores divididos de acuerdo al bus que utilizan, los más básicos tienen un bus de 8 bits, la gama media tiene un bus de 16 bits y la gama superior posee un bus de 32 bits. Dentro de cada gama 40 existen varias familias, a medida que se está más arriba dentro de la gama, el microcontrolador posee más funciones y tiene un mejor desempeño. De la misma manera, el costo aumenta cuanto más arriba dentro de la gama se encuentre una familia de microcontroladores. Figura 5.1. Gamas y familias de microcontroladores PIC de Microchip. Mientras más funciones tenga el microcontrolador, más versátil será la tarjeta de control de movimiento. Aunque desde el principio del diseño de determinó que dicha tarjeta estará basada en el LM629, es posible que en un futuro no muy lejano el DCA del IAI quiera utilizar algún esquema de control diferente al que ofrece el LM629 por sí mismo (control de fuerza por ejemplo). Es por esto que una de las características que debe tener el microcontrolador que se seleccione es poseer funciones para el control de motores, así se puede utilizar el microcontrolador solo o en conjunto con el LM629 para aplicar esquemas de control avanzados. También es importante que el microcontrolador que se seleccione posea puertos de entrada/salida, tanto digitales como analógicas, de forma que puedan ser utilizados como entradas para sensores o como comunicación con otros dispositivos que se quieran utilizar en un futuro. El microcontrolador debe tener un periférico controlador de Ethernet o en su defecto periféricos de comunicación estándar (UART, SPI o I2C por ejemplo) para la interfaz con un controlador Ethernet externo. Actualmente, los controladores Ethernet como periféricos incluidos dentro de los microcontroladores de Microchip se encuentran sólo en la 41 familia PIC18F (parte alta de la gama baja de microcontroladores de 8 bits), su inclusión fue hecha muy recientemente y por esto no se están presentes en las otras gamas; de tal manera, que la mejor opción en este caso es utilizar un controlador Ethernet externo para poder contar con un microcontrolador más poderoso y con más funciones que cualquiera de la familia PIC18F ya que estos son muy básicos para ser utilizados en la tarjeta de control de movimiento. La mayoría de los microcontroladores actuales utilizan una lógica de 3,3 voltios, el LM629 utiliza una lógica de 5 voltios. Es por esto que es conveniente que el microcontrolador que se seleccione tenga suficientes entradas digitales que soporten los niveles de voltaje con los que trabaja el LM629. Para la comunicación en sentido microcontrolador -> LM629 no hay problemas ya que las entradas digitales del LM629 consideran como uno lógico a cualquier valor superior a los 2 voltios, es decir, que con un microcontrolador cuyo uno lógico sea 3,3 voltios se puede acoplar sin problemas a este. 5.2.1. Características principales del dsPIC33FJ256MC710 La familia dsPIC33 se encuentra, actualmente, en la parte más alta de la gama media de los microcontroladores de Microchip. Son microcontroladores con capacidad de procesamiento de señales, muy completos en cuanto a periféricos y puertos, que tienen una excelente relación coste/beneficio. Se escogió el dsPIC33FJ256MC710, un microcontrolador que además de poseer capacidad para el procesamiento de señales, posee periféricos avanzados como por ejemplo, módulos para el control de motores por medio de señales PWM, control de tiempo muerto de procesamiento, control de fase de salida de las señales generadas, señales complementarias, sincronización con el convertidor analógico/digital, entre otros. 42 Figura 5.2. Gama de microcontroladores de 16 bits de Microchip. Este microcontrolador es capaz de operar hasta a 40 MIPS (Millones de Instrucciones por Segundo), tiene una memoria de programación de 256 KB, 32.768 bytes de memoria RAM, 85 puertos de entrada/salida, todos configurables y con tolerancia a 5 voltios. En cuanto a sus periféricos de comunicación, cuenta con 2 puertos seriales UART, 2 SPI y 2 I2C además de 2 puertos CAN. Posee un convertidor Analógico a Digital de 24 canales con una resolución de 12 bits a una frecuencia de muestreo de 500 Ksps (miles de muestras por segundo). Cuenta con 8 puertos capaces de realizar funciones de Input Capture, Output Compare y PWM para el control de motores con una resolución de 16 bits, además tiene una interfaz para que se puedan conectar directamente encoders de cuadratura (tales como los que utiliza el LM629). Posee 9 módulos de Timers de 16 bits y 4 de 32 bits para interrupciones de tiempo o temporizadores. En comparación con otros microcontroladores de su clase, este es el que ofrece mejores prestaciones y permite que el diseño se pueda hacer pensando en futuras mejoras a la tarjeta de control de movimiento sin que haya que rediseñarla al dejar puertos y periféricos libres a los que se puede acceder de forma externa a la tarjeta. Otra característica muy importante de este microcontrolador es que sus instrucciones están optimizadas para compiladores en lenguaje C. Esto significa que el desarrollador puede programar en un lenguaje de alto nivel y el compilador generará un código en el lenguaje del microcontrolador muy eficiente, anteriormente programar en alto nivel era sinónimo de ineficiencia en el código ya que los microcontroladores estaban pensados para ser 43 programados en su lenguaje ensamblador directamente y el código generado por los compiladores de alto nivel no era el mejor para aprovechar al máximo los recursos del sistema. 5.2.2. Herramientas de desarrollo Hoy en día existen muchas herramientas de desarrollo para trabajar con microcontroladores de Microchip, algunas de ellas producidas por el mismo fabricante y otras por terceras partes. Todas estas herramientas de programación facilitan el proceso de diseño y puesta a punto de los sistemas. La principal ventaja de utilizar productos Microchip es que se pueden conseguir muchas de estas herramientas de forma gratuita y las otras tienen un costo relativamente bajo, lo que permite mantener bajos los costos de desarrollo. 5.2.2.1. MPLAB IDE Una de estas herramientas es el entorno de programación MPLAB IDE, producido por Microchip y distribuido de forma gratuita en su página web. Se trata de un entorno de programación muy versátil que incluye compiladores para distintos lenguajes de programación (otros compiladores extra se pueden descargar desde la página web, algunos de forma gratuita y otros no). Figura 5.3. MPLAB IDE. 44 Este entorno de programación que actualmente va por su versión 8.1 es compatible con otras herramientas de desarrollo de Microchip como programadores, programadores/depuradores y tarjetas de evaluación, además es compatible con otras herramientas de hardware o software producidas por terceras partes, como por ejemplo, MATLAB. La gran ventaja de MPLAB es su facilidad de uso, la interfaz es bastante intuitiva y existe gran cantidad de información y documentación en la página web del fabricante para facilitar la familiarización con el entorno. 5.2.2.2. Compilador C30 El compilador C30 es una herramienta para programar microcontroladores Microchip de 16 bits, específicamente las familias PIC24, dsPIC30F y dsPIC33F en el lenguaje de programación ANSI C. Este compilador se puede ejecutar dentro del entorno de programación MPLAB IDE y es compatible con todos los programadores y programadores/depuradores que Microchip tiene en el mercado hoy en día. Gracias a esto, utilizar este compilador permite a los desarrolladores hacer una depuración del programa a nivel del código fuente. La versión estudiantil de este compilador se puede conseguir de forma gratuita en la página web del fabricante. Esta versión no posee restricciones de programación (posee algunas restricciones de optimización, pero estas se aplican dos meses después de la fecha de instalación para permitir un período de prueba) y permite sacar el mejor provecho de los microcontroladores Microchip al programarlos en lenguaje C. 5.2.2.3. Programador/Depurador Microchip MPLAB ICD 2 El MPLAB ICD 2 es un depurador y programador en tiempo real de bajo coste para microcontroladores Microchip. Utiliza una tecnología propia de esta empresa para realizar depuración en vivo (con el prototipo funcionando), de esta forma los programas se pueden 45 cargar en el microcontrolador, ejecutar en tiempo real y examinar en detalle para depurar el código en el entorno de programación MPLAB IDE. Figura 5.4. MPLAB ICD 2. Este dispositivo permite observar el comportamiento de las variables durante la ejecución del programa y colocar breakpoints (puntos de parada) en el código (C o ensamblador) para examinar variables y registros con el programa detenido en un punto. También permite ejecutar paso a paso programas escritos en lenguaje C. Su conexión es bastante sencilla, utiliza 2 líneas de hardware dedicadas (2 terminales del microcontrolador) para programar de forma serial y realizar la depuración en tiempo real. Por otro lado, se puede conectar al ordenador por un puerto USB o mediante un puerto serial RS-232. Figura 5.5. Conexión MPLAB ICD 2. Adicionalmente permite programar y reprogramar la memoria flash de los microcontroladores siempre que sea necesario. 46 5.2.3. Controlador Ethernet e interfaz SPI El microcontrolador escogido no posee dentro de sus periféricos un controlador Ethernet, es por esto que fue necesario buscar un controlador de tipo stand alone compatible. La compañía Microchip fabrica un controlador Ethernet de este tipo que se adapta muy bien a las necesidades de la tarjeta de control de movimiento y es compatible con todos los microcontroladores fabricados por esta casa, así como también con microcontroladores de otros fabricantes que implementen un bus SPI (por hardware o por software). Se trata del ENC28J60, un controlador Ethernet 10BASE-T que se comunica mediante un puerto SPI con los microcontroladores. 5.2.3.1 SPI El bus SPI (siglas del inglés Serial Peripheral Interface) es un estándar de comunicaciones utilizado principalmente para la transferencia de información entre circuitos integrados en equipos electrónicos, esto se debe a que fue pensado para comunicación a distancias cortas (del orden de unos pocos centímetros). Este permite controlar casi cualquier electrónica digital que acepte un flujo de bits en serie regulado por un reloj. El estándar se compone de una línea de reloj (SCLK), dato entrante al dispositivo maestro (MISO), dato saliente del dispositivo maestro (MOSI) y una línea llamada CHIP SELECT (SS) que regula, como si fuera un interruptor de encendido y apagado, la operación del dispositivo con el que se desea comunicar. Figura 5.6. Líneas de comunicación SPI. Este estándar permite la comunicación FULL DUPLEX (en ambos sentidos al mismo tiempo) y funciona con la configuración maestro – esclavo, es posible tener varios esclavos conectados a un solo maestro. 47 El microcontrolador seleccionado cuenta con 2 puertos SPI independientes por lo que no es problema conectar el controlador Ethernet. 5.2.3.2. Controlador Ethernet ENC28J60 El controlador Ethernet de tipo stand alone ENC28J60 producido por la compañía Microchip es una excelente alternativa para incorporar una interfaz Ethernet a un circuito electrónico que contenga un microcontrolador. Este dispositivo cumple con todas las especificaciones del estándar IEEE 802.3. Posee varios métodos de filtrado de paquetes para limitar el número de paquetes entrantes. Cuenta con un módulo interno de DMA (del inglés Direct Memory Access) para la rápida manipulación de los datos y el cálculo de CHECKSUM (componente de un paquete Ethernet que se utiliza como verificación de la integridad del paquete recibido) asistido por hardware que se utiliza en numerosos protocolos de red. La comunicación con el HOST (microcontrolador en este caso) está implementada mediante el estándar SPI con tasas de reloj máximas de hasta 20 MHz; adicionalmente cuenta con un terminal para interrupciones al HOST. Cuenta con dos terminales dedicados para los indicadores luminosos de conexión establecida y actividad de la red. Figura 5.7. Esquema general de conexión del ENC28J60. La interfaz de hardware es bastante sencilla, sólo se necesita el microcontrolador, un reloj, un transformador Ethernet, el conector RJ45 y algunos pocos componentes pasivos como resistencias y condensadores. La implementación de este controlador es muy sencilla y rápida. 48 Este controlador implementa la capa física del modelo OSI, el resto de las capas (que dependen del protocolo que se utilice) se deben procesar dentro del microcontrolador con la información que se recibe por el puerto SPI. 5.3. El stack TCP/IP de Microchip Para hacer la interfaz Ethernet aún más sencilla, Microchip ofrece en su página web de forma gratuita un stack TCP/IP programado en lenguaje C dentro del entorno de desarrollo MPLAB y que es compatible con gran número de sus microcontroladores (entre los cuales se encuentra el dsPIC33FJ256MC710). El stack TCP/IP de Microchip es un conjunto de ficheros en los que se encuentran implementadas las funciones que proveen los servicios para aplicaciones estándar basadas en el protocolo TCP/IP, por ejemplo: servidores http, clientes de correo electrónico, stacks UDP, etc. Los ficheros se encuentran relacionados unos con otros y las funciones están diseñadas para que la información pase desde las capas inferiores del protocolo hasta la capa de aplicación a la que finalmente llegan los datos en el formato deseado. La aplicación del desarrollador puede ser incluida fácilmente como uno o varios ficheros extra y algo de código en el programa principal. Como ejemplo, el stack trae un programa de demostración con un servidor http implementado que es una muy buena referencia para desarrollar aplicaciones propias. El stack está implementado de forma modular, los servicios programados se encargan de crear las capas abstractas del modelo TCP/IP de forma que los desarrolladores que trabajan con este stack no tienen necesariamente que conocer todos y cada uno de los detalles de implementación del protocolo para utilizarlo. Una de las ventajas de utilizar el stack de Microchip a la vez que se utilizan productos Microchip, es que el stack ya tiene implementada la interfaz SPI y todos los detalles de configuración de hardware para la comunicación con el controlador stand alone ENC28J60. 49 Sólo es necesario que se especifique el puerto SPI (en el caso de que el microcontrolador posea múltiples puertos SPI) en el que está conectado el controlador y las librerías del stack TCP/IP se encargan del resto. Esto representa menor carga de programación y así el desarrollador puede enfocarse en su aplicación más que en los detalles de la implementación de la interfaz. Aunque el stack de Microchip está hecho de forma modular y está bastante comentado, puede ser complicado entender el código o encontrar los segmentos en donde se deben realizar las modificaciones para la configuración de hardware. Por esta razón, algunos desarrolladores independientes han realizado modificaciones a las librerías del stack TCP/IP de Microchip en las que se reordena el código y se agregan comentarios que facilitan la comprensión y configuración del mismo. Existe una versión muy utilizada, según información obtenida en los foros de la página web de Microchip, ya que el nuevo orden y la gran cantidad de comentarios agregados facilita mucho el entendimiento del código. Además esta versión cuenta con un manual del usuario en el que se explica de forma sencilla y rápida el uso del stack (esto hace mucha falta en la versión de Microchip). Esta versión del stack modificado fue desarrollada por un ingeniero argentino residente en los Estados Unidos de América llamado Jorge Amodio. El software y la documentación se pueden conseguir de forma gratuita en la página web de la empresa LJCV Electronics: http://www.ljcv.net/projects/mchptcp3.75/. Para el software de la tarjeta de control de movimiento del DCA del IAI se utilizó la versión 3.75 de este stack con modificaciones menores y algunas funciones adicionales para facilitar la implementación del stack UDP (19). 5.3.1. Configuración básica del stack TCP/IP Para utilizar el stack TCP/IP de Microchip modificado por Jorge Amodio se deben realizar las configuraciones necesarias de acuerdo a las funciones y los servicios que se quieran implementar. Configurar este stack es muy sencillo ya que al estar programado de forma modular, sólo es necesario comentar algunas líneas de código o activar algunas que están comentadas, para que este funcione como se desea. En el peor de los casos, si la configuración de hardware es muy diferente a las que están predefinidas, habría que modificar 50 los terminales a los que están asociados algunos periféricos, pero, el orden y la modularidad del código hacen que esto no sea tarea difícil. Básicamente existen 3 ficheros para la configuración del stack: config.h donde se encuentran las configuraciones básicas de los módulos del stack (direcciones IP, máscaras de red, etc.) y se pueden seleccionar cuales de estos módulos se van a utilizar en el programa principal. El segundo es el fichero de hardware que lleva el nombre de alguna de las tarjetas de demostración de Microchip, si se selecciona alguna tarjeta que utilice el mismo microcontrolador (o uno muy parecido de la misma familia), es muy probable que no haya que realizar cambios en este fichero, para la tarjeta controladora de movimientos se utilizó el fichero exp16_dspic33.h que está basado en un microcontrolador de la familia dsPIC33F y no hizo falta realizar muchas modificaciones. Finalmente, el fichero main.c contiene el programa principal del stack, en este fichero se deben agregar las rutinas o funciones del usuario y ya con esto se tiene el stack TCP/IP configurado por completo y listo para utilizarse. Como se puede apreciar, la configuración es muy sencilla y el stack es bastante estable, de hecho, en los foros que se encuentran en la página de Microchip, los usuarios más experimentados recomiendan utilizar esta versión en lugar de la original de Microchip ya que es mucho más fácil de entender y de utilizar. 51 CAPITULO 6. TARJETA DE CONTROL DE MOVIMIENTO PARA ROBOTS DE NUEVA GENERACIÓN 6.1. Introducción En el presente capítulo se muestra un esquema general de la tarjeta de control de movimiento con bus Ethernet. En primer lugar, se discuten dos de las diferentes arquitecturas de diseño para robots autónomos y se selecciona una para que el diseño de la tarjeta se adapte a ella. En la sección 6.3 se hace un recuento del funcionamiento de las tarjetas con bus ISA para justificar el diseño de una nueva tarjeta de control de movimiento. Finalmente se muestra el esquema general del hardware de la tarjeta y diagramas de bloques del software. 6.2. Arquitecturas para el diseño de robots autónomos Las líneas de investigación del DCA del IAI están enfocadas al desarrollo de sistemas robóticos autónomos. Existen dos posibles arquitecturas de diseño para estos sistemas: centralizada o distribuida. Lo más común es que se utilicen arquitecturas intermedias en los que un sistema no es completamente centralizado ni completamente distribuido, pero para efectos didácticos se explicarán a continuación los dos extremos. 6.2.1. Arquitectura centralizada La arquitectura centralizada se basa en que el control del robot se ejerce enteramente desde un único centro de procesamiento y luego la información generada se transmite mediante cables a los actuadores para que estos ejecuten los movimientos deseados. Para cerrar los lazos de control, la información de los sensores debe transmitirse desde su ubicación en los actuadores hasta el centro de procesamiento. En el control centralizado se requiere de un centro de procesamiento con gran capacidad ya que debe encargarse de manejar al sistema tanto globalmente como en detalle, debe monitorizar y controlar al robot completo como un todo y a cada uno de sus actuadores. 52 Figura 6.1. Arquitectura de control centralizado. Tener un control centralizado puede servir para proteger físicamente al centro de procesamiento del robot ya que usualmente son dispositivos muy costosos y delicados que se podrían dañar fácilmente con un golpe accidental o por las inclemencias del clima si se dejan al descubierto. Una ventaja de la arquitectura centralizada es que se requiere de menos electrónica ya que todo está concentrado en un solo lugar, la desventaja es que en ese lugar donde se encuentra toda la electrónica concentrada se necesitan circuitos especializados de gran complejidad y esto puede llegar a ser muy costoso. En los robots caminantes del DCA del IAI actualmente se utiliza una arquitectura que se asemeja mucho a la centralizada, varias tarjetas de control de movimiento (de 3 o 4 ejes) se pinchan al bus ISA del ordenador de a bordo del robot, usualmente ubicada en el cuerpo del mismo, y desde allí se instruye a cada uno de los actuadores con lo que deben hacer. 6.2.2. Arquitectura distribuida En la arquitectura distribuida se busca tener inteligencia local en cada parte del robot y que el centro de procesamiento sólo se encargue de coordinar las acciones, es decir, el centro de procesamiento tiene una visión global del sistema y coordina a muy alto nivel los 53 movimientos del mismo; controladores más pequeños distribuidos en la anatomía del robot toman estás órdenes de alto nivel y las transforman a niveles más bajos hasta llegar al nivel de hardware en el que se instruye a los actuadores que realicen un movimiento. Figura 6.2. Arquitectura de control distribuido. La modularidad de esta arquitectura permite realizar cambios en el diseño sin la necesidad de sustituir al sistema por completo, sólo se cambia el módulo en el que se desee realizar la mejora de diseño. En la arquitectura distribuida, los sensores se conectan al controlador más cercano y éste posee la capacidad de interpretar las señales y generar una respuesta si es necesario. Esto quiere decir que el sistema posee inteligencia local en cada una de sus partes y el control central puede dedicarse sólo a coordinar acciones por lo que no se requiere de mucha capacidad de procesamiento. 54 6.3. Tarjetas de control de movimiento con bus ISA Como se ha mencionado en capítulos anteriores, las tarjetas de control de movimiento con bus ISA diseñadas por el DCA del IAI han servido durante años como pieza fundamental en el desarrollo de numerosos proyectos de robótica dentro del Instituto como por ejemplo en los robots caminantes SILO 4 y SILO 6. Su diseño tiende más hacia una arquitectura centralizada que hacia una distribuida. Figura 6.3. Robots caminantes del DCA del IAI. Actualmente el DCA del IAI desea estudiar el desarrollo de robots humanoides. Los investigadores de este departamento consideran que es conveniente buscar una alternativa a las tarjetas de control de movimiento actuales para que sean utilizadas en sus nuevos diseños ya que los robots humanoides representan un reto mayor, con problemas más complejos que a los que se han enfrentado hasta ahora. Un inconveniente de utilizar bus ISA para las tarjetas de control de movimiento hoy en día es que este estándar ya se encuentra obsoleto y es difícil (aunque no imposible) conseguir hardware como ordenadores de a bordo o concentradores para trabajar con él. Hoy en día existen muchos otros estándares que ofrecen mejores prestaciones a muy bajo costo, tal es el caso de Ethernet que permite velocidades de transmisión más rápidas y la conexión de más tarjetas de control de movimiento de forma simultánea al mismo bus, estas características son deseables para el diseño de un robot humanoide. Por otra parte, el bus ISA que utilizan las tarjetas de control de movimiento obliga a que las tarjetas estén pinchadas al ordenador de a bordo y de esta forma la electrónica del 55 robot está concentrada en un solo lugar (arquitectura centralizada), aunque, vale destacar que cada eje en las tarjetas de control de movimiento posee su propia tarjeta de potencia. En los robots humanoides de nueva generación, los investigadores del Instituto desean explorar nuevos esquemas de control que tiendan más hacia arquitecturas distribuidas. El tamaño de las tarjetas de control de movimiento también está limitado por la utilización del bus ISA ya que este estándar requiere que un borde de la tarjeta tenga al menos 10 centímetros de longitud (para bus ISA versión 8 bits) para que pueda pincharse en el bus. En los robots actuales se utiliza un ordenador de a bordo bastante en el que se realiza la mayor parte del procesamiento necesario para el movimiento de cada eje. Es deseable que para un robot humanoide, las tarjetas de control de movimiento posean inteligencia local, así se lograría disminuir la carga de procesamiento en el ordenador de a bordo y este puede encargarse únicamente del control a grandes rasgos del robot (que ya es bastante). Una arquitectura distribuida en los robots de nueva generación ayudaría a reducir la cantidad de cables de gran longitud dentro del robot, de esta forma es posible disminuir el peso de los robots y posiblemente dar más de libertad de movimiento a algunas articulaciones por las cuales, de otra forma, pasarían un gran número de cables. 6.4. Esquema general de Hardware de la tarjeta de control de movimiento Ethernet La tarjeta de control de movimiento con bus Ethernet fue diseñada de forma que fuera un dispositivo versátil en cuanto a hardware. Puede ser utilizada tanto en robots de nueva generación con arquitectura centralizada como en robots con arquitectura distribuida. Se utilizó el bus Ethernet en sustitución del bus ISA de las tarjetas de control de movimiento anteriores. Se le colocó un microcontrolador de gran capacidad para que fuera posible agregar inteligencia local a cada eje. Adicionalmente cuenta con numerosos puertos 56 digitales de entrada/salida y dispositivos periféricos disponibles para ser utilizados en caso de ser necesario. Cada tarjeta controladora de movimiento puede controlar un eje, de esta forma se avanza hacia el diseño de robots humanoides con una arquitectura de control distribuida. El diseño está hecho de forma modular utilizando herramientas de diseño asistido por ordenadores (ORCAD CAPTURE y ORCAD LAYOUT), de manera que si se quisiera agregar más ejes por tarjeta, se podría hacer de forma sencilla. La tarjeta se dividió en cuatro módulos principales: alimentación, control de motores, comunicación Ethernet y procesamiento. El módulo de alimentación está compuesto por dos reguladores de voltaje lineales, uno de 3,3 voltios para el microcontrolador y el controlador Ethernet; y otro de 5 voltios para la lógica digital de los LM629. Además cuenta con un diodo Schottky a la entrada para evitar posibles daños a la tarjeta si se conecta una alimentación con la polaridad invertida, un indicador luminoso de encendido y el conector de alimentación de la tarjeta. El diseño de este módulo está basado en el esquema de alimentación que se utiliza en algunas tarjetas de desarrollo Microchip, como por ejemplo la PICDEM.net 2 Board. Es un diseño muy sencillo y existen alternativas más eficientes y robustas; sin embargo, el objetivo de este prototipo era disponer de una fuente de alimentación económica, fácil de implementar, confiable y estable; en futuras versiones de la tarjeta se buscarán soluciones más eficientes. 57 Figura 6.4. Módulo de Alimentación. Para el control de motores se tiene un módulo compuesto por un LM629 con su reloj a 8 MHz y un conector externo para las señales de entrada del encoder y la salida PWM. PWM Si se desea aumentar el número de ejes por tarjeta, es en este módulo donde se deben incluir tantos t LM629s como ejes adicionales se deseen, todos utilizarían el mismo bus de datos y el mismo reloj. Figura 6.5. Módulo de control de motores. 58 La comunicación Ethernet se logra mediante un módulo que contiene el controlador Ethernet ENC28J60, un circuito de oscilación que le sirve de reloj y un conector RJ45. El conector RJ45 que se utilizó tiene integrados el circuito de aislamiento de la red Ethernet y los dos indicadores luminosos para actividad y conexión con la red, de esta forma se reduce el espacio necesario para este módulo en la tarjeta. Figura 6.6. Módulo Ethernet. Finalmente, el módulo de procesamiento contiene el dsPIC dsPIC33FJ256MC710 33FJ256MC710 con un circuito de oscilación para su reloj, una serie de interruptores para la selección de la dirección de la tarjeta, un interruptor de reinicio (RESET) para el microcontrolador y los conectores que permiten la programación y depuración del código del microcon microcontrolador. trolador. Para el primer prototipo se dejaron todos los terminales libres del microcontrolador al aire, aire pero para 59 versiones definitivas, estos terminales deben mapearse en un conector dee forma que se tenga acceso externo a los puertos de entrada/salida y ddemás periféricos. Figura 6.7. Módulo de procesamiento. A nivel de hardware la tarjeta de control de movimiento Ethernet fue diseñada como una plataforma para el futuro futuro. Si se requieren modificaciones en el diseño, es muy fácil realizarlas ya que su modularidad permite cambiar un uno o varios dispositivos sin que este cambio afecte significativamente el comportamiento de los demás dispositivos de la tarjeta. 60 Figura 6.8. Vista superior de la tarjeta de control de movimiento Ethernet. Las figuras 6.8 y 6.9 muestran una vista superior e inferior (respectivamente) del primer prototipo de la tarjeta de control Ethernet. Con este prototipo se realizaron las pruebas de transmisión y recepción con el stack TCP/IP de microchip y se realizaron ensayos de control de motores por medio de una interfaz Ethernet sencilla. Figura 6.9. Vista inferior de la tarjeta de control de movimiento Ethernet. El primer prototipo de la tarjeta de control de movimiento Ethernet se construyó en 2 capas ya que lo que se quería con él era validar el diseño del hardware y realizar pruebas del software. La versión definitiva se construirá en 6 capas por lo menos, con esto se logrará disminuir el tamaño de la tarjeta significativamente. La tarjeta de control Ethernet en 2 capas ya es mucho más pequeña que sus similares con bus ISA y, aunque el prototipo sólo controla 61 un eje, hay espacio suficiente como para adicionar al menos dos LM629s más en una tarjeta del mismo tamaño. La figura 6.10 muestra una comparación del tamaño de las tres tarjetas de control de movimiento del IAI. La tarjeta de control Ethernet es notablemente más pequeña que las otras 2 gracias al uso de componentes de soldadura superficial y al cambio del bus ISA por el bus Ethernet ya que el tamaño del conector del primero es superior al del segundo. Figura 6.10. Comparación del tamaño de las 3 versiones de la tarjeta de control de movimiento. Tanto el hardware como el software del primer prototipo de la tarjeta de control de movimiento Ethernet fueron validados mediante pruebas de control de motores. Se logró enviar comandos desde un terminal UDP en una PC hasta la tarjeta de control y que esta ejecutara los movimientos que se le programaron, de igual forma se recibieron en el terminal las confirmaciones de movimiento y las respuestas a las peticiones de estado actual que se solicitaron a la tarjeta. 6.5. Esquema del software de la tarjeta de control de movimiento Ethernet Un esquema básico del software de la tarjeta de control de movimiento Ethernet se puede observar en el diagrama de flujo mostrado en la figura 6.11. Aunque el algoritmo es bastante sencillo, su implementación requiere de tiempo y trabajo ya que se debe lograr que el 62 stack TCP/IP proporcionado por Microchip sea compatible con las rutinas de control de movimiento programadas para el LM629 y existen intervalos de tiempo muy delicados para las operaciones de lectura y escritura de datos que deben respetarse. Inicialización de variables Inicio de la comunicación con la PC, resolver la dirección de los LM629 (switch 8 posiciones) Esperar instrucciones de la PC Llega un dato/ instrucción Resolver la dirección del LM629 con el que se quiere comunicar la PC Identificar comando Ejecutar acción SI ¿El LM629 debe dar respuesta? Esperar respuesta Enviar respuesta a PC NO Confirmar fin de ejecución de la instrucción Figura 6.11. Algoritmo del programa principal de la tarjeta Ethernet. 63 En las siguientes figuras se puede apreciar con detalle cómo se realiza la comunicación entre el ordenador y la tarjeta de control de movimiento Ethernet. Figura 6.12. Primera parte del esquema de la interfaz PC/Tarjeta de control de movimiento Ethernet. Figura 6.13. Segunda parte del esquema de la interfaz PC/Tarjeta de control de movimiento Ethernet. 64 En las figuras anteriores se muestra como deben interactuar el software de alto nivel programado en el ordenador de a bordo del robot y el software programado en la tarjeta de control de movimiento Ethernet. Bajo este esquema, se puede controlar la nueva tarjeta de control de movimiento para que trabaje de la misma forma como lo hacen sus predecesoras. Todo el software de la tarjeta de control de movimiento Ethernet fue programado en lenguaje C bajo el entorno de desarrollo MPLAB IDE con la versión estudiantil del compilador C30. 65 CAPITULO 7. PRINCIPALES APORTACIONES, CONCLUSIONES Y LÍNEAS DE INVESTIGACIÓN FUTURAS Este capítulo presenta las principales aportaciones y conclusiones que se derivan del trabajo realizado. Además se proponen un conjunto de líneas de investigación futuras y mejoras al diseño de la tarjeta de control de movimiento Ethernet que se pueden explorar a partir de las aportaciones de este trabajo. 7.1. Principales aportaciones y conclusiones • Se desarrolló una tarjeta de control de movimiento basada en el controlador LM629 con un bus de comunicaciones Ethernet que cumple con los requerimientos de tamaño y consumo impuestos por los investigadores del DCA del IAI. El diseño fue validado mediante un prototipo completamente funcional. • Se implementó exitosamente el stack TCP/IP de Microchip en la tarjeta de control. Esto permite el rápido desarrollo de diferentes protocolos de comunicación o un servidor http con tan solo configurar algunas opciones en el software. El software se encuentra documentado para su fácil comprensión cuando se desee aplicar modificaciones o cambiar configuraciones. • Gracias al bus Ethernet, la nueva tarjeta de control de movimiento permite el control de más ejes de forma simultánea y una mayor frecuencia de refrescamiento que la que se podía obtener con las tarjetas de control de movimiento anteriores. Esto puede ser muy útil para el desarrollo de robots humanoides de nueva generación en los que se requiere tener un control muy fino de numerosas articulaciones al mismo tiempo. • La nueva tarjeta de control de movimiento puede adaptarse fácilmente a una arquitectura centralizada o a una arquitectura distribuida según se requiera. Adicionar más ejes por tarjeta de control es sencillo gracias al diseño modular que se implementó. • Las características del diseño de la nueva tarjeta de control de movimiento la hacen muy versátil y puede ser modificada fácilmente para que incluya esquemas de control diferentes al del LM629 o utilizar sistemas de control mixtos. 66 6.2. Líneas de investigación futuras • Modificar el software de alto nivel desarrollado para las tarjetas de control de movimiento anteriores de forma que pueda ser utilizado con las nuevas. Sólo es necesario implementar el uso de sockets TCP/IP en la librería LM629 y sustituir las llamadas al bus ISA por llamadas al bus Ethernet. No sería necesario realizar cambios en las librerías de niveles superiores a este. • Explorar la opción de instalar un servidor (http, ftp, telnet u otro tipo) en la tarjeta de control Ethernet con una página web que permita la modificación de los parámetros del filtro digital PID, trayectoria, etc. desde un navegador de internet. El microcontrolador de la tarjeta ya tiene programado un servidor http en su software, bastaría con diseñar la página web y almacenarla en la memoria flash del microcontrolador o en una memoria externa y cambiar algunas configuraciones en el programa actual. • Mejorar el módulo de alimentación de la tarjeta de control de movimiento Ethernet, se propone la utilización de una fuente conmutada en lugar de reguladores lineales para disminuir el consumo y mejorar la eficiente energética. • Explorar el uso de nuevos esquemas de control aprovechando las características de control de motor que posee el dsPIC33FJ256MC710. El LM629 puede formar parte de un esquema de control mixto en conjunto con el microcontrolador. • Desarrollo de robots humanoides y otras aplicaciones robóticas basadas en la tarjeta de control de movimiento Ethernet. 67 CAPITULO 8. REFERENCIAS BIBLIOGRÁFICAS 1. Ogata, K. "Ingeniería de control moderna". España : Prentice-Hall, 2003. 2. Johnson, Michael A. y Moradi, Mohammad H. "PID CONTROL: New Identification and Design Methods". Londres : Springer, 2005. 3. Bolton, W. "Mecatrónica". Mexico : Alfaomega, 2006. 4. National Semiconductor. LM628/LM629 Precision Motion Controller Datasheet. 2003. 5. National Instruments. NI Developer Zone - Encoder. [En línea] http://zone.ni.com/devzone/cda/tut/p/id/3321. 6. Bishop, Robert. "MECHATRONICS: An Introduction". Boca Raton, FL : CRC Press, 2006. 7. Hart, Daniel W. "Electrónica de Potencia". España : Prentice-Hall, 2001. 8. Rashid, Muhammad H. "Power Electronics: Circuits, Devices and Applications". New Jersey : Prentice-Hall, 2003. 9. Tanenbaum, Andrew S. "Computer Networks". New Jersey : Prentice-Hall, 2003. 10. "OSI Reference Model - The IS0 Model of Architecture for Open Systems Interconnection". Zimmermann, Hubert. 4, s.l. : IEEE TRANSACTIONS ON COMMUNICATIONS, 1980, Vols. COM-28. 11. Mitzner, Kraig. "Complete PCB Design Using OrCad Capture and Layout". Oxford : Newnes, 2007. 12. Montes Franceschi, Héctor. "Manual de Calibración de la Tarjeta de Control de 4 ejes". Madrid : IAI - CSIC. 13. Caballero George, Rony Javier, y otros. "CONTROL CARD AND POWER CARD HARDWARE MANUAL". Madrid : IAI - CSIC. 14. Axelson, Jan. "USB COMPLETE: Everything You Need to Develop Custom USB Peripherals". s.l. : Lakeview Research, 2001. 15. Anderson, Don. "USB system architecture". s.l. : Addison Wesley, 2001. 16. Axelson, Jan. "Embedded Ethernet & Internet Complete: Designing and Programming Small Devices for Networking". Madison, WI : Lakeview Research LLC, 2003. 17. Eady, Fred. "Networking & Internetworking with Microcontrollers". Oxford : Newnes, 2004. 18. Spurgeon, Charles E. "Ethernet: The Definitive Guide". Sebastopol, CA : O'Reilly, 2000. 19. Amodio, Jorge. LJCV Electronics. "Microchip's Modified TCP/IP stack". [En línea] http://www.ljcv.net/projects/mchptcp3.75/config.html. 68 ANEXOS 69