STEPPER MOTOR INTERFACING WITH 8051 MICROCONTROLLER: Stepper motors are type of DC motors. Stepper motor has multiple electromagnetic coils that are arranged in group called phases. Motor rotates when particular phase is energized. One step rotation occurs at a time by energizing a particular coil. We can also control the speed of motor. It can be interfaced with 8051 microcontroller but the same case is here about DC motors that we can’t connect them directly with controller. Here in this article we will learn how to interface stepper motor with 8051 microcontroller. Before starting this article you should know how to use keil for 8051 programmingand how to use input output ports of 8051 microcontroller.
Page Contents
- 1 Stepper motor COMPARISON WITH DC MOTOR
- 2 ADVANTAGES of stepper motor
- 3 BASICS OF STEPPER MOTOR
- 4 Stepper motor INTERFACING WITH 8051 MICROCONTROLLER
- 5 PROTEUS SIMULATION of stepper motor interfacing with 8051 microcontroller
- 6 Working stepper motor interfacing with 8051 microcontroller
- 7 CODE of stepper motor interfacing with 8051 microcontroller
Stepper motor COMPARISON WITH DC MOTOR
Unlike DC motors, the current consumption of stepper motors does not depend upon the load. Upon no load they still draw much current. In this way, they get hot and this lowers their efficiency. In stepper motors there is smaller torque at high speeds than at low speeds. But mostly these stepper motors are used in high speed routine. For obtaining that high speed performance they need to be paired with a proper driver.
ADVANTAGES of stepper motor
Stepper motors are used because of their:
- Low cost
- High reliability (because of no contact brushes)
- Good performance in starting, stopping and reversing the direction
- High torque at low speed
- Gravel construction (can be used in variable environment)
BASICS OF STEPPER MOTOR
Stepper motor is brushless which take digital signals. It converts digital pulses into mechanical shaft rotation. Rotation is divided into steps and a separate pulse is sent for each step. For each pulse motor rotates a few degrees which is mostly 1.8 degree angle. As we interface it with controller, so when digital pulses increase in frequency, the stepping movement of motor converts to continuous rotation of motor. So we can say that speed of rotation is directly proportional to the frequency of pulses given by controller.
WINDING ARRANGEMENT:
For a two phase stepper motor, there are two winding arrangements of electromagnetic coils.
- Unipolar
- Bipolar
UNIPOLAR MOTOR:
- Only one winding with center tap per phase
- Each winding section is switched on for each direction of magnetic field
- Center tap of each winding is made common
BIPOLAR MOTOR:
- A single winding per phase
- Current in winding must be reversed to reverse a magnetic pole
- Two leads per phase, none are common
STEP MODES:
In this article we will use unipolar stepper motor. Unipolar stepper motors can be used in three modes:
- Wave Drive mode
- Full Drive mode
- Half Drive mode
Wave Drive:
- Only one electromagnet is energized at single time.
- Torque which is generated will be less than full drive.
- Power consumption is reduced in it.
- This type of drive is chosen when the power consumption fact is more important than torque.
Full Drive:
- Two electromagnets are energized at single time.
- Torque which is generated will be greater than wave drive.
- Power consumption is higher in it.
- This type of drive is chosen when the torque is more important than power consumption.
Half Drive:
- One and two electromagnets are alternatively energized in this mode.
- It is a combination of both, wave drive and full drive.
- It has low torque but the angular resolution is doubled.
- This type of drive is chosen when we want to increase the angular resolution of the motor.
Since each drive has its own advantages and disadvantages, thus we choose the drive according to the application we want and power consumption.
Stepper motor INTERFACING WITH 8051 MICROCONTROLLER
Due to high voltage and current limitations of microcontroller, a motor Driver IC is used. We can use L293D or ULN2003. Working of both is already described in previous articles.
CIRCUIT COMPONENTS:
- AT89C51 microcontroller
- 12 MHz Oscillator.
- 12V DC battery.
- 5V DC battery.
- L293D motor driver
- Unipolar Stepper motor – 1.
- 2 Ceramic capacitors – 33pF
- 300Ω resistors – 3
- Push buttons – 3
CONNECTIONS:
- P2 (Lower four pins) of 8051 microcontroller is used as output port and it gives inputs to the L293D (motor driver IC) to drive one stepper motor.
- P0 (Lower three pins) of 8051 microcontroller is used as input port. 3 Buttons are connected to them so that we can manually start and stop the motor.
- Stepper motor is given input through OUT1, OUT2, OUT3 and OUT4 of L293D.
- 12V battery is used to give input to the VS for motor.
- 5V battery is used to give input to VSS for motor driver IC.
PROTEUS SIMULATION of stepper motor interfacing with 8051 microcontroller
Working stepper motor interfacing with 8051 microcontroller
I tried to use all three modes. When I press button 1, it works as wave drive. Only one electromagnet is energized at single time and in coding one pin is high at a time. When I open the switch/button, motor tends to stops and gets stop within few seconds.
Wave drive Stepping Sequence | ||||
Step # | Pin 1 | Pin 2 | Pin 3 | Pin4 |
1 | 1 | O | O | 0 |
2 | O | 1 | O | O |
3 | O | O | 1 | O |
4 | O | O | O | 1 |
When I press button 2, it works as full drive. Two electromagnets are energized at single time and in coding one pin is high at a time. When I open the switch/button 2, motor tends to stops and gets stop within few seconds.
Full drive Stepping Sequence | ||||
Step # | Pin 1 | Pin 2 | Pin 3 | Pin4 |
1 | 1 | 1 | O | O |
2 | O | 1 | 1 | O |
3 | O | O | 1 | 1 |
4 | 1 | O | O | 1 |
When I press button 3, it works as half drive. One and two electromagnets are alternatively energized at a single time and in coding:
- First pin is high
- Then first and second both get high
- Second alone goes high
- Second along with third goes high
- In same way, alternatively one and two pins go high
Half drive Stepping Sequence | ||||
Step # | Pin 1 | Pin 2 | Pin 3 | Pin4 |
1 | 1 | O | O | O |
2 | 1 | 1 | O | O |
3 | O | 1 | O | O |
4 | O | 1 | 1 | O |
5 | O | O | 1 | O |
6 | O | O | 1 | 1 |
7 | O | O | O | 1 |
8 | 1 | O | O | 1 |
When I open the switch/button, motor tends to stops and gets stop within few seconds.
CODE of stepper motor interfacing with 8051 microcontroller
#include<reg52.h>
void delay(int);
sbit B1 = P0^0;
sbit B2 = P0^1;
sbit B3 = P0^2;
void main()
{
P1=0x07;
P2=0x00;
if(B1==1) //for wave drive
{
P2=0x01; //0001
delay(1000);
P2=0x02; //0010
delay(1000);
P2=0x04; //0100
delay(1000);
P2=0x08; //1000
delay(1000);
}
if(B1==0)
{
P2=00000000;
}
if(B2==1) //for full drive
{
P2 = 0x03; //0011
delay(1000);
P2 = 0x06; //0110
delay(1000);
P2 = 0x0C; //1100
delay(1000);
P2 = 0x09; //1001
delay(1000);
}
if(B2==0)
{
P2=00000000;
}
if(B3==1) //for half drive
{
P2=0x01; //0001
delay(1000);
P2=0x03; //0011
delay(1000);
P2=0x02; //0010
delay(1000);
P2=0x06; //0110
delay(1000);
P2=0x04; //0100
delay(1000);
P2=0x0C; //1100
delay(1000);
P2=0x08; //1000
delay(1000);
P2=0x09; //1001
delay(1000);
}
if(B3==0)
{
P2=00000000;
}
}
void delay(int k)
{
int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<100;j++)
{}
}
}
The post STEPPER MOTOR INTERFACING WITH 8051 MICROCONTROLLER appeared first on PIC Microcontroller.