Está en la página 1de 5

Informe 1: Introduccin Al Lego Mindstorms NXT

Informe 1: Introduccin al Lego Mindstorms NXT (Agosto 2012)


Castillo A. Syndy, Mesias B. Nina, and Torres P. Wilson. {sfcastilloa,namesiasb,wctorresp}@unal.edu.co
ResumenEl contenido corresponde al primer informe del laboratorio de Control, que consisti en realizar un acercamiento a la unidad Lego Mindstorms, para conocer de manera general su hardware y emplear su software (Bricx Command Center con lenguaje NXC) en ejercicios sencillos que dan una idea de la variedad de opciones que brinda el equipo. Palabras claveBrick, Bricx command center, Lego, Lenguaje NXT, sensores

I. INTRODUCCIN

una velocidad de 48 MHz, dicha unidad a diferencia del bloque RCX (versin anterior presentada por Lego), posee mayores capacidades de ejecucin de programas, evitando que los procesos inherentes de varios paquetes de datos colisionen y produzcan errores y un posible error en la ejecucin del software. Por su parte el co-procesador del Brick consiste en un microcontrolador AVR de 8 bits, posee 4 Kbytes de FLASH, 256 Bytes de EEPROM y 512 Bytes de RAM con un rendimiento de hasta 20 MIPS (millones de instrucciones por segundo) a 20 MHz. [1] Comunicacin entre el procesador y coprocesador: Se hace mediante el bus I2C (Inter- Integrated Circuits), un estndar que facilita la comunicacin entre microcontroladores, memorias y otros dispositivos con cierto nivel de "inteligencia", slo requiere de dos lneas de seal y un comn o masa. Fue diseado a este efecto por Philips y permite el intercambio de informacin entre muchos dispositivos a una velocidad aceptable, de unos 100 Kbits por segundo, aunque hay casos especiales en los que el reloj llega hasta los 3,4 MHz. La metodologa de comunicacin de datos del bus I2C es en serie y sincrnica. Una de las seales del bus marca el tiempo (pulsos de reloj) y la otra se utiliza para intercambiar datos, se conocen como SCL (System Clock) y SDA (System Data) respectivamente. EL bus I2C funciona con la lgica maestro-esclavo, en la cual el dispositivo maestro enva la seal de sincronizacin, cuando ste quiere comunicarse con un esclavo, produce una secuencia de inicio en el bus. Los datos se transfieren en secuencias de 8 bits. Estos bits se colocan en la lnea SDA comenzando por el bit de ms peso (o ms significativo). Una vez puesto un bit en SDA, se lleva la lnea SCL a alto. Por cada 8 bits que se transfieren, el dispositivo que recibe el dato enva de regreso un bit de reconocimiento, de modo que en realidad por cada byte de dato se producen 9 pulsos de reloj. Si el dispositivo que recibe enva un bit de reconocimiento bajo, indica que ha recibido el dato y que est listo para aceptar otro byte. Si retorna un alto, lo que indica es que no puede recibir ms datos y el dispositivo maestro debera terminar la transferencia enviando una secuencia de parada. [2]

l equipo Lego Mindstorms NXT, es una herramienta pedaggica desarrollada por Lego basndose en estudios realizados en el MIT, con el cual realiz una alianza para construir una primera versin que posea el bloque RCX, versin previa del actual NXT que permite acercarse a la lgica del control, en la que se relacionan entradas y salidas mediante algoritmos construidos en el lenguaje NXC (Not exactly C) mediante el programa Brick command center que se administra desde un computador.. La plataforma Lego NXT consta de una unidad de procesamiento (Brick), sensores de distintos tipos y actuadores del tipo servomotores. Juntos se conjugan para realizar las tareas que se disponga en el programa que se construya en el software indicado, programa que se descarga mediante conexin usb desde un computador hacia el Brick, el cual lo almacena y permite su ejecucin. Como descripcin general se puede indicar que el Brick posee 4 puertos de entrada (marcados como 1, 2, 3 y 4), 3 puertos de salida (A, B y C), una conexin USB, as como bluetooth y parlante incorporados. .

II. INTRODUCCIN AL HARDWARE A. Caractersticas Tcnicas de la Unidad Bsica de Procesamiento La unidad de procesamiento o Brick posee un procesador con un microcontrolador ARM7 de 32 bits, el cual posee 256 Kbytes de memoria FLASH, 64 Kbytes de RAM y trabaja a

Informe 1: Introduccin Al Lego Mindstorms NXT

2 Las entradas constan de seis contactos que permiten seales analgicas y digitales. La identificacin y distribucin de los pines se muestran en la Figura 1. El pin 1 corresponde a una entrada analgica que est conectada a un convertidor anlogo digital (A/D) de 10 bits, este toma una seal de muestreo cada 333Hz. Los pines 2 y 3 sirven como seales de referencia. El pin 4 es un fuente de 4.3 voltios que suministra un mximo de corriente de 180mA, es decir 20mA para cada puerto; si este es cortocircuitado con la seal de referencia, el bloque se reprogramara. Los pines 5 y 6 son seales digitales que se comunican por I2C a una velocidad de 9600 bit/s, estos puertos solo permiten que los elementos externos tengan resistores Pull-up en los pines de comunicacin.

Comunicacin entre el Procesador, el Display y el Bluetooth : Se hace mediante el bus SPI (Serial Peripherical Interface) es un bus de tres lneas, sobre el cual se transmiten paquetes de informacin de 8 bits. Cada una de estas tres lneas porta la informacin entre los diferentes dispositivos conectados al bus. Cada dispositivo conectado al bus puede actuar como transmisor y receptor al mismo tiempo, por lo que este tipo de comunicacin serial es full duplex. Dos de estas lneas trasfieren los datos (una en cada direccin) y la tercer lnea es la del reloj. Los dispositivos conectados al bus son definidos como maestros y esclavos. Un maestro es aquel que inicia la transferencia de informacin sobre el bus y genera las seales de reloj y control. Todas las lneas del bus transmiten la informacin sobre una sola direccin, las lneas son: La seal sobre la lnea de reloj (SCLK) que es generada por el maestro y sincroniza la transferencia de datos. La lnea MOSI (Master Out Slave In) que transporta los datos del maestro hacia el esclavo. La lnea MISO (Master In Slave Out) transporta los datos del esclavo hacia el maestro. Los datos sobre este bus pueden ser transmitidos a una razn de casi cero bits por segundo hasta 1 Mbits por segundo. Los datos son transferidos en bloques de 8 bits, en donde el bit ms significativo (MSB) se transmite primero. En un tiempo determinado solo podr existir un maestro sobre el bus. Cualquier dispositivo esclavo que no est seleccionado, debe deshabilitarse (ponerlo en alta impedancia), el bus SPI emplea un simple registro de desplazamiento para transmitir la informacin. La transferencia de los datos es sincronizada por la lnea de reloj de este bus para que un BIT sea transferido por cada ciclo de reloj. [3] Comunicacin entre el procesador y el Bluetooth: Se hacen mediante el bus UART. El protocolo UART (Universal Asynchronous Receiver Transmitter) es usado desde hace mucho tiempo, tanto para recibir como para transmitir datos de forma serie es decir bit por bit. Se dice que es un protocolo Asncrono ya que no lleva seal de sincronismo, por lo que debe ser implementado en el funcionamiento del dispositivo, configurando el transmisor y el receptor para que trabajen a una misma velocidad. Las velocidades tpicas son 300, 600, 1200, 4800, 9600, 19200, 38400, 57600, 115200 bps. Los datos se envan por una sola lnea por lo tanto se necesita un bit de inicio y un bit de parada; en una UART la lnea estar en alto cuando no se est transmitiendo por lo tanto el bit de inicio ser 0 y el bit de parada ser un 1. [4] B. Puertos de Entrada y Salida del Brick Las Entradas del Brick se encuentran identificadas por nmeros del 1 al 4, sus salidas se identifican con las letras A, B y C.

Fig. 1. Pines de los Puertos de entrada

A las entradas se pueden conectar sensores activos, pasivos o digitales, para ello este equipo tiene predeterminadas las siguientes entradas: Puerta 1: Sensor de tacto Puerta 2: Sensor de sonido Puerta 3: Sensor de luz Puerta 4: Sensor de ultrasonido

Fig. 2. Pines de los Puertos de salida

En el caso de las tres salidas se cuenta tambin con seis contactos soportados por una plataforma digital para permitir a las salidas regresar informacin al bloque. En la figura 2 se puede apreciar la distribucin de los pines en los puertos de salida. Los pines 1 y 2 corresponden a una seal PWM que permite controlar a los actuadores, esta seal es controlada por un motor que le suministra 700 mA con un pico de 1A que adems tiene una proteccin trmica que permite ajustar automticamente la corriente de salida si se llega a presentar mucha potencia. El pin 3 corresponde a la seal de referencia.

Informe 1: Introduccin Al Lego Mindstorms NXT El pin 4 corresponde a una funte de 4.3 voltios que suministra una corriente de 180 mA es decir 20 mA a cada puerto, si se llega a presentar un potencia mayor la corriente disminuye sin avisar. Los pines 5 y 6 son puertos de entrada que estn conectados a un un interruptor Schmitt, esto da como resultada una seal de cuadratura en el sistema que permite detectar en qu sentido es el movimiento del motor. [5] Al igual que las entradas, estas salidas tienen asociadas los siguientes elementos: Puerta A: Motor para funcin externa Puerta B: Motor Izquierdo Puerta C: Motor Derecho C. Sensores Del Lego Mindstorms: Los sensores utilizan protocolos de comunicacin I2C y estn diseados para conectarse a los puertos de entrada, aquellos que no poseen estas caractersticas tiene asociados cables que permiten realizar su adaptacin. Sensor de Ultrasonido Es un sensor de tipo digital, que trabaja con el principio de los murcilagos, es decir que emite un sonido y espera su retorno para determinar a qu distancia se encuentra. Para calcular la distancia a la cual se encuentra el objeto es necesario que ste se encuentre a una distancia menor a 255 cm, sin embargo si el objeto es curvo puede existir la posibilidad de no ser detectado. El error de medida se encuentre en +/- 3 cm. Sensor EOPD La sigla corresponde a sensor Electro ptico de Detencin de Proximidad. Este sensor trabaja con una fuente de luz que emana de su interior, para realizar la identificacin de la proximidad de los objetos distingue entre la diferencia de luz, es decir entre la sombra y la luz que rodea la sombra del objeto. Puede realizar esto en un rango de 20 cm, dependiendo de las caractersticas del objeto. Sensor de color Es un sensor que permite distinguir entre diferentes colores realizando un lectura que devuelve al programa un nmero entre 0 y 17, este nmero est asociado a diferentes colores y se refresca 100 veces por segundo. Para hacer la lectura el sensor emite tres luces de color diferentes con LEDs, toma la lectura de la intensidad reflejada y genera el nmero de color, debe estar ubicado a 20 mm de la superficie. Sesor Giroscopio Es un sensor de tipo activo, que permite determinar la velocidad de rotacin del motor, esto se hace para permitir movimiento de balanceo. La lectura permite medir 360 grados por segundo y lo hace 300 veces por segundo. Su posicin inicial trabaja con el eje vertical. Sensor Acelermetro Es un sensor que puede medir la aceleracin en los tres ejes (x, y, z) en un rango de -2g a 2g con una resolucin de 200 unidades por g. La lectura de esta informacin se hace 100

3 veces por segundo. Tambin realiza mediciones de inclinacin en los tres ejes. Al tomar los datos devuelve una medicin al sistema de un nmero entre 0 y 254. Sensor de Contacto Es un sensor de tipo pasivo, que permite detectar presiones sobre el pulsador, este se activa al chocar con algo, enviando una seal de 0 a 5 voltios. Se dice que el sensor esta presionado al llegar a un valor de 450. Sensor de Compas Este sensor contiene una brjula magntica que lee el campo magntico de la tierra y de este modo calcula un ngulo de partida el cual tiene una precisin de 1 grado. LA lectura de los datos se realiza 100 veces por segundo

III. INTRODUCCIN AL SOFTWARE A. Lenguaje NXC En Brick Commman Center El lenguaje NXC (Not Exactly C) permite establecer comunicacin con el Brick del Lego mediante el entorno de programacin Bricx Command Center. Este entorno posee los comandos necesarios para definir los sensores y los actuadores, por lo cual slo se necesita construir el algoritmo deseado. Tal y como sucede en C, se requiere de un archivo principal para que el Lego ejecute las tareas (se define como task main), en l se deben declarar las variables, con los tipos disponibles en el programa: Int, long, short, unsigned int, unsigned long, bool, char, byte, string, float, mutex (En NXC el tipo mutex es un valor de 32-bits que se utiliza para sincronizar el acceso a los recursos y compartirlo entre varios subprocesos.) El programa permite declarar funciones y tareas, as como contar con plantillas (templates) que facilitan el diseo de los algoritmos. Adems de las estructuras de condicionales y ciclos comunes en el lenguaje C (if, while, for, etc.), el Brick command center permite el acceso a libreras preestablecidas algunas de ellas con funciones como: Definir las salidas y sus acciones: OUTPUTS Establecer acciones ligadas al tiempo: TIMING Definir tareas y comunicacin con los sensores: SENSORS Definir los modos, tipos y caractersticas varias de los sensores (respectivamente): SENSOR TYPES, SENSOR MODES, SENSOR MISC Tareas varias: MULTITASK Acceder al display del Brick: DRAWING Acciones relacionadas con el parlante: SOUNDS Definir operaciones matemticas: MATH En la plataforma Brick Command center el programa debe ser compilado, para que el software compruebe si su sintaxis y el uso de las variables es correcto, posteriormente debe descargarse al Brick para finalmente ser ejecutado, desde el

Informe 1: Introduccin Al Lego Mindstorms NXT Brick mismo o desde el computador. El Brick command center genera 3 tipos de archivo para cada programa: .nxc (El que se lee desde el Brick command center) .back .sym (El que ejecuta el Brick, una traduccin enre niveles de lenguaje). Como se ver ms adelante en los cdigos que se construyeron y probaron en el laboratorio, en general en los algoritmos deben indicarse los puertos que se van a emplear tanto para las entradas (IN_1, IN_2, IN_3, IN_4) como para las salidas (OUT_A, OUT_B, OUT_C), y tambin instrucciones temporales que garanticen la ejecucin de las tareas y la visualizacin de las mismas de ser necesario. Es muy importante al iniciar el software indicar el tipo de conexin que se establecer con el Brick (el usado en los ejemplos fue USB), para descargar el programa cuando se haya compilado correctamente, tambin se debe seleccionar el tipo de Lego que para nuestro caso es NXT.

4 Las primeras lneas de cdigo imprimen en la pantalla del Brick los nombres de los integrantes del grupo y sus respectivos cdigos, luego se declara un variable de tipo entero llamada pos que ser la encargada de guardar la ltima posicin leda por el sensor de posicin del servomotor. El ciclo for se encarga de realizar 5 repeticiones las que generan cinco dientes de sierra. Dentro del for hay dos ciclos while el primero hace que al motor se le suministre el 15% de la corriente mxima hacindolo girar hacia adelante 270, cuando supera esta posicin empieza a ejecutarse el segundo while el cual produce un retroceso del motor hasta la posicin de 0 sin embargo este cicle no se rompe cuando la posicin es 0 sino cuando es 23devido a la inercia que lleva el motor se tuvo que modificar ese valor, el cual se obtuvo de manera experimental, fruto de la observacin en el laboratorio. Finalmente despus de ejecutar los cinco dientes de sierra se hace girar el motor hacia adelante un instante pequeo de tiempo debido a la inercia, as se garantiza que termine en la posicin inicial. C. Programa Para Controlar La Velocidad Del Servomotor l cdigo necesario para que la velocidad del servomotor responda a un patrn diente de sierra se muestra a continuacin: task main() { TextOut(1, 1, "Camilo Torres 261592"); TextOut(2, 2, "Nina Mesias 285644"); TextOut(3, 3, "Syndy Castillo 22781" ); int vel; repeat(30){ for (vel=0;vel<90;vel++) { OnFwd(OUT_B, vel); Wait(50); } Off(OUT_B); Wait(50); } } Las primeras tres lneas de cdigo son iguales a las de la implementacin anterior por lo tanto no se explicaran. Primero se declara una variable tipo entero llamada vel esta variable corresponde al porcentaje de corriente que se le suministrara al motor para que este gire, dicha variable se har aumentar de 0 a 90 cada 50 ms dentro de un ciclo for, despus de llegar a la velocidad mxima correspondiente a 90%, se apaga el motor durante 50 ms, todas estas lneas estn dentro de un repeat el cual hace que se generen 30 repeticiones, es decir, 30 dientes de sierra.

B. Programa Para controlar La Posicin Del Servomotor

Fig. 3. Seal Genrica Diente de Sierra.

El algoritmo necesario para que el motor del Lego responda a un patrn diente de sierra como el de la figura 3 se muestra a continuacin: task main() { TextOut(1, 1, "Camilo Torres 261592"); TextOut(2, 2, "Nina Mesias 285644"); TextOut(3, 3, "Syndy Castillo 22781" ); int pos=0; for(int i=0;i<5;i++){ while(pos<=270){ OnFwd(OUT_A,15); Wait(100); pos=MotorRotationCount(OUT_A); } while(pos>23){ OnRev(OUT_A,80); Wait(2); pos=MotorRotationCount(OUT_A); } } OnFwd(OUT_A,80); Wait(10); Off(OUT_A); }

Informe 1: Introduccin Al Lego Mindstorms NXT D. Programa Para Uso De Un Sensor De Sonido Para esta parte de la prctica se decidi utilizar un sensor de sonido, de tal manera que el servomotor se accionara si el sensor detectaba un sonido fuerte como un aplauso o un grito. El cdigo se presenta a continuacin. task main(){ int valor; SetSensorType(IN_1,SENSOR_TYPE_SOUND_DBA); valor=0; while(valor<1000) { valor= Sensor(IN_1); Wait(5); } OnFwd(OUT_A, 50); Wait(2000); Off(OUT_A); } Primero se le asigna el sensor de tipo sonido a la entrada uno del Brick luego, se declara una variable de tipo entero llamada valor, la cual se encargara de almacenar el valor retornado por el sensor de sonido, de tal manera que si este valor superior a 1000, se romper un ciclo while y el motor girara hacia adelante durante 2 segundos y se apagara, de lo contrario el ciclo no se rompe y el motor permanecer quieto IV. CONCLUSIONES 1) El lenguaje NXC da una amplia gama de posibilidades para el diseo de programas y facilita la comunicacin del usuario con el lego Mindstorm, debido en gran parte a que es un lenguaje muy similar a C con el que la mayora de los usuarios est familiarizado. 2) Se debe considerar un tiempo entre la ejecucin de tareas, especialmente para la visualizacin de la informacin en el display del Brick, porque de lo contrario los datos cambiarn continuamente o incluso el microcontrolador encargado puede no alcanzar a ejecutar una instruccin. Dado esto se debe tener cuidado con el muestreo de los sensores, pues estos tiempo necesarios al interior de los ciclos implican la prdida de informacin en la deteccin de las seales externas. 3) La manera en que se implement la seal diente de sierra de velocidad no es la mejor forma de hacerlo debido a que se interacta con el porcentaje de corriente que se le suministra al motor no directamente con la velocidad del mismo. REFERENCIAS
[1] [2] Atmel.(2011, mayo) Atmel Microcontroller [Online]. Disponible: http://www.atmel.com/Images/2545s.pdf E.J. Carletti, (2007) Comunicacin BUS I2C, Descripcin y funcionamiento [Online], Disponible: http://robotsargentina.com.ar/Comunicacion_busI2C.htm [3]

5
Ingeniera en Microcontroladores, Curso de Redes de Microcontroladores PIC (Protocolo SPI), [Online], Disponible: http://www.i-micro.com/pdf/articulos/spi.pdf M.D. Chaparro, (2010, enero16) Transmisor UART VHDL, [Online], Disponible: http://unelectronica.260mb.com/2010/01/transmisor-uartvhdl/ Lego Mindstorms NXT (2006) Lego Mindstorms Hardware developer Kit [Online] Disponible: http://mindstormsnxt.blogspot.com/2006/08/whats-inside-nxt-brickpart-ii.html

[4]

[5]

También podría gustarte