-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
Director de la obra: Ingeniero EDUARDO RINCON
Autores:
GONZALEZ ACUA HERNAN
JIMNEZ PINILLA LUZ ANGELA
JURADO SALCEDO JAVIER EDUARDO
MORALES TAVERA MAGDA JUDITH
VESLIN DIAZ ELKIN YESID
Es propiedad. Reservados todos los derechos para
La reproduccin total o parcial de esta obra por
Cualquier sistema electrnico o mecnico sin
Autorizacin expresa de los autores.
MANUAL DE PRACTICAS DE PUERTO PARALELO 1
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
"El cientfico no estudia la naturaleza porque sea til; la estudia
porque se deleita en ella, y se deleita en ella porque es hermosa.
Si la naturaleza no fuera bella, no valdra la pena conocerla, y si
no ameritara saber de ella, no valdra la pena vivir la vida."
Henri Poincair
MANUAL DE PRACTICAS DE PUERTO PARALELO 2
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
PREFACIO
Este libro se enfoca en la enseanza de forma autodidctica sobre el puerto
paralelo del computador.
La distribucin temtica de este, esta de tal forma que encontrar
descripciones de cada elemento a utilizar, ejercicios descritos y propuestos
que abarcan los temas necesarios para una perfecta utilizacin del puerto.
El anexo principal de este libro es un diskette donde encontrara los cdigos
fuentes de las diferentes actividades que se mencionan. este cdigo se
encuentra en el lenguaje de programacin de c++.
Es nuestro mas sincero deseo que esta obra sea til en su proceso de
aprendizaje, hacindolo agradable y emocionante. bienvenido (s).
PREFACIO 3
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
OBJETIVOS
Brindar una presentacin clara y lgica de los conceptos y principios bsicos
de la programacin enfocada en la utilizacin del puerto paralelo de la PC.
Facilitar la consulta de las diferentes aplicaciones y modos de empleo del
puerto paralelo en circuitos electrnicos sencillos.
Al finalizar este curso, aspiramos que usted tenga bases suficientemente
slidas para manejar datos a traves del puerto paralelo, con las cuales pueda
desarrollar proyectos que involucren las diferentes lineas disiplinarias de su
carrera.
OBJETIVO 5
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
AL ESTUDIANTE
Consideramos conveniente advertir que nosotros los autores no nos
hacemos responsables por el uso del material presentado. El libro ha sido
diseado como una gua de uso de dispositivos electrnicos elementales sin
involucrar clculos de ninguna naturaleza.
Los circuitos y programas presentes en este han sido probados y funcionan a
cabalidad, pero cualquier modificacin o uso comercial de los mismos es
responsabilidad nica del lector.
CONCEPTOS Y PRINCIPIOS
Este proyecto busca unificar los principios bsicos de los temas y sus
correspondientes aplicaciones del puerto paralelo para que de esta manera
sirva como herramienta de consulta para los estudiantes que lo requieran.
Debido a la poca confiabilidad de la referencia disponible en Internet, nos fue
necesario comprobar en la prctica toda la informacin aqu expuesta, para
poder dar fe de su veracidad.
Este texto busca solucionar el mal funcionamiento de los diferentes
proyectos integradores, los cuales se frustran por el mal aprovechamiento del
puerto paralelo.
El texto es parte de un proyecto integrador, que utiliza la estrategia
implementada en el Semillero de Investigaciones de la Facultad de Ingeniera
Mecatrnica. Nuestro Semillero hace su aporte al estudio de la ingeniera
CONCEPTOS Y PRINCIPIOS 7
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
con este trabajo que refleja la unidad del grupo, la reunin de sus
experiencias y la investigacin cientfica.
CONCEPTOS Y PRINCIPIOS 8
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
I. MOTORES
En este captulo, encontraremos cualquier inquietud acerca del movimiento de motores; tanto de corriente continua (motores CD) como de paso (motores PAP). Teniendo en cuenta que se utilizarn conceptos anteriormente estudiados para la aplicacin y desarrollo a lo largo de este tema. La importancia del manejo de estas dos clases de motores radica en una buena interpretacin, analizando como se comportan los motores segn los datos que se le envan al puerto para el movimiento de estos; consiguiendo as un sinfn de aplicaciones que mostraremos a lo largo del captulo.
OBJETIVO Mover motores CD y PAP, utilizando los programas planteados en el captulo de diversas maneras para lograr un sinnmero de aplicaciones.
1) LISTA DE MATERIALES 1 Circuito integrado LB1649. 1 Compuerta Negadora CI 74LS04. 2 Motores CD (que necesiten entre 5V y 12 V). Cable para protoboard. 1 Fuente 5v para la negadora. 1 Fuente variable segn el voltaje del motor.
1. MOTOR PASO A PASO (PAP)
Los motores paso a paso o simplemente PAP, son un tipo especial de motores que permiten el avance de su eje en ngulos muy precisos y por pasos en las dos posibles direcciones de movimiento, izquierda o derecha. Aplicando a ellos una determinada secuencia de seales digitales, avanzan por pasos hacia un lado u otro y se detienen exactamente en una determinada posicin. Cada paso tiene un ngulo muy preciso, determinado por la construccin del motor.
A un motor paso a paso se le puede ordenar, que avance cinco o diez pasos hacia delante, luego un determinado nmero de pasos hacia atrs o simplemente que no gire. Este sistema a simplificado enormemente la implementacin de automatismos y las aplicaciones de la robtica.
PARMON MONITOR DEL PUERTO PARALELO
9
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
Debido a estas ventajas, tienen una gran variedad de aplicaciones dentro de las cuales se podran mencionar las siguientes: Mquinas herramientas, robots, impresoras para computador, graficadoras (Plotters), mquinas de coser, unidades de disco, registradoras, telefax, manejo de vlvulas, posicionamiento de mecanismos en general, etc.
FUNCIONAMIENTO DEL MOTOR PASO A PASO
El funcionamiento de los motores paso a paso se basa en el simple principio de atraccin y repulsin que ocurre entre los polos magnticos. Como ya sabemos, un imn tiene dos polos llamados Norte y Sur. El principio bsico del magnetismo establece que polos iguales se repelen y polos diferentes se atraen.
En cuanto a la forma de conexin y excitacin de las bobinas los motores PAP se dividen en dos tipos: unipolares y bipolares. En los unipolares hay dos bobinas y tienen toma media, es decir tienen seis terminales. Los bipolares tienen dos bobinas sin toma media, es decir, tienen cuatro terminales.
LISTA DE MATERIALES
4 Transistores Ref. TIP 41C. 4 Diodos 1N4001. 4 Diodos emisores de luz. 4 Resistencias de 1K . Una negadora CI7404. Cable para protoboard. Un motor paso a paso de 6 cables (voltaje entre 5 y 14 voltios). 1 fuente de variable 5 voltios para la negadora. 1 fuente para el motor paso a paso.
PARMON MONITOR DEL PUERTO PARALELO
10
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
DIAGRAMA ELECTRNICO
13 12 11 10 9 8 7 6 5 4 3 2 1
25 24 23 22 21 20 19 18 17 16 15 14
14
13
12
11
10
9
8
1
2
3
4
5
6
7
MOTORPAP
VCC +VCC
+VCC
74LS04
+VCC
1 K 1 K 1 K 1 K
TIP 41CTIP 41CTIP 41CTIP 41C
Figura N 20
PARMON MONITOR DEL PUERTO PARALELO
11
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
PRACTICAS PRACTICA N1. Programa para hacer girar un motor PAP en un solo sentido.
CDIGO FUENTE (PAP1.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto; /*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7; /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/
const int retardo=200; int dato,paso;
void main () /* FUNCION PRINCIPAL */ { clrscr (); printf ("PROGRAMA PARA HACER GIRAR UN MOTOR PAP EN UN SOLO SENTIDO.\n\n"); printf("Presione una tecla para terminar.\n"); paso=1; /*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ do { switch (paso) { case 1: dato=paso1; break; /*CICLO DEL MOTOR*/ case 2: dato=paso2; break; case 3: dato=paso3; break; case 4: dato=paso4; break; } dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO NECESITEMOS ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO*/ delay(retardo); /*DETERMINA EL TIEMPO ENTRE PASO Y PASO*/ paso=paso+1; if (paso>4) /*PARA VOLVER A COMENZAR EL CICLO*/ { paso=1; } } while (!kbhit()); outportb(DATA,15); /*DEJA TODAS LAS SALIDAS EN CEROS*/ }
PARMON MONITOR DEL PUERTO PARALELO
12
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
PRACTICA N2. Programa para cambiar el sentido de giro de un motor PAP manteniendo una tecla presionada.
CDIGO FUENTE(PAP2.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /* DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto; /*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7; /*00000111*/ paso2 = 11; /*00001011*/ paso3 = 13; /*00001101*/ paso4 = 14; /*00001110*/ const int retardo=5; int dato,paso; char tec; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf ("PROGRAMA PARA CAMBIAR EL SENTIDO DE GIRO DE UN MOTOR PAP\n\n"); printf("Mover a la derecha [D].\n"); printf("Mover a la izquierda [I].\n"); printf("Salir del programa [ESC].\n"); printf("\nPARA CONSERVAR EL MOVIMIENTO DE UN MOTOR MANTENGA LA TECLA PRESIONADA\n"); paso=1; /*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ do { tec=getch(); /*ALMACENA EL VALOR DE LA TECLA PRESIONADA*/ switch(tec) { case 'd': case 'D':paso=paso+1; /*AUMENTA EL PASO*/ if (paso>4) { paso=1; } break; case 'i': case 'I': paso=paso-1; /*DISMINUYE EL PASO*/ if (paso
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
} dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO NECESITEMOS ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO*/ delay(retardo); /*DETERMINA EL TIEMPO ENTRE PASO Y PASO*/ } while (tec!=27); outportb(DATA,15); /*DEJA TODAS LAS ENTRADAS EN CEROS*/ }
PRACTICA N3.Programa para cambiar el sentido de giro de un motor.
CDIGO FUENTE (PAP3.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /* DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto; /*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/ const int retardo=200; int dato,paso,inc; char tec; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf("PROGRAMA PARA CAMBIAR EL SENTIDO DE GIRO DE UN MOTOR PAP\n\n"); printf("Mover a la derecha [D]\n"); printf("Mover a la izquierda [I]\n"); printf("Parar el Motor [P]\n"); printf("Salir del programa [ESC]\n"); paso=1; /*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ inc=0; do { if (kbhit()) { tec=getch(); /*ALMACENA EL VALOR DE LA TECLA PRESIONADA*/ } switch(tec) { /*INCREMENTO DEL MOVIMIENTO SEGUN LA DIRECCION*/ case 'd': case 'D' inc=1;break; case 'i': case 'I': inc=-1;break; case 'p': case 'P':inc=0; break; }
PARMON MONITOR DEL PUERTO PARALELO
14
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
paso=paso+inc; if (paso>4) { paso=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (paso
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
printf("DIGITE 0 PARA TERMINAR.\n"); scanf("%d",&n); paso=1; /*VARIABLE QUE SE ENCARGA DEL MOVIMIENTO DEL MOTOR*/ while (n!=0) { cont=0; /*CONTADOR DE LOS PASOS QUE SE PIDEN*/ tec=0; do { switch (paso) /*CICLO DEL MOTOR*/ { case 1: dato=paso1; break; case 2: dato=paso2; break; case 3: dato=paso3; break; case 4: dato=paso4; break; } dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO
NECESITEMOS ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO*/ delay(retardo); /*DETERMINA EL TIEMPO ENTRE PASO Y PASO*/ paso=paso+1; /*AUMENTA EL PASO*/ cont=cont+1; /*AUMENTA EL CONTADOR DE PASOS*/ gotoxy(50,10); /*AJUSTA LA POCISION DEL TEXTO EN PANTALLA */ printf("PASOS= %5d",cont); /*IMPRIME LOS PASOS EN CUANTO LOS VA DANDO*/ if (pa0o>4) /*EVITA QUE SE PASE DEL TOPE*/ { paso=1; } if (kbhit()) /*SI OPRIMIMOS UNA TECLA*/ { tec=getch(); /*SE ALMACENA EN TEC*/ } } while((cont
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
CDIGO FUENTE (PAP5.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408; /*DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto;/*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14, /*00001110*/ paso5 = 112, /*01110000*/ paso6 = 176, /*10110000*/ paso7 = 208, /*11010000*/ paso8 = 224; /*11100000*/ const int retardo=200; int dato,datoa,datob,pasoa,pasob,inc1,inc2; char tec; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf("PROGRAMA QUE CONTROLA DOS MOTORES PAP INDEPENDIENTEMENTE\n\n"); printf("Mover a la derecha el motor 1 pulse [D]\n"); printf("Mover a la izquierda el motor 1 pulse [I]\n"); printf("Parar el Motor 1 [P]\n"); printf("Mover a la derecha el motor 2 pulse [X]\n"); printf("Mover a la izquierda el motor 2 pulse [Y]\n"); printf("Parar el Motor 2 pulse [Z]\n"); printf("Salir del programa [ESC]\n"); printf("DIGITE SU OPCION: "); pasoa=1; pasob=1;/*VARIABLE QUE SE ENCARGA DE DEFINIR EL MOVIMIENTO DEL MOTOR*/ inc1=0; inc2=0; do { if (kbhit()) { tec=getch(); /*ALMACENA EL VALOR DE LA TECLA PRESIONADA*/ } switch(tec) { case 'd': case 'D': inc1=1;break; /*INCREMENTO DEL MOVIMIENTO SEGUN LA DIRECCION*/ case 'i': case 'I': inc1=-1;break; case 'p': case 'P':inc1=0;break; case 'x': case 'X': inc2=1;break; /*INCREMENTO DEL MOVIMIENTO SEGUN LA DIRECCION*/ case 'y': case 'Y': inc2=-1;break; case 'z': case 'Z':inc2=0;break;
PARMON MONITOR DEL PUERTO PARALELO
17
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
} pasoa=pasoa+inc1; if (pasoa>4) { pasoa=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (pasoa4) { pasob=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (pasob
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
Intente manejar diferentes salidas del puerto para agilizar la comprensin de datos.
Imagine una grua la cual debe ser muy exacta, tanto al coger como al depositar un objeto en un sitio determinado. Por esto necesitamos disear un programa que desarrolle este proceso en diferentes tiempos predeterminados.
PRACTICAS DE REFUERZO
PRACTICA No.1 Programa para hacer girar un motor PAP y un CD constantemente en un solo sentido.
CDIGO FUENTE (PAPYCD.CPP) #include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408;/*DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto;/*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/ const int retardo=200; int dato,paso; void main () /* FUNCION PRINCIPAL */ { clrscr (); printf ("PROGRAMA PARA HACER GIRAR UN MOTOR PAP Y UN CD CONSTANTEMENTE EN UN SOLO SENTIDO\n"); printf("Presione una tecla para terminar.\n"); paso=1; /*VARIABLE QUE SE ENCARGA DEL MOVIENTO DEL MOTOR*/ do { switch (paso) /*CICLO DEL MOTOR*/ { case 1: dato=paso1; break; case 2: dato=paso2; break; case 3: dato=paso3; break; case 4: dato=paso4; break; } dato=(inportb(DATA)&240)|dato; /*EVITA QUE UN BIT QUE NO NECESITEMOS
ESTE ACTIVADO*/ outportb(DATA,dato); /*MANDA EL DATO DEL PAP*/ dato=dato | 16; /*COMBINA LOS DATOS DEL PAP Y EL CD*/ outportb(DATA,dato); /*MANDA DATO ACTUALIZADO*/ delay(retardo); /*TIEMPO ENTRE PASO Y PASO*/ paso=paso+1; /*AUMENTA EL CONTADOR DE PASOS*/ if (paso>4) /*EVITA QUE SE PASE DEL TOPE*/ { paso=1;
PARMON MONITOR DEL PUERTO PARALELO
19
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
} } while (!kbhit()); outportb(DATA,63); }
PRACTICA N2. Programa para mover un motor CD y un PAP independientemente.
CDIGO FUENTE (CDYPAP.CPP) include #include #include unsigned int far *dirpuerto = (unsigned int far *) 0x00000408;/*DIRECCION DEL PUERTO*/ const unsigned int DATA = *dirpuerto;/*NOMBRA A DATA COMO PUERTO DE ENTRADA*/ const int paso1 = 7, /*00000111*/ paso2 = 11, /*00001011*/ paso3 = 13, /*00001101*/ paso4 = 14; /*00001110*/ const int retardo =200; int dato,paso,inc,cd,stop; char tec; void main () /*FUNCION PRINCIPAL*/ { clrscr (); printf("PROGRAMA PARA MOVER UN MOTOR CD Y PAP INDEPENDIENTEMENTE.\n\n"); printf("Para mover el motor PAP a la derecha presione [D].\n"); printf("Para mover el motor PAP a la izquierda presione [I].\n"); printf("Para parar el motor PAP presione [P].\n"); printf("Para mover el motor CD a la derecha presione [X].\n"); printf("Para mover el motor CD a la izquierda presione [Y].\n"); printf("Para parar el motor CD presione [Z].\n"); printf("Para salir presione [ESC].\n\n"); printf("ESCOJA SU OPCION:"); do { if (kbhit()) /*SI SE OPRIME UNA TECLA*/ { tec = getch(); /*LA TECLA PRESIONADA SE ALMACENA EN TEC*/ } switch (tec) { case 'D': case 'd': inc=1;break; case 'I': case 'i': inc=-1;break; case 'P': case 'p': inc=0; break; case 'X': case 'x': cd=16;break; case 'Y': case 'y': cd=32;break; case 'Z': case 'z': cd=0; break; } paso=paso+inc; if (paso>4)
PARMON MONITOR DEL PUERTO PARALELO
20
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
{ paso=1; /*EVITA QUE EL PASO SEA MAYOR DE LOS LIMITES*/ } else { if (paso
-
MANUAL DE PRCTICAS DE PUERTO PARALELO
SEMILLERO DE INVESTIGACIN EN INGENIERIA MECATRNICA
CONTENIDO
I. MOTORES 9
OBJETIVO 9 1) LISTA DE MATERIALES 9 1. MOTOR CD (CORRIENTE CONTINUA) ERROR! MARCADOR NO DEFINIDO. 2) PRACTICAS ERROR! MARCADOR NO DEFINIDO. 2. MOTOR PASO A PASO (PAP) 9 LISTA DE MATERIALES 10 DIAGRAMA ELECTRNICO 11 PRACTICAS 12
CONTENIDO
22