Universidad Nacional de Colombia. Avella, Camargo. Introducción a Lego Mindstorms.
Práctica 1: Introducción a la Plataforma Lego Mindstorms. Avella Jorge, Camargo Omar. {jaavellao, ogcamargov}@unal.edu.co.
Resumen: El presente informe consta de dos secciones, introducción al software e introducción al hardware de la tecnología Lego MIndstorms . Se desarrolla la familiarización con el uso de la plataforma robótica con el fin de emplearla como recurso básico para la implementación de diversos algoritmos de control. Como primera medida, se reconocerá el hardware o brick NXT junto con los respectivos sensores y actuadores dispuestos por el fabricante, seguido del reconocimiento del software requerido para su programación NXC ). ( NXC ).
Té r m i n os clav cl ave- e- brick brick NXT, software NXC, Control, sensores.
I.
INTRODUCCIÓN.
Lego Mindstorms es un kit de robótica creado por la empresa Lego, que posee elementos básicos de las teorías robóticas como la unión de piezas y la programación de acciones de forma interactiva. La unidad fundamental de éste juego es el Brick, o bloque, que para el caso particular del d el desarrollo desarr ollo de éste curso es el brick NXT. Asímismo, cuenta con un software mediante el cual se programan las instrucciones, tal software es NXC (Not Exactly C). La familiarización tanto con el brick, como con el software, son el fin de la realización de ésta práctica.
III.
1. Características de los elementos que componen el brick.
Los principales componentes del brick(ver Fig.1) son el microcontrolador, los puertos I/O (entrada/salida) y el bloque de comunicaciones.
OBJETIVOS.
Reconocer las características básicas del componente de hardware de la plataforma Lego mindstorms (Brick NXT). Reconocer y comprender la estructura básica del lenguaje NXC para el desarrollo de instrucciones ejecutables por el brick.
INTRODUCCIÓN AL HARDWARE.
En ésta primera parte de la práctica, se describen las características básicas del brick NXT de Lego.
II.
Familiarizarse con los diferentes sensores y actuadores que pueden ser conectados al brick, así como los comandos en NXC necesarios para su funcionamiento.
Microcontrolador ARM 7 de 32 bits, 256 Kb de memoria flash, 64 Kb de memoria RAM, velocidad de procesamiento de 48 MHz El bloque de entradas y salidas del brick cuenta con cuatro entradas para conectar los sensores y con tres salidas para la conexión de actuadores como los motores. El bloque de comunicaciones permite una comunicación con el computador por medio de una conexión USB 2.0, además de contar con Bluetooth para la comunicación con dispositivos cercanos al brick. El brick posee una pantalla grafica de 100×64 pixeles además de un sistema de sonido de 8 bits de resolución y que soporta una frecuencia de muestreo de hasta 16 KHz. Cuenta con un coprocesador, el cual se comunica con el procesador principal mediante I2C a 380
Universidad Nacional de Colombia. Avella, Camargo. Introducción a Lego Mindstorms.
kbytes/s. La comunicación se realiza mediante la actualización de 2 registros de memoria cada 2ms.
Fig.1 Brick.
2. Limitaciones en alimentación y velocidad de comunicación de los puertos de entrada y salida del Brick.
La alimentación se realiza mediante 6 baterías AA , sin embargo el fabricante ofrece una batería recargable , como una opción más eficiente .La comunicación se lleva a cabo mediante 8 puertos de entrada/salida que se unen mediante conectores muy similares a los de tipo telefónico. Tienen 6 hilos pero tienen la ranura a la derecha en vez de en el medio como el del teléfono.
También consta de un puerto USB de gran velocidad que se encuentra al lado de los puertos de salida, es el primero de la parte superior derecha. La gestión de las entradas y salidas es llevada a cabo por un procesador AVR, sus funciones más importantes son el control de la alimentación, la creación de las señales de salida PWM para los motores y la conversión A/D de las señales de entrada de los sensores. Se conecta con el microprocesador ARM7 a través de un bus I2C. A causa de las limitaciones del ARM7, esto solo funciona como maestro en la comunicación por el I2C. 3. Investigar sobre las características de los siguientes sensores: ultrasonido, EOPD, color, giroscopio, acelerómetro, sensor de contacto (Touch), brújula magnética (Compas).
El sensor de ultrasonido es un sensor que sirve para detectar distancias de 0 a 255 cm +/- 3cm. Funciona enviando una señal de ultrasonido y detectando el rebote, de esta manera mide a qué distancia se encuentra del objeto deseado.
Los puertos de salida son el A, el B y el C ,son señales de salida para controlar a los actuadores. El pin 3 es masa y el pin 4 es Vcc que está conectado internamente a todos los Vcc de todos los puertos tanto de entrada como de salida. Los puertos de entrada son el 1, el 2, el 3 y el 4 y son para los sensores. El pin 1, ANA es un pin analógico conectado a un convertidor analógico/digital del procesador AVR y también a un generador de corriente para alimentar al sistema sensorial. Los pines 5 y 6, DIGIAI0 y DIGIAI1, son pines digitales de entrada/salida usados para la comunicación digital con el ARM-7 mediante un bus I2C a una velocidad de 9600 baudios. El puerto 4 puede funcionar como un puerto de alta velocidad. Un RS485 esta implementado en el interior el puerto. Esto permite una comunicación bidireccional de alta velocidad.
Fig.2 Sensor Ultrasonido.
El sensor electro óptico de detección de proximidad (EOPD) detecta con precisión milimétrica objetos y pequeños cambios en la distancia. Este sensor hace uso de una fuente de luz interna para detectar la presencia de un objetivo o determinar cambios en la distancia al mismo.
Universidad Nacional de Colombia. Avella, Camargo. Introducción a Lego Mindstorms.
aceleración en los 3 ejes, x, y y z. La aceleración se mide en el rango de – 2g a +2g con una resolución de aproximadamente 200 unidades por g.
Fig.3 Sensor EOPD
El sensor de color es capaz de detectar colores y también intensidades intermedias en una habitación. El sensor también actúa como lámpara y puede emitir color rojo, verde y azul.
Fig.6 Sensor de Aceleración.
El sensor de contacto permite detectar si el bloque que lo posee ha colisionado o no con algún objeto que se encuentre en su trayectoria inmediata. Al tocar una superficie, una pequeña cabeza externa se contrae, permitiendo que una pieza dentro del bloque cierre un circuito eléctrico comience a circular energía, provocando una variación de energía de 0 a 5 V.
Fig.4 Sensor de Color.
El sensor Giroscópico NXT contiene un sensor giroscópico de un eje que detecta la rotación y devuelve un valor que representa el número de grados por segundo de rotación. La velocidad de rotación puede ser leída hasta unas 300 veces por segundo y mide +/- 360° por segundo.
Fig.5 Sensor de Gyro.
El sensor de Aceleración LEGO MINDSTORMS NXT contiene un acelerómetro de 3 ejes que mide la
Fig.7 Sensor de Contacto.
La brújula magnética permite al robot saber hacia dónde está apuntando. Este sensor es capaz de medir el campo magnético terrestre y calcular donde está el norte magnético. Se visualiza la lectura en grados 0° a 359°.
Universidad Nacional de Colombia. Avella, Camargo. Introducción a Lego Mindstorms.
-Void (void[nombre de la función])
Son funciones que no retornan ningún valor. 2. Tipos de Variable:
Fig.8 Sensor Brujula Magnética.
IV.
INTRODUCCIÓN AL SOFTWARE.
1. Estructuras de lenguaje NXC.
programación
bajo
Existen dos tipos de bloques de programación: tareas (tasks) y funciones. Las tareas son segmentos de código en el que siempre hay una tarea llamada main (task main()) ,esta es la primera que se ejecuta y estructura principalmente el programa.
Las funciones son subrutinas que retornan o no alguna variable, además las funciones se pueden definir como: -Safecall (safecall[tipo de variable que se va a retornar][nombre de la función]) Consiste en un una función la cual el compilador evitará que en caso de varios llamados a la misma función en breves periodos de tiempo, esta se ejecute varias veces al mismo tiempo, haciendo que cada uno de los llamados a dicha función se ejecuten después de haber realizado el llamado previo a dicha función. -Inline(inline[tipo
de
variable a retornar][nombre de la función]) Se caracteriza porque cada vez que se hace un llamado se genera una copia del código de dicha función, la desventaja es que el código puede resultar muy extenso.
byte
tipo de 8 bits en la que se pueden guardar valores desde 0 hasta 255. char variable de tipo carácter (ASCII) en la que se pueden guardar valores desde -127 a 128. array vectores o matrices de una tipo de variable específico. int para
datos de tipo entero, de 16 bits con un rango desde -32768 hasta 32767. bool tipo booleano de 8 bits, además de poder guardar valores lógicos en este tipo de variable (TRUE, FALSE),se pueden guardar valore desde 0 a 255. short tipo alias de la variable int también de 16 bits. long para variables en las que necesiten guardar datos hasta de 32 bits, con un rango de -2147483648 hasta 2147483647. unsigned para definir versiones son signo de los tipos char,int y long. float de 32 bits en el que 24 bits son destinados para la precisión de dígitos decimales. string cadena de caracteres. structures es un tipo de variable en que su vez sus atributos tienen diferentes tipos de variables.
3. Implementación algoritmo de velocidad
Conociendo las estructuras básicas de programación se procede a la implementación de un algoritmo para
Universidad Nacional de Colombia. Avella, Camargo. Introducción a Lego Mindstorms.
control de velocidad en el servomotor de Lego, siguiendo un patrón diente de sierra (ver fig.9).
Fig.9 Señal Diente de Sierra.
Algoritmo de control de velocidad:
4. CONCLUSIONES.
Mediante el uso de la plataforma Lego mindstorms se obtuvieron conocimientos y habilidades en cuanto a la arquitectura electrónica y programación de NXC , para futuras aplicaciones de control , mediante el uso de sensores , actuadores y algoritmos de programación.
1. REFERENCIAS.
[1]
Lego
Mindstorms,
Wikipedia.
http://es.wikipedia.org/wiki/Lego_Mindstorms
[2] The Unofficial Guide to LEGO® MINDSTORMSTM Robots, Jonathan B. Knudsen . [3]
ELABORACIÓN DE GUÍA LABORATORIO ORIENTADA A LA [4] [Online]. sensors-2.html
Available:
PRÁCTICA
DE
http://legoengineering.com/nxt-
ENSEÑANZA DE LA ROBÓTICA, Gonzales A, Pedro;
Ospina D. Juan. Universidad tecnológica de Pereira.