Check the new version here

Popular channels

Control de Motor por puerto LPT de 8 velocidades

Control de Motor por el puerto LPT con 8 velocidades

ENLACES ACTUALIZADOS

Electrónica con Enigma
Controla un motor en 8 velocidades por medio del puerto paralelo del PC


Este circuito permite controlar la velocidad incrementando (aumentar) o decrementando (disminuir) la velocidad de un motor en 8 niveles por medio de un programa escrito en computadora, a través del puerto paralelo de cualquier PC.

El aporte es fácil, es didáctico, este proyecto está basado en un decodificador demultiplexor que lo puedes modificar y adaptar a tu conveniencia, pude haber puesto un diagrama de bloques en vez del código fuente para que fuere más difícil y que solo quien conozca de programación y electrónica pueda realizarlo, mas lo que hice fue poner el código fuente y una explicación breve.

Sólo se usan 4 pines de salida, la mitad de los bits de sauda del puerto paralelo.

Obvio que si es lenguaje C funcionará en Linux o Windows porque el compilador tiene sus propias instrucciones que pueden adaptarse fácilmente, porque sólo son instrucciones básicas de ciclos FOR y condiciones While.

Creo suponer que la potencia dependerá de los integrados NE555, pero supongo que pueden adaptar transistores de potencia como los clasicos TIP clase B o C y colocarle un Diodo que proteja contra corrientes inversas y evite destruir el Integrado. Además es recomendable poner un buen disipador al transistor como lo indica la imagen.
También se puede usar un circuito tipo puente H para el motor en cuestión.

Los potenciómetros VR(n) sólo son para variar la velocidad nada más, éstos se pueden ajustar a conveniencia o si quieres precisión pues usa entonces resistencias de 150 Ohmios con 2% de tolerancia.

Se emplea para ello el puerto paralelo y el programa está escrito en lenguaje C que hace años compilé con Turbo C.

Funcionamiento:
Inicialmente cuando el motor está detenido ‘off,’ el programa te indica que presiones la tecla ENTER para que el motor empiece a funcionar.

Cuando presionas la tecla ENTER, el motor empieza a correr a toda su velocidad.

Segundos después el programa te pide que presiones cualquier tecla para entrar al programa de control.

Esta pantalla te muestra el control del motor: aumentar o disminuir la velocidad del motor o salir del programa.

Para aumentar la velocidad se presiona el número 1
Para disminuir la velocidad se presiona el número 2
Para confirmar se presiona la tecla ENTER

Estas acciones modifican la velocidad un paso a la vez al tiempo que te muestra el mensaje apropiado acorde a la opción elegida "Aumentando la velocidad" o "Disminuyendo la velocidad"

Diagrama:


Código fuente del programa:
[color=#000000]
//Enigmaelectronica
//Control de motores en 8 velocidades
//Enya Gata Hernandez (c) 2009
#include<stdio.h>
#include<conio.h>
int a[7],i,c;
void start(void);
void main(void)
{
int P=0x0378,j,c=7,c1,x,y;
clrscr();
outportb(P,0);
textbackground(9);
textcolor(3);
for(x=0;x<=80;x++)
for(j=0;j<=25;j++)
{
gotoxy(x,j);
cprintf(" ");
}
for(i=0;i<8;i++)
a[i]=i;
gotoxy(23,11);
printf("Presiona la tecla ENTER para encender el Motor");
getch();
gotoxy(28,13);
printf("Iniciando Motor, por favor espera...");
start();
gotoxy(25,15);
printf("Motor iniciado correctamente");
gotoxy(22,17);
printf("Presiona la tecla ENTER para iniciar");
getch();
while(1)
{
clrscr();
gotoxy(25,3);
for(j=0;j<79;j++)
{
gotoxy(j+1,2);
printf("*");
}
gotoxy(23,3);
printf("Control digita de motorrs DC by Enigma ");
for(j=0;j<79;j++)
{
gotoxy(j+1,4);
printf("*");
}
printf("n");
printf("ttt1.Incrementar Velocidadnttt2.Decrementar Velocidadnttt3.Salir") ;
for(j=0;j<79;j++)
{
gotoxy(j+1,8);
printf("*");
}
for(j=0;j<79;j++)
{
gotoxy(j+1,10);
printf("*");
}
gotoxy(1,9);
printf("Selecciona tu opcion:");
scanf("%d",&c1);
switch(c1)
{
case 1:if(c==7)
{
clrscr();
gotoxy(23,13);
printf("El motor esta a su maxima velocidad");
getch();
}
if(c<7)
{
clrscr();
c++;
outport(P,a[c]);
gotoxy(33,13);
printf("Velocidad incrementada un nivel");
getch();
}
break;
case 2: if(c==0)
{
clrscr();
gotoxy(23,13);
printf("El motor esta a minima velocidad");
getch();
}
if(c>0)
{
clrscr();
c--;
outport(P,a[c]);
gotoxy(33,13);
printf("Velocidad decrementada un nivel");
getch();
}
break;
case 3 :
for(j=c;j>=0;j--)
{
outportb(0X0378,j);
delay(100);
}
outportb(P,0);
clrscr();
gotoxy(17,13);
textcolor(2);
cprintf("Control de velocidades de motor - Enigma");
getch();
exit(1);
}
}
}
void start()
{
outportb(0x0378,0);
for(i=0;i<8;i++)
{
outportb(0X0378,i);
delay(1000);
}
}
[/color]


Aqui tienen la descripción del Integrado 74LS138 y su tabla de verdad:


Aqui tienen la captura del programa (lo tenía ahí y lo he compilado nuvamente)


En la fuente está el programa completo, el código fuente y el Exe para que prueben
0No comments yet