Bienvenido: Ingresar

Por favor ingresa primero al sistema.

Quitar mensaje
location: LabElectronica / FreeRTOSLpc2114Web

Hardware de Control de Plataforma Robótica Móvil con Arquitectura ARM y RTOS. Caracterización.

Introducción

Actualmente, los Sistemas Operativos en Tiempo Real (RTOS) son cada vez mas utilizados en aplicaciones embebidas, en particular en robótica. Dentro de la gran cantidad existentes, FreeRTOS se destaca por ser un mini kernel de tiempo real específico para microcontroladores (uC) embebidos, totalmente en codigo abierto, libre de regalías, de libre descarga y libre para el desarrollo de aplicaciones comerciales.

Por el otro lado, los microcontroladores con arquitectura ARM de 32 bits, se han desarrollado enormemente en este ultimo tiempo, llevando a los fabricantes a ofrecer sus propios microcontroladores con esta arquitectura. Una de las empresas mas importantes en esta área es NXP Semiconductors, fundada por Philips, la cual puede conseguirse con facilidad en Argentina y a precios convenientes.

Poder unir ambas tecnologías de software y hardware en una aplicación embebida de robótica orientada al área de investigación y desarrollo a nivel académico, hace al proyecto sumamente interesante y con un alto grado de actualidad a nivel internacional.

Aplicación

El CIII ha diseñado y construido una plataforma robótica móvil RoMAA (Robot Móvil de Arquitectura Abierta), orientada a la investigación y el desarrollo. Las áreas de aplicación son robótica, visión, sensorística, control, entre otras, intentando dar como resultado una plataforma versátil para la investigación y el desarrollo a nivel académico, totalmente construida con tecnología disponible en el país.

Actualmente el control de dicha plataforma, esta a cargo de un micrcontrolador !ARM7TDMI-LPC2114 montado sobre una placa multiproposito de código abierto diseñada y construida tambien en el CIII. A través de esta placa se comanda todo el sistema de tracción y control, incluyendo llaves H, motores de corriente continua, encoders y baterías. El actual software de control es del tipo secuencial, en lenguaje ANSI-C, haciendo uso de los perifericos y características que ofrece el uC a través de la placa multiproposito, como timers, UARTs, PWMs, detección de flancos, entre otros. Sin embargo, la modificación del control de dicha plataforma, como así también del hardware vinculado, tiene una cierta complejidad debido a la estructuración secuencial de este código. Esta complejidad afecta a la versatilidad de la plataforma, oponiendose a la finalidad con la que fue concebida.

El proyecto busca migrar este sistema de control con software de tipo secuencial a un RTOS, permitiendo asi mejorar de gran manera la versatilidad del código. A través de simples tareas del sistema operativo, se pueden agregar o modificar actividades de forma totalmente independiente, sin necesidad de interactuar con tareas que no esten relacionadas. Asi, el agregado por ejemplo de una tarea para realizar pruebas con una cámara, implica solo agregar una tarea específica, dejando de lado todo lo demas, por mas de que sea indispensable para el funcionamiento conjunto.

La migración a un RTOS provee además, un sistema de control en tiempo real. A través de las diferentes prioridades establecidas, tiempos de espera y comunicación entre tareas, el scheduler del sistema operativo garantiza que las distintas tareas se ejecuten en lapzos muy precisos, tomando éste el total control del software que se esta ejecut ando en tiempo real.

Por otro lado, el actual sistema de control consta en su parte de hardware, de cuatro placas: dos placas con llave H para cada motor de corriente continua, una placa de alimentación y conexiónado de la multipropósito y la placa multipropósito en si. Estas cuatro placas estan apiladas e interconectadas entre si, con la posibilidad de mediante conectores hembra-macho, conectar y desconectar facilmente la placa multipropósito. Esto es una ventaja para la etapa de desarrollo de la plataforma, ya que se puede probar y testear el software de control en esta placa y luego, una vez testeado y definido, realizar la prueba real en la plataforma.

En la actualidad, dicho software ya fue testeado y corregido, por lo que no hay necesidad de mantener este diseño desmontable. Por otro lado, al ser una placa multiproposito, se tiene acceso a todos los pins del micrcontrolador, sin ser necesaria la utilización de todos ellos en la aplicación final, por lo que la complejidad de la placa ya no es necesaria. Es decir, que la placa de alimentación y conexionado de la multipropósito puede unificarse con la placa multipropósito misma, obteniendo menor complejidad de placa al usar solo los pines necesarios. Por otro lado, aparte de obtener una placa menos, se optimizará y mejorará su funcionamiento dotándola de una fuente conmutada para regular la tensión proveniente de las baterías de la plataforma y de un adaptador RS232-USB, pudiendo directamente acceder a la programación y/o comunicación con el uC a través de un bus USB.

Por último, la caracterización del RTOS en el hardware específico es también parte del proyecto, dándole a la plataforma características mas precisas de su funcionamiento, tanto de sus prestaciones como de sus limitaciones. De esta manera, antes de realizar cualquier aplicación en la plataforma, se podrá evaluar su correcto funcionamiento, ahorrando esfuerzos y permitiendo un trabajo mucho mas preciso y eficiente.

Esquema del proyecto

Placa de Control

(Ver Documentación para acceder a los esquemáticos y PCB)

Versiones anteriores

Nuevo diseño

La utilización del microcontrolador ya montado sobre la placa única de control, le da al sistema mayor robustez, evitando los contactos móviles, posibles inducciones de ruido, etc. El cambio del tipo de conectividad que la placa madre brinda con la CPU externa, también es un cambio importante, ya que mientras el protocolo sigue siendo RS-232 estándar, la conexión es mediante USB, presente en todas las CPU actuales.

En vez de poseer acceso a todos los pines del microcontrolador generando un uso intensivo e innecesario del espacio para una aplicación definitiva como es ésta, se realizó el diseño solo con los pines necesarios, teniendo en cuenta algunas variaciones, como por ejemplo algunos puertos accesibles para un posible debugg. La alimentación de los circuitos digitales, se llevo a cabo ahora mediante fuentes conmutadas, evitando el uso de reguladores lineales directamente conectados a la batería, con el ahorro de energía y aumento de eficiencia de la aplicación móvil que ello implica.

Los conectores de los encoders fueron reemplazados por conectores RJ-11, los que proveen una mayor robustez y facilidad de conexión/desconexión. Las conexiones desde la batería y hacia las llaves H, fueron también cambiadas por conectores mas robustos. Se agregó un conector tipo panel, para la conexión con un panel exterior, que brinda acceso a ciertos puertos del microcontrolador desde el exterior, haciendo mas práctico su uso.

Todo el control del RoMAA cuenta de tres placas:

Estas tres placas están ubicadas una encima de otra, dentro de una caja cerrada de medidas acotadas ubicada en la base del RoMAA, junto a los motores y la batería. Por lo tanto, el diseño las dimensiones de la placa madre de control es un requisito importante que fue tenido en cuenta en todo el desarrollo.

Microcontrolador LPC2114

El microcontrolador LPC2114 de la empresa NXP, está basado en el núcleo ARM7TDMI-S de 32-bits. Además de la frecuencia de trabajo (hasta 60MHz) y la cantidad de periféricos con los que cuenta, se destaca la posibilidad de programarlo in circuit". Otro factor determinante para su elección es su relación costo/performance, dado que tanto el costo del IC en si mismo, como de los componentes que le dan soporte, tienen un valor relativamente bajo y son fáciles de conseguir en el mercado local. También cabe destacar que dentro de esta gama media-alta para microcontroladores el encapsulado LQFP64 de este componente puede soldarse con mayor facilidad que otras opciones que se encuentran actualmente en el mercado (QFN, BGA).

LEDs y GPIO multipropósitos

A pesar de que es una aplicación definitiva y no todos los pines del microcontrolador fueron ruteados en el PCB, se consideró necesario y útil a futuro, poseer algunas formas de debug. Para ello, se diseño el acceso a cuatro entradas/salidas digitales GPIO mediante pines montados sobre el PCB, aptos para conectar un osciloscopio u conector hembra. Como se dijo, estas GPIO no tienen un fin específico, por lo que pueden ser usados como entrada/salida para la aplicación que este corriendo en el microcontrolador. A su vez, se realizó el conexionado de cuatro LEDs de montaje superficial a otras cuatro GPIO, con el mismo fin. Dichos LEDs activos por bajo, ofrecen una herramienta visual para el debug de control de la aplicación. Cabe aclarar, que tanto los conectores de GPIO como los LEDs, están ubicados en la placa madre, siendo inaccesibles desde el exterior del gabinete de control. Por lo tanto, son útiles solo para el control de la aplicación en proceso de desarrollo y no para la aplicación final.

Conversor USB-RS232

Como es un requisito utilizar protocolos estándar, originalmente la comunicación con la PC se hacía a través de la UART del microcontrolador LPC2114 por RS232. En este desarrollo se ha interpuesto un conversor RS232-USB, teniendo en cuenta que la mayoría de las computadoras portátiles que se encuentran hoy en el mercado no disponen de puerto serie. Debido a la disponibilidad en el mercado local, su bajo precio, tamaño y demostrado buen funcionamiento, se utilizó el chip CP2102\cite{CP2102}, de la compañía Silicon Labs.

La comunicación del CP2102 con el microcontrolador LPC2114, se realiza mediante la UART0 de éste. El LPC2114 posee dos UARTs, donde solamente la UART1 brinda todas las señales de handshaking. Este microcontrolador puede programarse de dos maneras: en forma serial a través de la UART0 o mediante el conector para debug JTAG. Debido a que la placa madre desarrollada fue pensada como producto final, la utilización de JTAG era innecesaria, quedando disponible solo una forma de programar al microcontrolador. Por estos motivos, es que se eligió a la UART0 para conectarse al conversor CP2102, usándose por lo tanto esta UART, tanto para la programación como para la comunicación normal del flujo del software de aplicación. La UART1 queda inhabilitada.

Fuentes conmutadas

Para la presente aplicación en concreto se necesitaba obtener 5 y 12V a partir de una batería de 24V. Dada la escala de producción y la potencia requerida el factor costo se pudo dejar de lado; sin embargo, el factor eficiencia era clave. Por ello se eligió utilizar un circuito integrado (en concreto el MC34063 en modo buck) que posee todas las funciones básicas para implementar un conversor DC-DC, con el que se consigue un tamaño y eficiencia aceptable.

Conectores

A continuación se provee un resumen de los conectores mas importantes y sus modificaciones respecto a las versiones anteriores de la placa de control. Para mayor información, ver informe completo en Documentación.

Para la comunicación, se utiliza un conector USB hembra tipo B. Debido a que el conversor USB-Serie funciona con el protocolo USB 2.0 (12Mbps), el cable utilizado debe soportar esta alta taza de transferencia. Es recomendable que posea también un filtro inductivo alrededor de los conductores en la cercanía del conector tipo B macho. Estas características, brindan seguridad y confiabilidad a la interfase CPU-Placa madre.

La conexión con ambos encoders, también necesita de un tipo flexible y robusto a la vez. Luego de analizar y experimentar con varias alternativas, se decidió la utilización del tipo RJ-11.

La parte de baja tensión o control de las llaves H, se interconectan con la placa madre de control mediante dos conectores de cuatro terminales. A través de ellos se provee de los PWM proveniente del microcontrolador y de los 12V de alimentación desde la fuente conmutada de dicho voltaje. La alimentación a través del conector provee también una forma de aislación de la alimentación de baja potencia con la de alta potencia de las llaves H.

Mediante este conector y el panel externo, se pueden acceder a los puertos de Reset y Bootloader del microcontrolador, necesarios para la grabación de nuevos softwares en el mismo. También se brinda acceso a un número limitados de puertos del microcontrolador para ser utilizados como señalización de un correcto funcionamiento del software, agregándole versatilidad y aislamiento a la caja de control donde se ubican las tras placas en conjunto.

FreeRTOS

Características generales

El sistema operativo de tiempo real elegido es el FreeRTOS [2] por poseer las siguientes características:

Ha sido portado a 25 arquitecturas de hardware desde pequeños microcontroladores de 8 bit a procesadores completos de 32 bit, incluyendo ARM7, ARM9, Cortex M3, MSP430, AVR, PIC and 8051. Su versatilidad en el port se debe a varios factores. Primero, el código base del FreeRTOS es pequeño. Esta compuesto por un total de tres archivos para el núcleo y un archivo adicional para el port necesitado por el mismo kernel. Segundo, FreeRTOS esta en su mayoría escrito en C estándar. Solo unas pocas líneas de código ensamblador son necesarias para adaptarlo a una plataforma en particular. Finalmente, FreeRTOS posee una extensa documentación en el código fuente como así también en el sitio web oficial \cite{FreeRTOS} con benchmark a nivel de aplicación. FreeRTOS es de código abierto. Esta licenciado bajo GPL modificado y puede ser usado en aplicaciones comerciales bajo esta licencia. El código del FreeRTOS esta disponible de manera gratuita en su sitio web, lo que hace al kernel fácil de estudiar y entender.

Portación al ARM7TDMI-LPC2114

Se utilizaron los pasos propuestos en la documentación oficial del sitio web de FreeRTOS. Para mayor información, ver en Documentación y el informe completo.

Aplicación

Todo el firmware para el RoMAA-II fue desarrollado con herramientas libres. Como editor de texto no se utilizó entorno gráfico alguno, solamente el editor Vim. Como toolchain de compilación, se utilizó CodeSourcery G++. Para grabar el microcontrolador se utilizó lpc21isp y por último como herramienta de debug se utilizó insight con la interfaz JTAG. Para mas información referirse a Documentación.

Utilización de librería CiiiEmbLibs

División en tareas

Documentación

Microcontrolador ARM7TDMI-LPC2114

Conversor USB-RS232

Fuentes conmutadas

Informe completo [1]

FreeRTOS

Aplicación

PCB

Referencias

[1].- "Hardware de Control de Plataforma Robótica Móvil con Arquitectura ARM7 y RTOS embebido. Caracterización". Tesis de grado para obtener el título de Ing. en electrónica de Santiago Pérez y Martín Baudino.

[2].- "The FreeRTOS Project". Web site: http://www.freertos.org/