28BYJ-48 Stepper Motor Control System Based on Arduino With ULN2003 Chip
Intro: 28BYJ-48 Stepper Motor Control System Based on Arduino With ULN2003 Chip
ICStation Team introduce you this stepper motor control system based on ICStation UNO compatible with Arduino. It uses ULN2003 chip to drive. The working voltage is DC5V. It is widely used on ATM machine, inkjet printer,cutting plotter, fax machine,spraying equipment, medical instruments and equipments, PC peripheral, and USB Mass Storage ,precise instrument,industrial control system,office automation,robot areas,etc.
Functions
1.When start up, the stepper motor will rotate in the clockwise direction, at the same time the1602 LCD will display the stepping rate and rotating direction.
2.When you press the key1, the stepper motor will rotate in the counter-clockwise direction.
3.When you turn the potentiometer to the left or to the right, you can adjust the stepping rate of the stepper motor. At the same tine the 1602 LCD will display the current speed.
Code for your reference:
http://www.icstation.com/newsletter/eMarketing/Stepper_Motor_Code.txt
STEP 1: Components List
1.ICStation ATMEGA328 UNO V3.0 R3 Board Compatible Arduino
2.1602A HD44780 Character LCD Display Module
3.5V 4 Phase 5 Line 28BYJ-48 5VDC Stepper Motor
4.50K Ohm B50K Knurled Shaft Linear Rotary Taper Potentiometer
5.ULN2003AN DIP-16 TI Darlington Transistor Array
6.Trim Pot Resistor Potentiometer
7.830 Point Solderless PCB Bread Board MB-102 Test DIY
8.12X12X5mm Tact Switches 4 Legs
9.Bread Board Jump Line Jumper Wire
10. Dupont 20cm Color Cable Line
11.+5V DC power supply
STEP 2: Schematic Diagram
Working Principle:
To change the rotating speed of the stepper motor by changing the input frequency of pulse signal. And to realize the motor rotating in the clockeise direction and counter-clockwise direction by controlling the transform sequence of the pulse signal.
STEP 3: Overall Hardware Connected Diagram
STEP 4: Plug Into the Power Supply Wires and Place the Components
STEP 5: Connect the LCD1602
STEP 6: Connect the Stepper Motor
STEP 7: Connect the Signal End and Power Supply End
Connect the signal end of the components and the cathode and anode of the power supply to the ICStation UNO board compatible with Arduino and common port of power supply.
14 Comments
bill1959parker 3 years ago
Thank you
Bill
krisald444 5 years ago
krisald444 5 years ago
bernyro 5 years ago
salve mi sono iscritto al vostro sito pagando la quota minima e vorrei realizzare questo progetto del motore passo passo con arduino,ma mi manca lo sketch…..
me lo potete inviare?
GianL 7 years ago
Hi, good job man ;-) I wish to ask you if iou can tell me how, adding a
third button, to tell the motor to stop, assuming that the motor
rotates continuously when the left or right button is pressed.
Thank you for any help ;-)
dancopy 8 years ago
1) Can be used stepper motor 12 volts? (Printer)
2) key1 and key2 is the engine rotation direction?
Thank you
Skyfinder 8 years ago
Doesn't Work, the attachInterrupt not work... The stepper rotate ok, but the button are Useless... Wiring is correct. Something wrong in code. I use ad Arduino Uno Adeept, until now every projects works...this no. I tried to change some way to code, like digitalWrite (pin, HIGH); for the pullup but same result
Prince N 8 years ago
I am working on a project that uses 4 ldr's, two potentiometers and 2 step motor 28byj-48 to track the movement of the sun. I really need help with the programming
Prince N 8 years ago
I am working on a project that uses 4 ldr's, two potentiometers and 2 step motor 28byj-48 to track the movement of the sun. I really need help with the programming
Alex Hagios 9 years ago
How many K is the Trim pot resistor? Thanks
mike_menci 8 years ago
10K
mike_menci 8 years ago
#include <Stepper.h>
#include <LiquidCrystal.h>
int Iint1=0;
int Iint2=1;
int anjian1=2;
int anjian2=3;
int motorSpeed;
LiquidCrystal lcd(9,8,7,6,5,4);
const int stepsPerRevolution =200;
// Here set the stepper motor rotation step how much is a circle
int dim=stepsPerRevolution;
// Set the step motor number and pin
Stepper myStepper(stepsPerRevolution, 10,11,12,13);
void setup()
{
lcd.begin(16, 2);
lcd.print("speed:");
lcd.setCursor(10,0);
lcd.print("n/min");
lcd.setCursor(0, 1);
lcd.print("Direction:");
// Set the motor speed of 60 steps per minute
myStepper.setSpeed(60);
pinMode(anjian1,INPUT_PULLUP);
pinMode(anjian2,INPUT_PULLUP);
attachInterrupt(Iint1,counterclockwise,FALLING);
attachInterrupt(Iint2,clockwise,FALLING);
Serial.begin(9600);
}
void loop()
{
myStepper.step(dim);
void Direction();
// Read the sensor values:
int sensorReading = analogRead(A0);
// Map it to a range of 0-150:
int motorSpeed = map(sensorReading, 0, 1023, 0, 150);
// Set the motor speed:
if (motorSpeed > 0)
{
myStepper.setSpeed(motorSpeed);
lcd.setCursor(6,0);
lcd.print(float(float(motorSpeed)/float(200)));
}
}
void clockwise()
{
// clockwise rotation
dim=stepsPerRevolution;
lcd.setCursor(10, 1);
lcd.print(">>>>>>");
}
void counterclockwise()
{
// anti-clockwise
dim=-stepsPerRevolution;
lcd.setCursor(10, 1);
lcd.print("<<<<<<");
}
JamesJack 9 years ago
Hi, www.icstation.com is down !!!
Could you post the (arduino code) .ino file for this please ?
This link not work http://www.icstation.com/newsletter/eMarketing/Stepper_Motor_Code.txt
steinie44 9 years ago
If you use a ULN2803, you can run 2 steppers. Put a PCF8574 IC in front of that and you can use I2C, only 2 pins.