Usando el Puerto Paralelo

para controlar un Motor  PAP

 

Aquí vamos a ver como usar, el puerto paralelo, para controlar un Motor PAP, para simular este tutorial, voy a usar Proteus Lite, con la Librería LPT02.lib y el Modelo Port.dll, que ya los he usado antes, en el anterior tutorial de cómo usar el Puerto Paralelo.

Este los puedes bajar de Aquí

Los Motores PAP funcionan secuencialmente, es decir hay que darles una secuencia de Bits para se muevan.

Ahora los pasos, dependen del Motor. Si fueran de 90°,  Para darles :

Vuelta 360° a la Derecha                     : 0011, 0110, 1100, 1001

Vuelta 360° a la Izquierda                   : 1100, 0110, 0011, 1001

Paso a la Derecha                                : Roto a la Derecha.

Paso a la Izquierda                              : Roto a la Izquierda.

 

Ahora para simular el Esquema anterior hecho en Proteus – Isis, debemos tener un programa. En este caso, lo voy hacer en Visual C++, pero en modo consola.

El código del programa es el siguiente

 

//Prueba1.cpp

//Encabezados

#include<conio.h>

#include<windows.h>

#include<iostream.h>

 

/* ----Prototipo de Inp y  Outp--- */

short _stdcall Inp32(short PortAddress);

void _stdcall Out32(short PortAddress,short data);

/*--------------------------------*/

/*------Prototipo de mis Funciones------*/

void PrintMenu (void);

/*--------------------------------*/

void main(void){

            //declaro mis variables

            short port,dato;

            int i;

            char opcion;

 

            port=0x378;

            //como dato es Word, declaro los bits

            //de tal manera q al rotar no cambien

            //y no tenga problemas en dar el Paso

            _asm mov dato,0011001100110011b

 

            PrintMenu();//Imprimo Mensaje en Pantalla

 

            //Creo un Bucle

            Out32(port,0x00);

            for(;;){

            opcion=_getch();//Elijo Opción

                        switch(opcion){

                        case '4'://Derecha Vuelta

                                               //Como paso de 90° son 4 rol

                                                for(i =0;i<4;i++) {

                                                _asm rol dato,1;

                                                Out32(port,dato);

                                                Sleep(500); }

                                               break;

                        case '6'://Izquierda Vuelta

                                               //Como paso de 90° son 4 Ror

                                               for(i =0;i<4;i++) {

                                               _asm ror dato,1;

                                               Out32(port,dato);

                                               Sleep(500); }

                                               break;

                        case '8'://Paso Derecha

                                               _asm rol dato,1

                                               Out32(port,dato);

                                               Sleep(500);

                                               break;

                        case '2'://Paso Izquierda

                                               _asm ror dato,1

                                               Out32(port,dato);

                                               Sleep(500);

                                               break;

                        case 0x1B :return;

                        }

                        //opcion= 0x00;

                        Out32(port,0x00);

            }

            return;

}

void PrintMenu(void){

            cout<<endl<<endl<<endl<<endl;

            cout<<"                         Vamos ha usar el Teclado Numerico"<<endl<<endl;

            cout<<"             Escoge Opcion :"<<endl;

            cout<<"             ============="<<endl<<endl;

            cout<<"                                                   [8]    "<<endl;

            cout<<"                                                [4]   [6]"<<endl;

            cout<<"                                                   [2] "<<endl<<endl;

            cout<<"             8: Izquierda un Paso"<<endl;

            cout<<"             2: Derecha un Paso"<<endl;

            cout<<"             4: Izquierda una vuelta"<<endl;

            cout<<"             6: Derecha una vuelta"<<endl;

            return;

}

 

Ahora Simulamos este Programa y Obtenemos:

 

Yoel Ocmin

   
yoelocmin@hotmail.com http://proyectosfie.com http://yoelocmin.tk
    UNMSM - LIMA - PERÚ

Miércoles, 19 de Julio de 2006 13:05:45