A stepper motor is a brushless, synchronous electric motor that
converts electrical pulses into mechanical movement. Every revolution
of the stepper motor is divided into a discrete number of steps, and the
motor must be sent a separate pulse for each step. The stepper motor
can only take one step at a time and each step is the same size. Since
each pulse causes the motor to rotate a precise angle, the motor’s
position can be controlled without any feedback mechanism. As the
electrical pulses increase in frequency, the step movement changes into
continuous rotation, with the speed of rotation directly proportional to
the frequency of the pulses. Step motors are used every day in both
industrial and commercial applications because of their low cost, high
reliability, high torque at low speeds and a simple, rugged construction
that operates in almost any environment.
►Unipolar stepper motor
The unipolar stepper motor has five or six wires and four coils
(actually two coils divided by center connections on each coil). The
center connections of the coils are tied together and used as the power
connection. They are called unipolar steppers because power always comes
in on this one pole.
Unipolar Stepper Motor Windings
►Bipolar stepper motor
The bipolar stepper motor usually has four wires coming out of it.
Unlike unipolar steppers, bipolar steppers have no common center
connection. They have two independent sets of coils instead. You can
distinguish them from unipolar steppers by measuring the resistance
between the wires. You should find two pairs of wires with equal
resistance. If you’ve got the leads of your meter connected to two wires
that are not connected (i.e. not attached to the same coil), you should
see infinite resistance (or no continuity).
Bipolar Stepper Motor windings
Step Sequence
Stepper motors can be driven in two different patterns or sqeunces. namely,
- Full Step Sequence
- Half Step Sequence
►Full Step Sequence
In the full step sequence, two coils are energized at the same time
and motor shaft rotates. The order in which coils has to be energized is
given in the table below.
Full Step Sequence
|
►Half Step Sequence |
|
|
|
|
In Half mode step sequence, motor step angle reduces to half the
angle in full mode. So the angualar resolution is also increased i.e. it
becomes double the angular resolution in full mode. Also in half mode
sequence the number of steps gets doubled as that of full mode. Half
mode is usually preffered over full mode. Table below shows the pattern
of energizing the coils.
Half Step Sequence
►Step Angle
Step angle of the stepper motor is defined as the angle traversed by
the motor in one step. To calculate step angle,simply divide 360 by
number of steps a motor takes to complete one revolution. As we have
seen that in half mode, the number of steps taken by the motor to
complete one revolution gets doubled, so step angle reduces to half.
As in above examples, Stepper Motor rotating in full mode takes 4
steps to complete a revolution, So step angle can be calculated as…
Step Angle ΓΈ = 360° / 4 = 90°
and in case of half mode step angle gets half so 45°.
So this way we can calculate step angle for any stepper motor.
Usually step angle is given in the spec sheet of the stepper motor you
are using. Knowing stepper motor’s step angle helps you calibrate the
rotation of motor also to helps you move the motor to correct angular
position.
|
►Connecting Unipolar Stepper Motor with Microcontroller(PIC16F887) using ULN2003
Stepper Motor Interfacing with microcontroller Using ULN2003
►Connecting Unipolar Stepper Motor with Microcontroller(PIC16F887) using L293D
Stepper Motor Interfacing With microcontroller Using L293D
|
|
|
|
|
Source Code
Here,I have used PIC16F887 Microcntroller and Code is written in C
using mikroC PRO for PIC.Adjusting the delay will increase or decrease
the speed of the motor. Here just for demonstration i have taken some
delay, you can change it as you want.
►Programming Full step Sequence |
|
|
|
|
void main() {ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
PORTD = 0;
TRISD = 0; // Configure PORTD as output
while(1){
PORTD=0×09;
Delay_ms(500);
PORTD=0x0C;
Delay_ms(500);
PORTD=0×06;
Delay_ms(500);
PORTD=0×03;
Delay_ms(500);
}
}
►Programming Half step Sequence
void main() {
ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
PORTD = 0;
TRISD = 0; // Configure PORTD as output
while(1){
PORTD=0×08;
Delay_ms(500);
PORTD=0x0C;
Delay_ms(500);
PORTD=0×04;
Delay_ms(500);
PORTD=0×06;
Delay_ms(500);
PORTD=0×02;
Delay_ms(500);
PORTD=0×03;
Delay_ms(500);
PORTD=0×01;
Delay_ms(500);
PORTD=0×09;
Delay_ms(500);
}
}
|
No comments:
Post a Comment