Summary of How to interface Stepper Motor with PIC18F4550 Microcontroller- (Part 13/25)
This article explains how to interface a unipolar stepper motor with a PIC18F4550 microcontroller. It details the motor's construction, including four stators and six wire ends, and describes the sequential voltage signals required for rotation. The project utilizes a C program to send specific binary patterns (1110, 1101, 1011, 0111) via PortB to control the motor steps. While the microcontroller can drive the motor directly, using a ULN2003 driver is recommended for better efficiency.
Parts used in the Stepper Motor Interface Project:
- Unipolar Stepper Motor
- PIC18F4550 Microcontroller
- ULN2003 Driver (Optional)
- 12V Power Supply
- PortB Pins
A Stepper Motor is a brushless, synchronous DC motor which divides a full rotation into a number of steps. For detailed information on working, types and stepping modes, refer the article on Stepper Motors. Here the operation of a unipolar Stepper motor with PIC18F4550 microcontroller has been explained.

Project Source Code
###
// Program to Interface Stepper Motor with PIC18F4550 Microcontroller
void main()
{
unsigned int i=0;
TRISB=0; // Set PortB as output port
while(1)
{
LATB=0x07; // To send 1110 at PortB
Delay_ms(20);
LATB=0x0B; // To send 1101 at PortB
Delay_ms(20);
LATB=0x0D; // To send 1011 at PortB
Delay_ms(20);
LATB=0x0E; // To send 0111 at PortB
Delay_ms(20);
}
}
###
Source: How to interface Stepper Motor with PIC18F4550 Microcontroller- (Part 13/25)
- What is a stepper motor?
A brushless synchronous DC motor that divides a full rotation into a number of steps. - How many wires does a unipolar stepper motor have?
A unipolar stepper motor consists of total 6 wire-ends. - How do you rotate the rotor of a stepper motor?
Zero voltage is provided at coil-ends one by one in a sequential manner. - What sequence does the PIC18F4550 send to rotate the motor?
A repetitive sequence of 1110, 1101, 1011 and 0111 is sent to its PortB pins. - Why is a current driver like ULN2003 used?
It becomes more efficient to employ a current driver between the controller and motor. - How is PortB configured in the source code?
TRISB=0 sets PortB as an output port. - What happens if a stepper motor has a step angle of 1.8 degrees?
It would need 200 steps for a complete circular rotation. - Where are the COM terminals connected?
The COMs are connected with +12V which is the power supply to drive the stepper motor.