diseño de nuevos controladores para los robots humanoides de

Anuncio
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
Descargar