Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

speed control of dc motor using 8051

Status
Not open for further replies.

pradeep23

Member level 5
Joined
Aug 20, 2012
Messages
86
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,288
Activity points
1,866
hi everyone i am doing one project like i want to interface dc motor with 8051 ic89c51rd2 in that i want to control the speed of dc motor i dont know how to control that can any anyone please help me thanks....

- - - Updated - - -

currently i am using this circuit
l293d.gif
 

prafful

Member level 2
Joined
Apr 3, 2011
Messages
45
Helped
28
Reputation
56
Reaction score
28
Trophy points
1,298
Location
Rajkot, India
Activity points
1,551
hi pradeep,

you can use the pwm(pulse width modulation) to control dc motor.

i have made such a project before some time.

i have made temperature controlled fan using atmega16 and pwm.

best luck..

-prafful sorani
 

pradeep23

Member level 5
Joined
Aug 20, 2012
Messages
86
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,288
Activity points
1,866
hi thanks for reply u have any circuits about that can you post that ........

- - - Updated - - -

i don't know how to use that i am new to that one .....

- - - Updated - - -

can any one please send the schematic diagram of 8051 based speed control of dc motor using pwm technique....
 

pradeep23

Member level 5
Joined
Aug 20, 2012
Messages
86
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,288
Activity points
1,866
even i am also using like that interrupt and same circuit i am not getting it correctly .....

- - - Updated - - -

hi prafful i use that code but its not working......
 

pradeep23

Member level 5
Joined
Aug 20, 2012
Messages
86
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,288
Activity points
1,866
hi everyone thanks for replying i am using that ic only 89v51rd2 but its not working what will be the problem .....
 

prafful

Member level 2
Joined
Apr 3, 2011
Messages
45
Helped
28
Reputation
56
Reaction score
28
Trophy points
1,298
Location
Rajkot, India
Activity points
1,551
Hello,
there may b many posibility for problem. .
I have no idea in assambly language. .

I have good hand on BASCOM AVR. . If u need related to it i can help you. .

Best luck
 

pradeep23

Member level 5
Joined
Aug 20, 2012
Messages
86
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,288
Activity points
1,866
hello prafful i am using C language only can u help in that ....

i am using the same circuit you linked one circuit that only but i how it speed decreases.....

- - - Updated - - -

and i am using same code also..... but ii doesn't work properly......................
 

pradeep23

Member level 5
Joined
Aug 20, 2012
Messages
86
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,288
Activity points
1,866
#include<reg51.h>

sbit sw1=P3^2;
sbit sw2=P3^3;

sbit L293D_A = P1^0; //Make positive of motor 1
sbit L293D_B = P1^1; //Make negative of motor 0
sbit L293D_E = P1^2; //Enable L293D



void rotate_f(void); //Forward run funtion
void rotate_b(void); //Backward run function
void breaks(void); //Motor stop function
void delay(void); //Some delay

void main(){
P3=0xFF;
P1=0x00;
//Our main function
while(1){ //Infinite loop


if(sw1==1 && sw2==0)
{
rotate_f(); //Run forward
delay(); //Some delay
breaks(); //Stop
delay(); //Some delay
}

if(sw2==1 && sw1==0)
{
rotate_b(); //Run Backwards
delay(); //Some delay
breaks(); //Stop
delay(); //Some delay
} //Do this infinitely
}
}

void rotate_f(){
L293D_A = 1; //Make positive of motor 1
L293D_B = 0; //Make negative of motor 0
L293D_E = 1; //Enable L293D
}

void rotate_b(){
L293D_A = 0; //Make positive of motor 0
L293D_B = 1; //Make negative of motor 1
L293D_E = 1; //Enable L293D
}

void breaks(){
L293D_A = 0; //Make positive of motor 0
L293D_B = 0; //Make negative of motor 0
L293D_E = 0; //Disable L293D
}

void delay(){ //Some delay...
unsigned char i,j,k;
for(i=0;i<0x20;i++)
for(j=0;j<255;j++)
for(k=0;k<255;k++);

}
 

Attachments

Last edited:

    V

    points: 2
    Helpful Answer Positive Rating

pradeep23

Member level 5
Joined
Aug 20, 2012
Messages
86
Helped
3
Reputation
6
Reaction score
2
Trophy points
1,288
Activity points
1,866
again hi everyone the above program i posted is correct or wrong in that i am using interrupt to change the direction of motor ........
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top