Está en la página 1de 18

INSTITUTO TECNOLGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY Campus Estado de Mxico Laboratorio de Sistemas Digitales

Controlador de un carro a control remoto

Desarrollado por: Alejandro Alemn Castilla Erik Riveroll Fuster 451471 444187

Resumen Nuestro proyecto consiste en aprovechar las caractersticas de control de un sistema mnimo con un microcontrolador 8031 para controlar un coche a control remoto y

memorizar una ruta, establecida por comandos de direccin inmediatos o un archivo de ruta pregrabado.

I NTRODUCCIN
Una de las principales aplicaciones de la electrnica y los sistemas de control estn en los juegos electrnicos, estos sistemas cada vez son ms complejos y cumplen con una mayor cantidad de funciones. Adems, estos sistemas desarrollados para juegos infantiles permite un estudio de posibles aplicaciones en la industria, pues los mismos dispositivos empleados pueden adaptarse a condiciones industriales para funcionar de manera muy similar a como lo hacen en los juegos. Lo anterior nos hace reflexionar acerca de lo importante que son los juegos para la electrnica y nos muestra la importancia de implementar nuevos sistemas para analizar su funcionamiento.

control remoto. Es un sistema que permite controlar al carro mediante una computadora y grabar la trayectoria que sigue el carro para tiempo despus repetirla.

C ARACTERSTICAS
El sistema mnimo est diseado en configuracin de Loader para que pueda ser utilizado mediante el programa SIEV31. El sistema hace posible operar al carro mediante la utilizacin de las flechas del teclado de una computadora. Es capaz de guardar hasta 2 horas y 10 minutos de trayectoria. La trayectoria que repite el carro es desplegada en el LCD del sistema mnimo, al mismo tiempo que es enviada a la computadora para su futuro almacenamiento. El sistema es capaz de recibir de la computadora una trayectoria grabada en un archivo de texto (.TXT) y ejecutarla. El carro a control remoto consta de dos motores, uno para adelante y atrs y otro para derecha e izquierda. El control remoto del carro es a base de switches, cada motor dispone de tres contactos, uno comn y otros dos que especificarn la direccin del motor, esto significa que para activar un motor hacia una direccin hay que juntar la terminal comn con la terminal correspondiente y para que vaya en la direccin contraria hay que juntar el comn con la otra terminal.

O BJETIVOS

PARTICULARES

a. Analizar el sistema de comunicacin entre el control remoto y el carro. b. Adaptar una etapa de potencia para poder controlar al carro a partir de seales emitidas por el sistema mnimo. c. Integrar una comunicacin serial con una computadora para controlar al carro oprimiendo las flechas de la computadora. d. Almacenar la ruta indicada por la computadora para poder reproducirla.

El material que utilizamos para el desarrollo del proyecto es un carro de control remoto, un sistema mnimo, una computadora, cable serial y los dispositivos necesarios para la adaptacin de la etapa de potencia.

FUNCIONAMIENTO
Todo el funcionamiento del sistema se basa en el programa controlador, es decir, nuestro sistema es controlado por software y no por hardware.

D ESCRIPCIN
Este controlador consta de un sistema mnimo (8051), una etapa de potencia y una etapa de

El sistema mnimo. El sistema utilizado en este proyecto es un sistema mnimo en configuracin de "loader", el sistema consta de: Microcontrolador 8031A Eprom 27C256 es decir, 32K RAM 62256 , memoria de 32K LCD 491 MAX232 Adaptador para transmisin serial. Controlador de teclado 74C922 Puerto serial. El programa controlador Caractersticas El programa fue desarrollado en lenguaje ensamblador y permite al sistema para realizar las siguientes tareas: Recepcin de comandos. Interpretacin de comandos. Almacenamiento de la trayectoria. Reproduccin de lo almacenado. Despliegue en el LCD. Despliegue en la computadora.

Funcionamiento

ORG 2000H AJMP MAIN ORG 2023H LJMP SERIAL

;Para evitar problemas con el Siev31, se reenva a una nueva direccin para interrupcin serial

Subrutina de interrupcin serial ORG 20F9H JNB TI, RECEP CLR TI CLR A MOVC A,@A+DPTR JZ INICIA MOV SBUF,A INC DPTR RETI SETB REN MOV DPTR,#$2300 RETI CLR RI MOV A,SBUF CJNE A,#$45,SIGGG ACALL BORRA SJMP SAA CJNE A,#$52,SA SETB PSW.5 SJMP SAA ACALL MODO JB PSW.6,TEXT ACALL CARRO SJMP SAA ACALL GRABAR RETI

SERIAL

;Determina transmisin o recepcin ;Limpia la bandera ;Despliega el mensaje de Recepcin Preparada para indicar que hay buena conexin serial.

INICIA

RECEP

;Una vez desplegado el mensaje, habilita recepcin y prepara DPTR para grabar trayectoria ;Borra bandera de recepcin ;Verifica que si se desea borrar o es otro comando. ;Analiza el comando para ver si es lectura (repeticin) o escritura

SIGGG

SA

;Llama a subrutina para establecer modo de control (inmediato/texto). ;Modo de control inmediato. ;Modo de control por texto.

TEXT SAA

Subrutina de movimiento del carro CARRO ORG 212AH CJNE A,#$41,ATRAS ACALL LIMPIA JB PSW.5,CON1 ACALL GRABAR MOV R0,#$00 ACALL DISPLAY MOV P1,#$08 MOV A,P1 MOV R2,A SJMP PRE CJNE A,#$42,IZQ ACALL LIMPIA MOV P1,#$04 JB PSW.5,CON2 ;Si el comando es A,B,C o D indica movimiento del carro, esta subrutina verifica que movimiento es en especfico, despus llama a la subrutina limpia para borrar el LCD, si no est repitiendo la trayectoria llama a la funcin grabar y finalmente llama a la funcin Display para desplegar el comando en el LCD y la pantalla de la Computadora. Seguido de esto, se enva al puerto 1 el cdigo de activacin de los switches correspondientes a ese movimiento.

CON1

ATRAS

CON2

IZQ

CON3

VU

DER

CON4

VU1

WAIT

CON5

DISP PRE SALE

ACALL GRABAR MOV R0,#$09 ACALL DISPLAY MOV A,P1 MOV R2,A SJMP PRE CJNE A,#$44,DER ACALL LIMPIA MOV P1,#$02 JB PSW.5,CON3 ACALL GRABAR MOV R0,#$0F ACALL DISPLAY MOV A,P1 MOV R4,#$60 ACALL LARGO DJNZ R4,VU SJMP DISP CJNE A,#$43,WAIT ACALL LIMPIA MOV P1,#$01 JB PSW.5,CON4 ACALL GRABAR MOV R0,#$19 ACALL DISPLAY MOV A,P1 MOV R4,#$60 ACALL LARGO DJNZ R4,VU1 SJMP DISP CJNE A,#$57,SALE ACALL LIMPIA MOV P1,#$00 JB PSW.5,CON5 ACALL GRABAR MOV R0,#$21 ACALL DISPLAY SJMP PRE ORL A,R2 MOV P1,A ACALL CONT MOV P1,#$00 RET

;En el comando de adelante y atrs, se graba el registro R0 con el valor para poder decidir si algn movimiento posterior a la izquierda o derecha se realizar hacia adelante o atrs. ;En los comandos de izquierda y derecha se da un tiempo de retardo para activar el switch para izquierda o derecha y posteriormente se activa el switch para que avance hacia adelante o atrs dando la vuelta, esto se debe a que el control remoto no acepta ambos comandos simultaneamente (incluso de manera manual). El comando Wait slo indica que el carro deber detenerse un instante.

;Aqu se enva el comando para avanzar cuando se da vuelta. ;Llama a subrutina para que se avance aprox. 0.2 seg.

Subrutina de tiempo de movimiento ORG 21A8H MOV R7,#$02 MOV R6,#$00 MOV R5,#$00 DJNZ R5,SE3 DJNZ R6,SE2 DJNZ R7,SE1 RET

CONT SE1 SE2 SE3

;Como no se quiere que el carro avance de manera permanente se realiza esta cuenta para que slo se enve un impulso de avance de un poco ms de 0.2 segundos por comando.

Subrutina para repetir trayectoria LEER AQUI ORG 21B5H SETB PSW.5 MOV DPTR,#$2300 MOVX A,@DPTR JZ FIN ACALL CARRO INC DPTR SJMP AQUI CLR PSW.5 RET ;Establece modo lectura (no graba) ;Inicio de trayectoria grabada ;Revisa por fin de trayectoria ;Conforme lee, enva seal para mover el carro y busca el sig. Comando en la trayectoria ;Elimina modo lectura (puede continuar grabando)

FIN

Subrutina de grabacin GRABAR ORG 21C5H MOVX @DPTR,A INC DPTR MOV A,#$00 MOVX @DPTR,A RET ;Enva el comando a la siguiente direccin de la ltima direccin utilizada y despus graba con 00 la siguiente direccin para indicar fin de trayectoria.

Subrutina para borrar LCD LIMPIA ORG 21D2H MOV P2,#$60 MOV R1,#$00 MOV R3,A MOV A,#$01 MOVX @R1,A MOV A,R3 ACALL LARGO RET ;Esta subrutina se emplea para borrar el mensaje que tenga actualmente el LCD para posteriormente desplegar el mensaje de el movimiento que se est efectuando.

Subrutina para desplegar movimiento en el LCD y pantalla. ORG 21E0H DISPLAY MOV A,R0 MOV R3,A DISPL MOV P2,#$22 MOVX A,@R0 CJNE A,#$01,SIGUE MOV A,R3 MOV R0,A ACALL COMPU SJMP ENDD SIGUE MOV R1,#$01 MOV P2,#$60 MOVX @R1,A ACALL CORTO INC R0 SJMP DISPL ENDD RET

;Guarda el valor del registro para reutilizarlo en el despliegue en pantalla. ;Lee caracter a desplegar ;Al terminar el mensaje en LCD busca el valor inicial del registro y llama a subrutina para despliegue en pantalla. ;Lazo para desplegar en display, considerando retardos para envo de datos al LCD.

Mensajes desplegados ORG 2200H DB 'ADELANTE' DB 01H DB 'ATRAS' DB 01H DB 'IZQUIERDA' DB 01H DB 'DERECHA' DB 01H DB 'DETENIDO' DB 01H Subrutina de despliegue en pantalla COMPU ORG 2230H MOV P2,#$22 MOVX A,@R0 MOV SBUF,A JNB TI,CO0 CLR TI INC R0 MOV P2,#$22 MOVX A,@R0 CJNE A,#$01,COMP SJMP CFIN MOV SBUF,A JNB TI,CO4 SJMP COMP1 MOV A,#$0A MOV SBUF,A JNB TI,CO1 CLR TI MOV A,#$0D MOV SBUF,A JNB TI,CO2 CLR TI RET ;Se regresa al punto inicial del mensaje y se lee el caracter. ;Se enva el primer caracter ;Retardo hasta que se termine de transmitir el caracter y se borra bandera. Con un lazo se repite el proceso de lectura del caracter a transmitir y se comprueba que no se haya terminado el mensaje. ;Se transmite caracter y se espera a que se termine transmisin para transmitir el sig. caracter. ;Una vez terminados los caracteres, se envan comandos para generar un Enter o Return y empezar en la siguiente linea. ; Estos son cada uno de los mensajes que se despliegan segn el comando de movimiento. El byte 01, se utiliza como fin de mensaje.

CO0 COMP1

COMP CO4 CFIN CO1

CO2

Subrutina de modo de control ORG 2270H CJNE A,#$49,TEXTO CLR PSW.6 SJMP SALMOD TEXTO CJNE A,#$54,SALMOD SETB PSW.6 SALMOD RET MODO ;Segn el modo de control deseado, inmediato o grabacin (para enviar texto) se desactiva o activa la bandera PSW.6 respectivamente.

Subrutina de borrado BORRAR ORG 2280H MOV A,DPL DEC A CJNE A,#$FF,BOR1 MOV DPL,A MOV A,DPH DEC A MOV DPH,A SJMP SALBOR MOV DPL,A MOV A,#$00 MOVX @DPTR,A RET

;Esta subrutina permite eliminar el ltimo caracter escrito dentro de la trayectoria del carro.

BOR1 SALBOR

Rutina de inicio
ORG 208BH MOV TH1,#$FD MOV TL1,#$FD MOV TMOD,#$20 MOV TCON,#$00 MOV IE,#$90 MOV SCON,#$40 MOV P1,#$00 CLR PSW.5 CLR PSW.6 MOV DPTR,#$6000 MOV A,#$3C MOVX @DPTR,A ACALL CORTO MOV A,#$01 MOVX @DPTR,A ACALL LARGO MOV A,#$06 MOVX @DPTR,A ACALL CORTO MOV A,#$0C MOVX @DPTR,A ACALL CORTO MOV A,#$80 MOVX @DPTR,A ACALL CORTO MOV DPTR,#LCD SETB TR1 SETB TI JNB PSW.5,LAZO MOV IE,#$00 ACALL LEER MOV IE,#$90 SJMP LAZO

MAIN

;Establece Baud rate = 9600 ;Modo del temporizador ;Habilita interrupcin serial ;Modo de transmisin serial ;Limpia puerto 1. ;Limpia bandera lectura ;Limpia bandera modo de control ;Comienza inicializacin del LCD

LAZO

;Termina inicializacin LCD ;Direccin mensaje Recepcin preparada ;Activa trigger 1 e int. serial. ;Espera a modo lectura ;Deshabilita interrupciones ;Llama subrutina lectura ;Rehabilita interrupcin serial.

Subrutina de tiempo CORTO ESP ORG 20D4H MOV R6,#$13 DJNZ R6,ESP RET ;Subrutina para tiempo de retardo corto para envo de datos y comandos al LCD.

Subrutina de tiempo LARGO WAIT2 WAIT1 ORG 20D9H MOV R6,#$3 MOV R7,#$00 DJNZ R7,WAIT1 DJNZ R6,WAIT2 RET ;Subrutina de retardo largo para envo de datos y comandos al LCD.

Mensaje de confirmacin LCD ORG 20E2H DB 'RECEPCION PREPARADA' DB 0AH DB 0DH DB 00H END END ;Mensaje para confirmar transmisin serial entre sistema mnimo y computadora.

C ONEXIONES

M ANEJO

Conexin El sistema mnimo se conecta a una fuente de alimentacin de 5V. Se conecta la etapa de potencia al puerto 1 del sistema y el control remoto a su vez a la etapa de potencia. El control remoto se alimenta con una pila de 9V y el carro se alimenta con un banco de 4 bateras de 1.5V cada una. Se carga el programa controlador al loader mediante el puerto serial utilizando el SIEV31, una vez cargado el programa e iniciado (mediante la instruccin g 2000), cerramos el SIEV31 mediante la tecla F1, pero no desconectamos el loader, una vez hecho esto abrimos hyperterminal de Windows y establecemos una conexin a travs del puerto serial a un baudrate de 9600 sin paridad. Esto se hace debido a que el SIEV31 tiene un error: este programa,

adems de no reconocer el cdigo ASCII de las flechas de control, interviene en la transmisin serial del programa controlador e introduce cadenas de espacios en blanco, todo esto se traduce en un mal funcionamiento del circuito. Manejo Una vez obtenida la conexin serial podemos empezar a manejar el carro mediante el uso de las flechas de adelante, atrs, izquierda y derecha para generar movimiento o presionar la tecla "W" para indicar al carro que se detenga por un instante. Una vez concluida nuestra trayectoria podemos presionar la tecla R del teclado de la computadora para hacer que el sistema repita la trayectoria grabada. Tambin es posible borrar uno a uno el ltimo comando presionando la letra "E".

TXTRA
Este programa esta hecho en C++ y su objetivo es convertir un archivo con texto a un archivo con el formato R&A. El formato R&A Sus siglas responden a los apellidos de los autores y se basa en secuencias de las letras A,B,C,D y W que especifican la accin que ejecutar el carro: A= Adelante B= Atrs C= Derecha D= Izquierda W=Esperando Creacin de una trayectoria pregrabada Para enviar una trayectoria al sistema podemos crear un archivo que contenga una secuencia de las letras anteriormente citadas, por ejemplo: Si creamos un archivo con la siguiente secuencia de letras: AAWBCD

y lo enviamos por puerto serial utilizando Hyperterminal, el carro se mover de la siguiente forma: ADELANTE ADELANTE ESPERANDO ATRAS DERECHA IZQUIERDA Para evitar crear el archivo utilizando las letras A,B,C,D,W podemos hacer uno con las palabras completas (ADELANTE, ATRAS, IZQUIERDA, DERECHA, ESPERANDO) en maysculas y con un cambio de lnea entre cada una ("enter") y utilizar el programa TXTRA para que convierta ese archivo en uno con el formato R&A llamado "ruta.r&a". Una vez obtenido el archivo podemos enviarlo al sistema para su ejecucin. El cdigo fuente de este programa se muestra a continuacin:

/* Programa que convierte un archivo de texto en formato R&A */

/* Inclusin de las libreras necesarias */ #include <iostream.h> #include <stdio.h> #include <string.h> #include <dir.h> #include <conio.h> int main(void) { /* Limpia la pantalla y realiza la presentacin del programa */ clrscr(); cout<<endl<<endl; cout<<endl<<"TXTRA 1.0"<<endl<<endl; cout<<endl<<"ITESM-CEM Laboratorio de Sistemas Digitales"; cout<<endl<<"Programado por Alejandro Alemn y Erik Riveroll"; cout<<endl<<"Copyright, 1999"<<endl<<endl; cout<<endl<<"Programa para convertir formato TXT a formato R&A"<<endl<<endl; /* Declaracin de variables */ FILE *in, *out; fpos_t filepos; int j,dato,datos[25],enter; char *fname,fuente[250]; char a[] = "A"; char b[] = "B"; char c[] = "C"; char d[] = "D"; char w[] = "W"; /* Pide el nombre del archivo fuente */ cout<<"Dame el nombre del archivo fuente: "; cin>>fuente; fname=fuente; /* Checa si es posible abrir el archivo fuente (in) y crear el archivo destino (out), si no es posible manda un mensaje de error y termina el programa */ if ((in = fopen(fname, "rt")) == NULL) { fprintf(stderr, "No se puede abrir el archivo.\n"); getch(); return 1; } if ((out = fopen("ruta.r&a", "wt")) == NULL) { fprintf(stderr, "No se puede crear el archivo destino.\n"); getch(); return 1; } /* Si es posible abrir el archivo fuente y crear el destino, empieza el proceso de codificacin */ cout<<endl<<endl<<"El contenido del archivo "<<fname<<" es: "<<endl; /* Busca el inicio del archivo fuente */ fseek(in, 0,SEEK_SET);

/* Empieza la codificacin */ while(!feof(in)) { /* Toma las 3 primeras letras del archivo fuente y suma el valor correspondiente a cada letra. */ /* Ejemplo: ADE= 65+68+69=202 */ dato=0; for (j=0;j<=2;j++) { dato=dato+fgetc(in); } /* Verifica si el nmero obtenido corresponde al de "ADELANTE" */ if (dato==202) { cout<<"ADELANTE"<<endl; /* Escribe en el archivo destino la letra A */ fwrite(a, strlen(a), 1, out); /* Busca el cambio de lnea (10) o el fin del archivo (-1) */ enter=0; while(enter!=10) { enter=fgetc(in); if(enter==-1) { enter=10; } } } /* Verifica si el nmero obtenido corresponde al de "ATRAS" */ if (dato==231) { cout<<"ATRAS"<<endl; /* Escribe en el archivo destino la letra B */ fwrite(b, strlen(b), 1, out); /* Busca el cambio de lnea (10) o el fin del archivo (-1) */ enter=0; while(enter!=10) { enter=fgetc(in); if(enter==-1) { enter=10; } } } /* Verifica si el nmero obtenido corresponde al de "IZQUIERDA" */ if (dato==244) { cout<<"IZQUIERDA"<<endl; /* Escribe en el archivo destino la letra D */ fwrite(d, strlen(d), 1, out);

/* Busca el cambio de lnea (10) o el fin del archivo (-1) */ enter=0; while(enter!=10) { enter=fgetc(in); if(enter==-1) { enter=10; } } } /* Verifica si el nmero obtenido corresponde al de "DERECHA" */ if (dato==219) { cout<<"DERECHA"<<endl; /* Escribe en el archivo destino la letra C */ fwrite(c, strlen(c), 1, out); enter=0; /* Busca el cambio de lnea (10) o el fin del archivo (-1) */ while(enter!=10) { enter=fgetc(in); if(enter==-1) { enter=10; } } } /* verifica si el nmero obtenido corresponde al de "ESPERANDO" */ if (dato==232) { cout<<"ESPERANDO"<<endl; /* Escribe en el archivo destino la letra W */ fwrite(w, strlen(w), 1, out); enter=0; /* Busca el cambio de lnea (10) o el fin del archivo (-1) */ while(enter!=10) { enter=fgetc(in); if(enter==-1) { enter=10; } } } } /* Cierra los archivos fuente y destino */ fclose(in); fclose(out); /* Termina el programa */ cout<<endl<<endl<<"Trabajo Finalizado getch(); return 0;

-->

ruta.r&a"<<endl<<endl;

B ITCORA
Primera semana

DEL PROYECTO

programa lo obtuvimos del proyecto final de la materia de Microprocesadores y perifricos, aunque tuvimos que modificarlo al encontrarnos con algunas irregularidades: a) El LCD nicamente desplegaba un espacio al momento de apretar la tecla, por lo que no sabamos exactamente cual era el dato. b) El programa Siev31, presenta un problema de envo constante de una seal al sistema mnimo, para resolver lo anterior, decidimos utilizar la comunicacin serial por Hyperterminal de Windows para tener una comunicacin sin envo de informacin no deseada. Al momento de utilizar Hyperterminal nos dimos cuenta que las flechas al apretar las flechas se obtena: [A, [B, [C, [D, al apretar arriba, abajo, derecha e izquierda respectivamente, es decir, recibamos 3 caracteres con slo presionar una tecla. Nuestra solucin vino con el mismo programa, pues decidimos utilizar un programa que nicamente desplegara en el display A, B, C o D, sin considerar todo lo dems, incluso as se pudo utilizar el Siev31, pero nicamente con las letras, no con las flechas. c) Al estar utilizando las flechas para el control, nos dimos cuenta que apretando 2 teclas simultaneamente no era posible recibir otra seal distinta, sino que se reciban ambas seales, pero si se dejaban apretadas las teclas, nicamente apareca la seal de la ltima tecla apretada, por lo tanto, no sera posible controlar los 6 movimientos diferentes que tiene el carro. Nuestra solucin fue modificar nuevamente el programa para utilizar los nmeros para controlar los movimientos del automvil, y en esta

Durante esta semana hicimos las siguientes actividades: Adquisicin del coche a control remoto Probamos el coche y despus procedimos a desarmar el control remoto para ver de qu manera se accionaban los motores del carro. Nuestra primera buena noticia fue que el sistema de control se basaba en un conjunto bsico de switches. El sistema de control consta de dos partes, una que mueve los motores de atrs y adelante y otra que mueve los de los lados. Cada uno de estas partes estn compuestas de 3 contactos, uno de los cuales es comn (tierra) y los otros tienen el voltaje de Vcc (9V). Lo nico que se tiene que hacer para activar un motor es unir el extremo correspondiente al motor deseado con el contacto comn. Investigamos tambin, mediante un multmetro, la corriente que circula por estos contactos (43mA). Esto nos servira para establecer la configuracin de la "etapa de potencia" necesaria para activar el control remoto. Decidimos la manera en la que se iba a manejar el coche, mediante las flechas de adelante-atrs-izquierda-derecha del teclado de cualquier computadora, por lo que el siguiente paso fue disear un programa para poder ver el cdigo que se genera al oprimir cada tecla.

Segunda semana Desarrollo del programa para encontrar el cdigo ASCII al apretar las flechas adelante,atras, izquierda, derecha: El programa empleado para encontrar el cdigo enviado por las flechas de la computadora consisti en recibir de modo serial el cdigo y enviarlo al LCD; este

misma semana readaptamos el programa para su funcionamiento. Este programa nicamente manda las seales y slo las quita hasta que una nueva seal modifica los valores que hay en el puerto 1 (Este es el puerto que utilizamos para controlar nuestro control remoto). Por otra parte, en el aspecto de implementacin fsica en cuanto a la etapa de potencia, decidimos la forma en la que la desarrollaramos y encontramos que un transistor 2N2222 soportaba fcilmente la demanda de corriente por parte del control remoto al activar cada switch, por lo que slo tuvimos que configurarlo para que actuara como switch, conectando el emisor a la tierra y el colector con una resistencia a Vcc, pudiendo controlar la base para los estados de corte y saturacin. Este proceso lo evaluamos con un transistor, verificando que se pudiera controlar y el resultado fue correcto. El circuito respondi bien al momento de mandarle la seal para hacer que el carro se moviera.

Tercera semana Se implement completamente la etapa de potencia para nuestro control, esta consiste en un transistor 2N2222 y 2 resistencias por cada switch (4 switches en total). El transistor se conect con una resistencia que tiene un valor cercano inicial a los 200 para tener los 43mA de corriente entre el emisor y el colector, la otra resistencia es de 18K aproximadamente, conectada a la base. El colector se conect a Vcc del switch, el emisor a tierra y la base recibe nuestra seal de control. Esta etapa se encuentra ensamblada en protoboard pues continuamos haciendo pruebas. Adems durante el fin de semana encontramos la forma de controlar al carro con las flechas de la computadora (nuevamente), insistimos en utilizar las

flechas por lo explcitas que son en cuanto al movimiento del carro. La solucin para poder tener los 6 movimientos es utilizando como referencia para la direccin (adelante o atrs) el ltimo dato empleado para manifestar la misma. Es decir si queremos dar vuelta a la derecha hacia enfrente, es necesario que primero avancemos hacia enfrente (si antes estabamos avanzando hacia atrs) y despus enviar la seal de vuelta a la derecha. Si la ltima ocasin que avanzamos hacia enfrente o hacia atrs es la misma que la que queremos al momento de indicar una vuelta, slo es necesario presionar la tecla de vuelta. En esta semana logramos implementar este programa y funcion de acuerdo a como queramos. Posteriormente vino un problema con el programa: Dentro de nuestra programacin incluimos la letra Q para indicarle al carro que se detuviera por completo, y la lgica empleada funcion correctamente al igual que los comandos de movimiento, sin embargo, si despus de una Q decidamos reiniciar el movimiento con una vuelta hacia cualquier lado, el auto se iba hacia enfrente o atrs (dependiendo del ltimo valor) pero no daba la vuelta, despus nos dimos cuenta que el problema no estaba en la programacin directamente, pues incluso si se daba la misma instruccin de modo manual, el carro responda de la misma manera. Buscamos la manera de solucionarlo y ah nos surgo otro problema pues al implementar la solucin dando un retardo en cada seal, el programa dej de funcionar, cosa que no nos haba sucedido hasta la fecha y por ms que estuvimos intentando regresar al programa anterior donde el problema estaba en el funcionamiento del carro y no en el programa, no logramos conseguirlo y nuestro programa tuvo un error que tendramos que corregir.

Cuarta semana Despus de solucionar el problema con el retardo decidimos establecer una base de tiempo de medio segundo para el muestreo de instrucciones recibidas de la computadora. Cada vez que se oprimiera una tecla el microcontrolador mantendra la seal correspondiente en el puerto 1 durante medio segundo. Como ya contbamos con una base de tiempo, eliminamos la opcin de la tecla Q, puesto que ya no era necesaria. Agregamos al programa la capacidad de mandar la direccin a la que se diriga el carro (adelante, atrs, izquierda, derecha), directamente al LCD. En esta semana comenzamos con el proceso de almacenamiento de datos (a partir de la direccin 2300H). Cada vez que el programa recibe un dato vlido, despliega en el LCD lo que significa, lo almacena y enva la instruccin correspondiente al puerto 1. El almacenamiento y la lectura de datos funciona de la siguiente manera: a) Al momento de recibir una instruccin, sta es grabada a partir de la direccin 2300H de la RAM externa. La localidad de memoria siguiente es borrada (00H). b) Al momento de acabar de grabar la ruta se oprime la tecla R de la computadora y el microcontrolador entra en una subrutina de lectura, ste lee cada dato a partir de la direccin 2300H y realiza la subrutina de control de movimiento del carro, detenindose si encuentra que el dato que va a mandar es 00H. c) Si se sigue grabando despus de la lectura de datos, el programa almacenar la ruta a partir de la ltima direccin de memoria utilizada, por lo que si se ejecuta "Repeticin" (tecla R), el microcontrolador mandar la trayectoria indicada desde el

principio y aadir las instrucciones nuevas. Esta ltima etapa de nuestro diseo se complic debido a la complejidad del programa, sin embargo todo sali como lo planeado y estbamos listos para probar el carro. Probamos el carro al aire libre y demostramos que funciona, se puede manejar libremente el carro y despus pedirle que repita la trayectoria.

Quinta semana Esta semana fue de evaluacin del avance del proyecto, por lo que no hubo un avance significativo, pues estuvimos observando los proyectos de los dems equipos y presentando el nuestro. Sexta semana En esta semana desarrollamos el programa para poder desplegar en la pantalla de la computadora la trayectoria del proyecto, es decir, despliega un mensaje con la direccin que el carro est siguiendo en ese momento, pero al ir desplegando cada uno, se puede observar la trayectoria del proyecto. Para este punto tuvimos ciertos problemas con el programa que tenamos, pues no permita la transmisin serial dado que todo nuestro control se realizaba en la interrupcin del puerto serial y no realizaba una "interrupcin serial dentro de s misma". Para resolver el problema se desarroll otro programa donde se pudiera realizar una recepcin mucho ms rpida dentro de la interrupcin y liberarla rpidamente. Una vez funcionando el programa, decidimos unir ambos programas para fusionar ambas funciones. En el programa fusionado establecimos 2 comandos de control "T" que indica posibilidad de recibir un archivo de texto y que su peculiaridad es que no realiza la

trayectoria hasta que se presiona la tecla "R", y el comando "I" que es para una respuesta inmediata a la indicacin de movimiento con las flechas. Nuevamente decidimos modificar el programa, para tener tambin la posibilidad de detener el carro por algunos instantes en su recorrido, este comando se ejecuta presionando la tecla "W". En esta semana tambin modificamos el programa para que pudiera desplegar la trayectoria escrita en la pantalla de la computadora, este proceso se lleva a cabo sin utilizar la interrupcin serial. Se mejor la esttica de la etapa de potencia eliminando el protoboard y fijndola en una tablilla con soldadura.

modificacin a este tipo de tecnologa. Adems, este proyecto tiene la posibilidad de aplicarse en la industria, pues si se requiere realizar movimientos predeterminados (rutas) invariables, donde no se tenga posibilidad de "trfico", este sistema puede responder adecuadamente a cualquier trayectoria asignada de este tipo.

C ONCLUSIONES
Creemos que lo ms importante de este proyecto es el hecho de que logramos implementar por completo todos los objetivos inicialmente planteados, incluso al grado de agregar un buen nmero de detalles extras al sistema. Consideramos adems, que este proyecto nos dio la oportunidad de integrar realmente nuestros conocimientos en el rea de los Sistemas Digitales en una aplicacin prctica y til. Para agregarle los detalles antes mencionados, tuvimos la suerte de poder utilizar conocimientos de Computacin haciendo una integracin mayor de conocimientos en un mismo proyecto. Un aspecto importante que descubrimos con este proyecto es la capacidad del microcontrolador que estamos utilizando, pues no fue necesaria una gran implementacin fsica de dispositivos para generar esta aplicacin, pero fue muy necesario trabajar en la programacin del controlador. El trabajar en equipo es algo que deja mucho de provecho ya que los integrantes del mismo aprenden a cooperar y

Septima semana Realizacin de pruebas finales. Programacin en C++ de programas accesorios. Este programa consiste en leer un archivo *.txt que contenga las instrucciones: "ADELANTE", "ATRAS", "IZQUIERDA", "DERECHA", "ESPERA". El programa realizar la conversin a un formato *.R&A que se podr transmitir al controlador para realizarse. Presentacin final.

A PLICACIONES
Desde un principio se mencion la importancia de los juegos electrnicos en la actualidad, y el desarrollo de este proyecto tiene un enfoque orientado precisamente a una

a ayudarse entre ellos y lo ms importante, a confiar en el trabajo de las dems personas. Creemos que es necesario realizar un programa monitor que no tenga las restricciones del SIEV31 en cuanto a transmisin y recepcin serial, al igual que el reconocimiento de mnemnicos en un programa, pues le resta a la configuracin "Loader" las grandes ventajas que implicitamente representa.

B IBLIOGRAFA:
MACKENZIE, Scott. The 8051 Microcontroler, 2 edicin. Ed. Prentice Hall, USA, 1995 Manual del Microcontrolador 8051 Apuntes de Microprocesadores y Perifricos http://www.national.com http://www.ti.com http://www.fairchildsemi.com

También podría gustarte