Sie sind auf Seite 1von 22

CONTROL DE MOTOR DE PASO

1. OBJETIVOS El objetivo del presente laboratorio es que el estudiante aplique sus conocimientos de maquinas elctricas, control de procesos industriales y lenguajes de programacin para controlar un motor de paso relacionndolo como dispositivo final o actuador. 1. MATERIALES E INSTRUMENTOS

Programa de control. Transistores 2N3904. Resistencias de 470. Motor de paso. Microcomputador.

2. FUNDAMENTO TEORICO MOTORES PASO A PASO EL motor paso a paso est constituido esencialmente por dos partes: a) Una fija llamada "estator", construida a base de cavidades en las que van depositadas las bobinas que excitadas convenientemente formarn los polos norte-sur de forma que se cree un campo magntico giratorio. b) Una mvil, llamada "rotor" construida mediante un imn permanente, con el mismo nmero de pares de polos, que el contenido en una seccin de la bobina del estator; este conjunto va montado sobre un eje soportado por dos cojinetes que le permiten girar libremente. Si por el medio que sea, conseguimos excitar el estator creando los polos N-S, y hacemos variar dicha excitacin de modo que el campo magntico formado efecte un movimiento giratorio, la respuesta del rotor ser seguir el movimiento de dicho campo, producindose de este modo el giro del motor.

Puede decirse por tanto que un motor paso a paso es un elemento que transforma impulsos elctricos en movimientos de giro controlados, ya que podremos hacer girar al motor en el sentido que deseemos y el nmero de vueltas y grados que necesitemos. Segn la construccin de las bobinas del estator, podemos diferenciar entre motores "bipolares" y motores "unipolares". Los primeros tiene las bobinas con un arrollamiento nico, mientras que los segundos tienen las bobinas compuestas por dos arrollamientos cada una. En la FIG.1 podemos ver esta diferencia de forma grfica. A igual nmero de espiras, el unipolar, deber tener menor seccin en el hilo de las bobinas, aumentando por tanto su resistencia y disminuyendo su par a bajas velocidades. Al nmero de grados que gira el rotor, cuando se efecta un cambio de polaridad en las bobinas del estator, se le denomina "ngulo de paso" y puede ser muy variado en funcin de la aplicacin y por tanto de la construccin del mismo. Adems, existe la posibilidad (con el control electrnico apropiado) de conseguir una rotacin de medio paso. En los motores que tratamos a continuacin el paso completo es de 7'5 (medio paso 3'75) y el nmero de pasos por vuelta completa es de 48. En cada paso puede producirse un error cifrado de 0'5 en adelanto o en retraso, sin embargo, este error no es acumulativo, quedando anulado en el transcurso de los 360 grados elctricos. Deberemos considerar que cuando se efecte medio giro, el motor desarrollar un par menor y ejecutar el giro con menor precisin. Los motores son fabricados para trabajar en un rango de frecuencias determinado por el fabricante y rebasado dicho rango, estaremos provocando una velocidad de giro del campo magntico creado por el estator muy elevada, no siendo el rotor capaz de alcanzar esa velocidad, provocando una prdida de sincronizacin y quedando frenado en estado de vibracin. Para estos motores, la mxima frecuencia admisible est alrededor de los 625 Hz. SECUENCIA DE EXCITACION DE LAS BOBINAS: Puesto que estamos hablando de dos tipos de motores paso a paso, el bipolar y el unipolar, tendremos tambin dos modos de excitacin de sus devanados: 1.- Devanado bipolar. Tenemos dos bobinas de arrollamiento nico y su excitacin, es decir, el orden en que se les aplica la tensin, hace circular una determinada intensidad en un sentido u otro, creando as los polos Norte-Sur y produciendo el giro del motor. La secuencia se expresa en la tabla siguiente. Si seguimos el orden 1, 2, 3, 4, estaremos

efectuando un giro hacia la derecha. Para invertir el giro no tendremos ms que seguir la secuencia inversa, es decir, 4, 3, 2, 1. 2.- Devanado bipolar. Tenemos dos bobinas con doble arrollamiento y la excitacin precisa en las bobinas se representa tambin en la misma tabla. Los valores 1 y 0 representan niveles lgicos. Con la secuencia 1, 2, 3, 4 se realiza un giro a la derecha y para cambiar el sentido de giro se efecta la secuencia contraria. CIRCUITOS DE MANDO: El manejo operativo de un motor paso a paso, puede llevarse a cabo de dos modos bsicos, bien mediante un control por tensin constante o bien mediante un control por corriente constante.

Vamos a mostrar el control por tensin constante de un motor bipolar, mediante un circuito integrado diseado especficamente para esta labor. se trata del SAA 1042 (fabricado por

Motorola) cuya distribucin de patillas se muestra en la FIG.2. Seguidamente describiremos la funcin de cada una de ellas:

Patilla 1: Salida de control de una bobina del motor en unin con la patilla 3. Patilla 2: Sirve para proteger las salidas 1, 3, 14, y 16, amortiguando los transitorias que introducen las bobinas del motor en los cambios de nivel de los pulsos de control. Es necesario conectar un diodo zener entre la patilla 2 y la 15 (zener de 3V3). Patilla 3: Salida de control de una bobina del motor en unin con la patilla 1. Patilla 6: Terminal con dos funciones bsicas, a travs de una resistencia adapta la corriente del motor y con un pulso a travs de la resistencia se efecta un set de las salidas de control. Si no se utiliza la funcin set, debe colocarse a masa a travs de la resistencia. Patilla 7: Entrada de reloj, activa en el flanco positivo del pulso. Por cada pulso que llegue, el motor gira 7'5 (o bien 3'75 segn este conectado el terminal 8). Patilla 8: (Full/Half step) Determina el ngulo de rotacin del motor por cada pulso que llegue de reloj. En estado bajo, el motor gira un paso completo (7'5). Patilla 9: Masa.

Patilla 10: (CW/CCW) Determina el sentido de giro. Cuando esta a nivel bajo, gira en sentido de las agujas del reloj. A nivel alto, el giro es contrario al de las agujas del reloj. Patilla 11: Alimentacin de la parte lgica del SAA 1042. Puede variar de los +5V hasta los +20V. Puede ser la misma tensin que la alimentacin del motor (patilla 15) o bien puede alimentarse a +5V para ser acoplado a seales de nivel TTL. Patilla 14: Salida de control de una bobina del motor en unin con la patilla 16. Patilla 15: Tensin a la que vamos a alimentar al motor. Patilla 16: Salida de control de una bobina del motor en unin con la patilla 14. El integrado SAA 1042 puede controlar motores con tensiones desde 6V hasta 12V y el SAA 1042A controla motores de 24V. Soportan una corriente de salida de 600 mA y poseen internamente diodos supresores de parsitos. sus entradas son compatibles con familias lgicas como MOS, DTL y TTL. Como puede observarse en la FIG.2, posee dos aletas refrigeradoras, que posibilitan mayor disipacin de calor interno. No obstante es conveniente aadir un pequeo refrigerador que aumente la capacidad de disipacin total. En la FIG.3 puede verse la conexin de las bobinas del motor al SAA 1042. Si conectamos una seal pulsante de reloj en la entrada de Clock, haremos girar el motor en el sentido que deseemos, segn conectemos la entrada CW/CCW a +5V o a masa; por cada pulso recibido el motor girar 7'5 3'75 segn sea el estado de la entrada F/H.

Control de Motores Paso-Paso


De todos es conocido, que uno de los ms importantes motores utilizados en robtica son los motores de tipo paso-paso. La ventaja de estos motores consiste en que de forma muy sencilla podemos controlar la posicin en cada momento del eje del motor, con lo que nos permite dar solucin a sistemas en los que se requiera un alto grado de precisin en los movimientos a realizar. Aunque la precisin final de este tipo de motores, depende de las caractersticas del mismo, a continuacin ofrecemos un pequeo diseo para poder controlar un motor paso-paso de forma sencilla.

Para la realizacin del mismo se ha contado con un motor paso-paso de la Casa PHILIPS modelo PAP 9904 112 35314 y de un integrado especial para su control el SAA1027, ambos componentes se pueden encontrar en el mercado fcilmente. Descripcin de las patillas de control: patilla T: A esta patilla se le introducen pulsos generados externamente, como consecuencia de estos pulsos el motor comenzar a girar, hay que tener en cuenta que la frecuencia de los pulsos nos determinar la velocidad del motor, y que el nmero de pulsos entrados es igual al nmero de pasos o posiciones que avanzar el motor. Patilla R: La misin de esta patilla es controlar el sentido del giro del motor paso-paso as obtendremos que: para R= "1 lgico" , el motor gira en sentido antihorario. para R= "0 lgico", el motor gira en sentido horario. Patilla S: Esta patilla nos permite habilitar el integrado, esto quiere decir que si introducimos un 1 lgico por S el integrado responder a las patillas de entrada, mientras que si mantenemos un 0 lgico es S el integrado no responder a ninguna seal de control. Como comentario, me gustara destacar que si en el mercado no podis encontrar el modelo de motor paso-paso indicado en el esquema, no os preocupis, podis utilizar cualquier motor pero respetando las siguientes condiciones: - Que su tensin de alimentacin sea de 12V - Que sea un motor de 4 bobinas. Por ltimo incluyo en el informe las caractersticas tcnicas del motor PAP 9904 112 32001; - Consumo: 2 W - ngulo de paso: 7 30 - Tolerancia por paso: +- 40 - Pasos por revolucin: 48

En todas aquellas aplicaciones industriales en donde se requiera un posicionado de una pieza, embolo, vlvula, en forma rpida y precisa; el motor de paso constituye un elemento idneo por su elevada ergonoma. Los motores de paso tambin conocidos como stepper motor pueden girar un ngulo preciso llamado paso como resultado de la aplicacin de pulsos en sus entradas. La rotacin angular puede ser horaria o antihoraria dependiendo del orden de la secuencia de pulsos aplicados a sus bobinas. Su principio de funcionamiento esta basado en leyes de atraccin y repulsin magntica. Existen motores de 400 pasos la cual corresponde un ngulo de paso de 0.9 grados; tambin de 1.8, 7.5grados, etc. Aplicaciones Taxmetros. Disk-drive. Impresoras. Plotters. Brazo y Robots completos. Patrn mecnico de velocidad angular. Registradores XY. Relojes Elctricos. Casetes Digitales. Control Remoto. Maquinas de escribir electrnicas. Manipuladores. Posicionamiento de vlvulas en controles industriales. Posicionamientro de piezas en general. Bombas impelentes en aplicaciones de electromedicina.

Tipos Existen diferentes tipos de motor de paso: Imn Permanente. Reluctancia variable.

Hbridos.

Caractersticas Larga vida. Velocidad de respuesta elevada (<1ms). Posicionamiento dinmico preciso. Reinicializacin a una posicin preestablecida. Frecuencia de trabajo variable. Funcionamiento sincrnico bidireccional. Sincronismo unidireccional en rgimen de sobrevelocidad. Carencia de escobillas. Insencibilidad al choque en rgimen dinmico, a la regulacin de la fuente de alimentacin. 3. PROCEDIMIENTO Programa El programa de control ser editado en C++ o Turbo Pascal, que contiene un men de opciones por ejecutar. Circuito de Interfase El circuito de Interfase o etapa de potencia tiene dos opciones: circuitos con transistores y circuito con configuracin Darligton. Puede escogerse el mas adecuado para su motor. En esta prctica se usar el circuito con transistores, para dicho efecto arme el circuito de la figura. Efecte las conexiones necesarias al sistema de control, mediante el puerto paralelo, para lo cual debe identificarse los respectivos pines conectores.

Programa de control en el Microcomputador

Cargue y corra el programa de control que deber estar editado en C++ o Turbo Pascal y que debe contener un men de opciones mnimas: NUMERO DE PASOS DEL MOTOR, SECUENCIAS DE FASES, PASOS A LA IZQUIERDA, PASOS A LA DERECHA, TERMINAR, as como una presentacin personalizada por el estudiante.

4. DESARROLLO DE LAS PREGUNTAS A. Presente el programa fuente de control del motor de paso, impreso y en diskett. //Programa de control de motor de paso en C++// #include <process.h> #include <dos.h> #include <stdio.h> #include <conio.h> #include <iostream.h> #include <graphics.h> #include <stdlib.h> int pasos,n,m,tiempo=1000; char sentido; void presentacion() { do{ int i; for (i=0;i<50;i++) {

setcolor(i); ellipse(70,100,0,360,i,50-i); setcolor(50-i); ellipse(70,100,0,360,50-i,i); circle(70,100,i); setcolor(0); circle(70,100,50-i); delay(10); } setcolor(3); rectangle(130,50,610,180); rectangle(131,51,611,181); settextstyle(0, 0, 0); setcolor(15); outtextxy(230,80,"UNIVERSIDAD NACIONAL DEL CALLAO"); outtextxy(180,100,"FACULTAD DEINGENIERIA ELECTRICA Y ELECTRONICA"); outtextxy(190,120,"ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA"); outtextxy(140,140,"LABORATORIO DE CONTROL DE PROCESOS Y ELECTRONICA APLICADA"); outtextxy(240,160,"*CONTROL DE MOTOR PASO A PASO*"); settextstyle(0, 0, 1); setcolor(9); rectangle(160,200,560,320); rectangle(161,201,561,321); setcolor(15); outtextxy(180,220,"1.APONTE VALVERDE LINCOLN 952541-J "); outtextxy(180,240,"2.CONDE QUISPE FRANK 952563-C "); outtextxy(180,260,"3.SANDOVAL VALVERDE PERCY 952547-H "); outtextxy(180,280,"4.VALER SEHUIN ORLANDO 952540-F "); } while(~kbhit()); } void menu() { int y=270; int x=60; setcolor(12);circle(90,200,49);circle(90,200,48); setcolor(14);circle(90,200,50); setcolor(12);circle(90,200,51);circle(90,200,52); outtextxy(60,200,"MOTOR PP"); rectangle(50,260,130,280);rectangle(51,259,131,281); setcolor(10); circle(x,y,5);

circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); dibujo: int d; for (d=290;d<350;d++) {setcolor(5); rectangle(200,290,390,d); } menu: for(d=200;d<=390;d++) {setcolor(5); rectangle(200,270,d,290); } setcolor(15); rectangle(200,100,600,265); outtextxy(350,120,"* MENU *"); outtextxy(220,150,".1. NUMERO DE PASOS DEL MOTOR"); outtextxy(220,170,".2. SECUENCIA DE FASE"); outtextxy(220,190,".3. PASOS A LA DERECHA"); outtextxy(220,210,".4. PASOS A LA IZQUIERDA"); outtextxy(220,250,".5. TERMINAR"); rectangle(200,270,400,360); outtextxy(220,276,"opcion : "); char opcion; textcolor(5); gotoxy(38,18);cin>>opcion; setcolor(5); circle(500,150,5); circle(500,170,5); circle(500,190,5); circle(500,210,5); circle(500,230,5); switch(opcion){ case '1':{//numero de pasos setcolor(12); circle(500,150,5); setcolor(15); outtextxy(210,292,"numero de pasos : "); gotoxy(45,19);cin>>pasos; variable:

outtextxy(210,320,"sentido <D><I>"); outtextxy(210,340,"sentido: "); gotoxy(38,22);cin>>sentido; switch(sentido){ case 'D': {do{ n++; pasos--; if (n==5) n=1; if (n==1) { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,1); setcolor(14); circle(x,y,5);} if (n==2) { setcolor(10); circle(x,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,2); setcolor(14); circle(x+20,y,5);} { setcolor(10); circle(x+20,y,5); circle(x,y,5); circle(x+60,y,5); outportb(0X378,4); setcolor(14); circle(x+40,y,5);} { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x,y,5); outportb(0X378,8); setcolor(14); circle(x+60,y,5);} delay(tiempo); gotoxy(45,19);cout<<pasos; }while(pasos!=0);

if (n==3)

if (n==4)

}break; case 'd': {do{ n++; pasos--; if (n==5) if (n==1)

n=1; { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,1); setcolor(14); circle(x,y,5);}

if (n==2) { setcolor(10); circle(x,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,2); setcolor(14); circle(x+20,y,5);} { setcolor(10); circle(x+20,y,5); circle(x,y,5); circle(x+60,y,5); outportb(0X378,4); setcolor(14); circle(x+40,y,5);} { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x,y,5); outportb(0X378,8); setcolor(14); circle(x+60,y,5);} delay(tiempo); gotoxy(45,19);cout<<pasos; }while(pasos!=0); }break;

if (n==3)

if (n==4)

case 'I': {do{ n--; pasos--; if (n==0) n=4; if (n==-1) n=4; if (n==1) { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,1); setcolor(14); circle(x,y,5);} if (n==2) { setcolor(10); circle(x,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,2); setcolor(14); circle(x+20,y,5);} { setcolor(10); circle(x+20,y,5); circle(x,y,5); circle(x+60,y,5); outportb(0X378,4); setcolor(14); circle(x+40,y,5);} { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x,y,5); outportb(0X378,8); setcolor(14); circle(x+60,y,5);} delay(tiempo); gotoxy(45,19);cout<<pasos; }while(pasos!=0); }break; case 'i': {do{

if (n==3)

if (n==4)

n--; pasos--; if (n==0) n=4; if (n==-1) n=4; if (n==1) { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,1); setcolor(14); circle(x,y,5);} if (n==2) { setcolor(10); circle(x,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,2); setcolor(14); circle(x+20,y,5);} { setcolor(10); circle(x+20,y,5); circle(x,y,5); circle(x+60,y,5); outportb(0X378,4); setcolor(14); circle(x+40,y,5);} { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x,y,5); outportb(0X378,8); setcolor(14); circle(x+60,y,5);} delay(tiempo); gotoxy(45,19);cout<<pasos; }while(pasos!=0); }break; default :goto variable;

if (n==3)

if (n==4)

} };goto dibujo; case '2':{ //fases setcolor(12); circle(500,170,5); n=0; do{ n++; if (n==1)

{ setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,1); setcolor(14); circle(x,y,5);}

if (n==2) { setcolor(10); circle(x,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,2); setcolor(14); circle(x+20,y,5);} { setcolor(10); circle(x+20,y,5); circle(x,y,5); circle(x+60,y,5); outportb(0X378,4); setcolor(14); circle(x+40,y,5);} { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x,y,5); outportb(0X378,8); setcolor(14); circle(x+60,y,5);} delay(tiempo);

if (n==3)

if (n==4)

}while(n!=5); n=4; };goto menu; case '3':{ //pasos a la derecha setcolor(12); circle(500,190,5); setcolor(15); do{ n++; if (n==5) n=1; if (n==1) { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,1); setcolor(14); circle(x,y,5);} if (n==2) { setcolor(10); circle(x,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,2); setcolor(14); circle(x+20,y,5);} { setcolor(10); circle(x+20,y,5); circle(x,y,5); circle(x+60,y,5); outportb(0X378,4); setcolor(14); circle(x+40,y,5);} { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x,y,5); outportb(0X378,8); setcolor(14); circle(x+60,y,5);}

if (n==3)

if (n==4)

delay(tiempo); }while(!kbhit()); };goto menu; case '4':{ //pasos a la izquierda setcolor(12); circle(500,210,5); setcolor(15); do{ n--; if (n==-1) n=4; if (n==0) n=4; if (n==1) { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,1); setcolor(14); circle(x,y,5);} if (n==2) { setcolor(10); circle(x,y,5); circle(x+40,y,5); circle(x+60,y,5); outportb(0X378,2); setcolor(14); circle(x+20,y,5);} { setcolor(10); circle(x+20,y,5); circle(x,y,5); circle(x+60,y,5); outportb(0X378,4); setcolor(14); circle(x+40,y,5);} { setcolor(10); circle(x+20,y,5); circle(x+40,y,5); circle(x,y,5); outportb(0X378,8); setcolor(14); circle(x+60,y,5);}

if (n==3)

if (n==4)

delay(tiempo); }while(!kbhit()); };goto menu; case '5': { outportb(0x378,0); exit(0); } default: goto menu; } } void main() { clrscr(); outportb(0x378,0); int gdriver = DETECT, gmode, errorcode; int midx, midy; initgraph(&gdriver, &gmode," c:\borlandc\bgi\egavga.bgi"); errorcode = graphresult(); directvideo=0; if (errorcode != grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } setbkcolor(5); presentacion(); for (int j=1;j<=getmaxx();j++) { setcolor(5); rectangle(j,1,getmaxx(),getmaxy()); } n=0; menu();closegraph(); } B. Presente otro programa editado en C++ o Turbo Pascal donde se use otras tcnicas de control para el motor de paso. Considere una mejora en la presentacin grafica y en el men de opciones. program MOTORPASO A PASO; {EN TURBO PASCAL} USES CRT; VAR OPC:CHAR;

retardo,pasos,a,b,c,d,i:integer; const puerto=$378; BEGIN CLRSCR; TEXTBACKGROUND(blue); TEXTCOLOR(green); gotoxy( 16,2);writeln('UNIVERSIDAD NACIONAL DEL CALLAO'); gotoxy( 12,3);writeln('FACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA'); gotoxy( 13,5);writeln('ESCUELA PROFESIONAL DE INGENIERIA ELECTRICA '); gotoxy( 7,8);writeln('LABORATORIO DE CONTROL DE PROCESOS Y ELECTRONICA INDUSTRIAL'); gotoxy( 17,10);writeln('CONTROL DE MOTOR DE PASOS MEDIANTE PC'); gotoxy( 17,12);write('APONTE VALVERDE LINCOLN 952541-J'); gotoxy( 17,14);write('CONDE QUISPE FRANK 952563-C'); gotoxy( 17,16);write('SANDOVAL VALVERDE PERCY 952547-H'); gotoxy( 17,18);write('VALER SEHUIN ORLANDO 952540-F'); READKEY; REPEAT CLRSCR; TEXTBACKGROUND(blue); TEXTCOLOR(green); GOTOXY(19,2);WRITELN(' MOTOR DE PASOS'); GOTOXY(19,3);WRITELN('---------------------------------'); GOTOXY(19,4);WRITELN('DERECHA ......................D'); GOTOXY(19,5);WRITELN('IZQUIERDA.....................I'); GOTOXY(19,6);WRITELN('PARADA........................P'); GOTOXY(19,7);WRITELN('SALIR.........................S'); GOTOXY(19,8);WRITELN('--------------------------------'); GOTOXY(19,10);WRITE('ESCOJA UNA OPCION');READKEY; OPC:=UPCASE(READKEY); CASE OPC OF 'D' : BEGIN repeat CLRSCR; GOTOXY(8,10);write('GIRO A LA DERECHA'); GOTOXY(8,12);write('Ingrese el numero de pasos = ');readln(pasos); GOTOXY(8,14);write('Ingrese el retardo = ');readln(retardo); GOTOXY(8,16);write('Ingrese el primer numero = ');readln(a); GOTOXY(8,18);write('Ingrese el segundo numero = ');readln(b); GOTOXY(8,20);write('Ingrese el tercer numero = ');readln(c); GOTOXY(8,22);write('Ingrese el cuarto numero = ');readln(d); i:=0; repeat GOTOXY(8,10);write('GIRO A LA DERECHA'); Port[puerto]:=a; DELAY(retardo);

Port[puerto]:=b; DELAY(retardo); Port[puerto]:=c; DELAY(retardo); Port[puerto]:=d; DELAY(retardo); i:=i+1; UNTIL i>pasos; clrscr; gotoxy(8,12);write('Para continuar presione una tecla, para salir presione esc');readkey; until readkey=#27; END; 'I': BEGIN repeat CLRSCR; GOTOXY(8,10);write('GIRO A LA IZQUIERDA'); GOTOXY(8,12);write('Ingrese el numero de pasos = ');readln(pasos); GOTOXY(8,14);write('Ingrese el retardo = ');readln(retardo); GOTOXY(8,16);write('Ingrese el primer numero = ');readln(a); GOTOXY(8,18);write('Ingrese el segundo numero = ');readln(b); GOTOXY(8,20);write('Ingrese el tercer numero = ');readln(c); GOTOXY(8,22);write('Ingrese el cuarto numero = ');readln(d); i:=0; repeat GOTOXY(8,10);write('GIRO A LA IZQUIERDA'); Port[puerto]:=a; DELAY(retardo); Port[puerto]:=b; DELAY(retardo); Port[puerto]:=c; DELAY(retardo); Port[puerto]:=d; DELAY(retardo); i:=i+1; UNTIL i>pasos; clrscr; gotoxy(8,12);write('Para continuar presione una tecla, para salir presione esc');readkey; until readkey=#27; END; 'P' :BEGIN REPEAT CLRSCR; GOTOXY(10,20);writeln('PARAR'); GOTOXY(10,23);writeln('PRESIONE UNA TECLA PARA CONTINUAR...'); Port[puerto]:=0; DELAY(1000);

'S' END; UNTIL (READKEY= 'S') OR (READKEY= 's') ; end.

UNTIL KEYPRESSED; END; : EXIT;

Das könnte Ihnen auch gefallen