SISTEMA INTELIGENTE QUE JUEGUE AJEDREZ CONTRA UN AGENTE NATURAL - SISTEMA ROBÓTICO MECÁNICO -
Presentado a: Profesor: Luís Carlos Sarmiento Vela
Presentado por: César Augusto Navarrete Lombana
[email protected] Ricardo Murcia Salamanca
[email protected] Jhon Alexander Pulido Varela
[email protected] Diana Lancheros
[email protected] Faiver Trujillo
[email protected] Blassius Stiver Salazar López
[email protected]
UNIVERSIDAD PEDAGOGICA NACIONAL FACULTAD DE CIENCIA Y TECNOLOGIA MAESTRIA EN TECNOLOGIAS DE LA INFORMACIÓN APLICADAS A LA EDUCACION TALLER ESPECÍFICO I Bogotá Junio 16 de 2008
INTRODUCCIÓN
En el marco de construcción del proyecto “Sistema inteligente jugador de ajedrez contra agente humano”, se generaron grupos interdisciplinarios para la elaboración de la programación y diseño de los diferentes subsistemas que componen el proyecto, grupos de programación de heurísticas, de visión, de control y de diseño del prototipo robótico encargado del movimiento de las piezas. Este informe hace referencia a los desarrollos alcanzados por este último grupo, en el diseño y desarrollo de un prototipo robótico programable que resolviera el problema de mover las fichas de un tablero de ajedrez a través de los comandos enviados por un PIC. En primer lugar se procedió a analizar el problema, que tenia como fin el de diseñar y construir un sistema capaz de mover las piezas de un tablero de ajedrez en sus diferentes grados de libertad y características especiales. Para esto se comenzó por indagar sobre las características de los elementos, formas, materiales a utilizar por los grupos para el desarrollo del tablero. Luego de esto se presentaron algunas propuestas de modelos funcionales que podrían dar solución al problema, apoyados en esquemas mecánicos, así como el desarrollo de diferentes modelos. Finalmente se construyeron dos prototipos que se ubicaban en el tablero de acuerdo a sus coordenadas cartesianas.
MODELO DEL BRAZO
La figura1 muestra la forma en que se esbozó en una maqueta la forma en que se construiría el modelo funcional del brazo mecánico, capaz de movilizarse de forma exacta en cada uno de los 64 cuadros del tablero de ajedrez. La idea es trabajar con dos motores paso a paso que permitan la movilización del brazo de forma horizontal (coordenadas en el eje X) y de forma vertical (coordenadas en el eje y).
Figura1: Modelo de brazo mecánico
BRAZO MECÁNICO FUNCIONAL Se realizaron dos modelos funcionales. El primero realiza el movimiento horizontal a través de una cremallera que se desplaza por el movimiento de un motor paso a paso en el cual está suspendido el eje que realiza el movimiento vertical de la misma forma que el anterior.
Figura2: Primer modelo de brazo mecánico funcional
El desarrollo de otra alternativa como elemento necesario a fin de contar con los suficientes recursos y garantizar el objeto final que es el brazo mecánico para jugar ajedrez, en ese desarrollo también se utilizaron materiales livianos como el acrílico y el aluminio , así como la aplicación de coordenadas XY, como elemento de sujeción de las piezas del ajedrez, se utilizo los principios del electroimán, las piezas del juego se ubican sobre
una mesa. El mecanismo de desplazamiento se encuentra compuesto por dos motores paso a paso y un eje en conjunto con un sistema de de piñón cremallera para el desplazamiento en Y un una polea, piñón en el motor paso a paso y una correa de transmisión para el desplazamiento en X (figura 3). El material de color blanco permite la optimización del uso del sistema de visión ya que no refleja luz que impida una correcta lectura. En general sus movimientos son suaves, rígidos en Y confiables en cuanto a su desplazamiento continuo y sin vibraciones, las trayectorias son limpias y con rozamientos bajos.
Figura3: Segundo modelo de brazo mecánico funcional
SISTEMA ELECTRÓNICO DE CONTROL
Se utilizaron dos motores paso a paso bipolares para ubicar al brazo mecánico en la posición correcta, uno controla el movimiento de la coordenada en el eje y, y el otro realiza el movimiento de la coordenada x. El control de los pasos de dichos motores se realizó con dos integrados L298N que incluyen dos puentes H. La estructura de control, empieza con la información que se envía desde Matlab por el puerto serial (com1), ésta información es transmitida a un microcontrolador PIC16F877 que se encarga de recibir dichos datos y enviarlos al puerto D. Los 4 bits menos significativos controlan al motor 1, es decir al movimiento en la coordenada X y los 4 bits restantes, controlan al motor 2, es decir al movimiento en la coordena Y. El siguiente diagrama de bloques representa la estructura general del control electrónico del brazo mecánico:
PIC
BJT NPN
ELECTROIMÁN
PUENTE H
MOTORES PASO A PASO
Figura4: estructura general de control electrónico
Transmisión del PC: El programa que permite transmitir datos por el puerto COM1 del PC se realizó en Matlab y su código se enuncia a continuación: clc; valor=15; puerto = serial('COM1','BaudRate',9600,'DataBits',8); fopen (puerto); fwrite(puerto,valor,'int8'); fclose(puerto); delete(puerto); clear puerto; Recepción de información (Microcontrolador) Se utilizará un byte para cada movimiento indicando la ubicación en coordenadas cartesianas de la siguiente manera: Y
X
Figura5: ubicación de coordenadas cartesianas suministradas por el PIC
Los cuatro bits de menor peso representan la coordenada X de la posición, los cuatro bits de mayor peso significativo representan la coordenada Y de la posición. Para la tarjeta de adquisición de datos se utilizó un PIC 16F877. Este dispositivo recibe los datos de forma serial enviados por el puerto COM1 del computador, los decodifica y envía la secuencia de pasos al puerto D. Para efectos de transmisión para cada motor, se ha establecido un paquete de 4 bytes dispuestos de la siguiente manera: Byte1 Byte2 Byte3 Byte6
0F Asignado Asignado 70
Cabecera. Origen movimiento. Destino movimiento. Cola.
La programación del microcontrolador que permite la recepción serial transmitida por el computador, consiste en: #include #use delay (clock=4000000) #use rs232(baud=9600, xmit=pin_c6,rcv=pin_c7) void main(void) { unsigned int a; set_tris_c(128); set_tris_b(0); output_b(255); output_d(255); while(1) {a=getc(); output_b(a); } }
Control del electroimán Para el control del electroimán se utiliza un transistor BJT NPN referencia D1265P actuando de a cuerdo a la señal que recibe del PIC a su resistencia de base, tal como se muestra en la figura.
Figura6: control de electroimán
Control de los motores paso a paso Para el control de los motores paso a paso se utilizaron dos integrados L298N (puentes H), conectados como indica la figura:
Figura7: controlador de motores paso a paso
R1: resistencia de 1KΩ a 1/4 w R2= R3: resistencias de 10kΩ a 1/4 w D1= D2 = D3 = D4= D5= D6= D7= D8: Diodos de 1 amperio. 1N2004 C1: condensador de 10µF a 50v. C2 = C3: condensadores cerámicos de 0,1µF a 50v.