Jump to content

Experiment 7: Stepper Motor Control via Microcontroller: Difference between revisions

From cognifront
Siraj (talk | contribs)
Siraj (talk | contribs)
No edit summary
Line 8: Line 8:
# Write code to rotate motor clockwise and counter-clockwise.   
# Write code to rotate motor clockwise and counter-clockwise.   
# Vary delay to change motor speed.   
# Vary delay to change motor speed.   
<span style="background-color: #ffff99; display: inline-block; padding: 5px; border-radius: 5px;">
<strong>⚠️ Important Note:</strong><br>
1. Connect only the Arduino Uno (without any component connections) to the computer via USB.<br>
2. Upload the code to the Arduino.<br>
3. Disconnect the Arduino from the computer and remove the USB cable.<br>
4. Make all component connections using patch cords as per the circuit diagram.<br>
5. Then connect the 9V adapter to provide external power supply to the Arduino.
</span>


=== Circuit Diagram ===
=== Circuit Diagram ===

Revision as of 03:47, 9 October 2025

Experiment 7: Stepper Motor Control via Microcontroller

Objective

To control the rotation and direction of a stepper motor using Arduino and a ULN2003 driver.

Task

  1. Connect stepper motor and driver to Arduino.
  2. Write code to rotate motor clockwise and counter-clockwise.
  3. Vary delay to change motor speed.

⚠️ Important Note:
1. Connect only the Arduino Uno (without any component connections) to the computer via USB.
2. Upload the code to the Arduino.
3. Disconnect the Arduino from the computer and remove the USB cable.
4. Make all component connections using patch cords as per the circuit diagram.
5. Then connect the 9V adapter to provide external power supply to the Arduino.

Circuit Diagram

Circuit Diagram

Board Connections

Board Connections

Connections

Component Arduino Pin Description
Stepper Motor IN1 D8 Control input 1
Stepper Motor IN2 D9 Control input 2
Stepper Motor IN3 D10 Control input 3
Stepper Motor IN4 D11 Control input 4
ULN2003 VCC 5V Power supply for driver
ULN2003 GND GND Common ground

Code

// © 2025, Cognifront. Member of The IoT Kits Family.

//Experiment 7: Stepper Motor Control via Microcontroller

// Include the Stepper motor library
#include <Stepper.h>

// Define the number of steps per revolution for the stepper motor
// For a 28BYJ-48 stepper, it's typically 2048 steps per revolution (with gear reduction)
const int stepsPerRevolution = 2048;  

// Create a Stepper object named myStepper
// Connected to digital pins 8, 9, 10, 11 (sequence matters!)
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);

void setup() {
  // Start serial communication for debugging and monitoring
  Serial.begin(9600);
  Serial.println("Stepper Motor Speed Test"); // Initial message
}

void loop() {
  // Rotate clockwise (CW) at increasing speeds
  for (int spd = 5; spd <= 10; spd += 5) {
    Serial.print("Rotating CW at ");
    Serial.print(spd);
    Serial.println(" RPM");

    myStepper.setSpeed(spd);                        // Set stepper speed in RPM
    myStepper.step(stepsPerRevolution / 2);         // Rotate 1/2 revolution in CW direction
    delay(500);                                     // Short pause between speed changes
  }

  // Rotate counterclockwise (CCW) at decreasing speeds
  for (int spd = 10; spd >= 5; spd -= 5) {
    Serial.print("Rotating CCW at ");
    Serial.print(spd);
    Serial.println(" RPM");

    myStepper.setSpeed(spd);                        // Set stepper speed in RPM
    myStepper.step(-stepsPerRevolution / 2);        // Rotate 1/2 revolution in CCW direction
    delay(500);                                     // Short pause between speed changes
  }
}

Observation

  • The stepper motor rotates in both clockwise and counterclockwise directions.
  • The motor speed changes as per the programmed RPM values.
  • Smooth operation is observed with correct wiring sequence.

Conclusion

The experiment successfully demonstrates control of a stepper motor’s speed and direction using Arduino and a ULN2003 driver. This forms the basis for applications like robotic motion control, CNC systems, and precise positioning mechanisms.