0% found this document useful (0 votes)
85 views2 pages

CI 5 DC Motor

This circuit allows controlling the speed of a DC motor from a PC's parallel port using a software program. The motor is connected to an interface circuit consisting of a decoder, inverters, resistors and a timer chip. The software uses pulse-width modulation to select a resistor and change the timer output, controlling motor speed in 8 levels. The user can start the motor, increase, decrease or exit the program by entering choices.

Uploaded by

Lokesh Kumar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
85 views2 pages

CI 5 DC Motor

This circuit allows controlling the speed of a DC motor from a PC's parallel port using a software program. The motor is connected to an interface circuit consisting of a decoder, inverters, resistors and a timer chip. The software uses pulse-width modulation to select a resistor and change the timer output, controlling motor speed in 8 levels. The user can start the motor, increase, decrease or exit the program by entering choices.

Uploaded by

Lokesh Kumar
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

CIRCUIT IDEAS

PC-BASED DC MOTOR SPEED CONTROLLER SAN


I THE
O

R. KARTHICK The resistor network comprising pre- The software (speedM.c) is written in
sets VR1 through VR8, resistors R1 and ‘C’ language and compiled using Turbo C

T
his circuit allows you to control the R2 and capacitor C1 are the timing com- compiler.
speed of a DC motor (in eight lev- ponents of timer IC 555 (IC4), which is Initially, when the motor is ‘off,’ the
els) from your PC’s parallel port. configured in astable mode. The output of program prompts you to press ‘Enter’ key
The PC uses a software program to con- IC4 is a square wave, which is fed to the to start the motor. Once you press the
trol the speed of the motor. base of transistor T1 via current-limiting key, the motor starts running at full speed.
The motor is connected to the PC resistor R3. Transistor T1 is used to drive After a few seconds, the program asks you
through an interface circuit. The interface the motor. to press any key from the keyboard to go

circuit consists of 1-of-8 decoder IC The pulse-width modulation (PWM) to the next screen for controlling the speed
74LS138 (IC1), hex inverter ICs 74LS04 method is used for efficient control of the of the motor. This screen has options for
(IC2 and IC3), resistor networks, timer IC motor. The output of the PC is decoded to increasing and decreasing the motor speed
555 (IC4) and motor driver transistor SL100 select a particular preset (VR1 through and also for exiting from the program. For
(T1). The decoder IC accepts binary VR8). The value of the selected preset, increasing the speed enter choice 1 and
weighted inputs A0, A1 and A2 at pins 1, along with resistors R1 and R2 and ca- press ‘Enter’ key, and for decreasing the
2 and 3, respectively. With active-low en- pacitor C1, changes the output pulse width speed enter choice 2 and press ‘Enter’ key.
able input pins 4 and 5 of the decoder at pin 3 of IC4. Thus the motor speed can This action changes the speed by one step
grounded, it provides eight mutually ex- be increased/decreased by choosing a par- at-a-time and the message “Speed de-
clusive active-low outputs (Q0 through ticular resistance. For high-power motors, creased” or “Speed increased” is displayed
Q7). These outputs are inverted by hex the transistor can be replaced by an IGBT on the screen. To go to the main menu,
inverters IC2 and IC3. or a power MOSFET. again press ‘Enter’ key.

SPEEDM.C
//R.KARTHICK,III ECE,K.L.N.C.E.,MADURAI clrscr(); }
//[email protected] outportb(P,0); for(i=0;i<8;i++)
#include<stdio.h> textbackground(9); a[i]=i;
#include<conio.h> textcolor(3); gotoxy(23,11);
int a[7],i,c; for(x=0;x<=80;x++) printf("Press Enter to start the motor");
void start(void); for(j=0;j<=25;j++) getch();
void main(void) { gotoxy(28,13);
{ gotoxy(x,j); printf("WAIT STARTING MOTOR");
int P=0x0378,j,c=7,c1,x,y; cprintf(" "); start();

JUNE 2004 ELECTRONICS FOR YOU


CIRCUIT IDEAS

gotoxy(25,15); gotoxy(1,9); outport(P,a[c]);


printf("Motor started sucessfully"); printf("Enter your choice:"); gotoxy(33,13);
gotoxy(22,17); scanf("%d",&c1); printf("SPEED DECREASED");
printf("Press any key for speed control"); switch(c1) getch();
getch(); { }
while(1) case 1:if(c==7) break;
{ { case 3 :
clrscr(); clrscr(); for(j=c;j>=0;j--)
gotoxy(25,3); gotoxy(23,13); {
for(j=0;j<79;j++) printf("MOTOR IS RUNNING IN FULL outportb(0X0378,j);
{ SPEED"); delay(100);
gotoxy(j+1,2); getch(); }
printf("*"); } outportb(P,0);
} if(c<7) clrscr();
gotoxy(23,3); { gotoxy(17,13);
printf("DC MOTOR SPEED CONTROL USING PC"); clrscr(); textcolor(2);
for(j=0;j<79;j++) c++;
{ outport(P,a[c]); cprintf("KARTHICK.R\nECE\nK.L.N.COLLEGE OF
gotoxy(j+1,4); gotoxy(33,13); ENGG\nMADURAI.");
printf("*"); printf("SPEED INCREASED"); getch();
} getch(); exit(1);
printf("\n"); } }
printf("\t\t\t1.INCREASE SPEED\n\t\t\t2.DECREASE break; }
SPEED\n\t\t\t3.EXIT") ; case 2: if(c==0) }
for(j=0;j<79;j++) {
{ clrscr(); void start()
gotoxy(j+1,8); gotoxy(23,13); {
printf("*"); printf("MOTOR IS RUNNING IN LOW SPEED"); outportb(0x0378,0);
} getch(); for(i=0;i<8;i++)
for(j=0;j<79;j++) } {
{ if(c>0) outportb(0X0378,i);
gotoxy(j+1,10); { delay(1000);
printf("*"); clrscr(); }
} c--; }

ELECTRONICS FOR YOU JUNE 2004

You might also like