5.25" Floppy Head Position Stepper Motor Questions

Hello All,

I figured out how to drive a little stepper motor from a 5.25" floppy drive using a ULN2003A Darlington Array salvaged from said floppy drive. This seems to be working fine; no smoke from my Arduino or breadboard! :slight_smile: I did notice that the stepper motor got pretty hot when I was running the “Step at a time” sample code provided with the Arduino IDE. Wondering if this just happened because the steps were so slow? It seems better now that I am running the motor faster and doing full revolutions. Does anyone know how fast the Arduino can drive this motor, it’s a 21 step 12V 0.69Amp motor btw. So those are my only questions I guess, how fast and should it get that hot? Took a couple of pictures if that’s helpful:


Its common to reduce the current to a stepper when its stationary, since lower torques are needed in this situation and the power is effectively wasted. I suspect you might get away with turning off the current completely (you have to power up again in the same phase before new steps).


Thanks for your reply to my question. I am wondering why power is going to the motor when it’s stationary by default in the first place, and how you would shut it off. What I have done is after each action of the stepper, when it’s going to be at rest for a time, I do a digital write on each of the output pins driving the stepper and set them to LOW. If I do this I notice I can easily turn the motor shaft and the stepper gets cold, so a figure no current is flowing. Is this normally needed to keep your stepper motor from frying, or am I doing something wrong?

Sorry about the pictures last time, I didn’t realize they would show up in such an ungainly format. I will host them in my own gallery henceforth:

Here is the code I am playing with. :

// Camera Post Sketch
// Uses a stepper motor with worm gear to push button on digital camera every x seconds if a picture has not
// been taken in x seconds due to motion. Takes picture every x seconds while there is motion.

// Define Variables
const int stepsPerRevolution = 21; // Specific to motor!
const int homeButton = 7; // Pin to shutter button pusher home postion switch. High = switch depressed / pusher in home postion
const int pir = 6;        // Pin to motion sensor. High = motion

// Load Libs
#include <Stepper.h>

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,9,10,11);            

void setup() {  // runs once when program starts
  pinMode(homeButton, INPUT);  // tell Arduino homeButton is an input
  pinMode(pir, INPUT);  // and pir is an input
  myStepper.setSpeed(128); // set the speed of the stepper in RPMs.
  Serial.begin(9600);  // initialize the serial port:

void loop() {


int resetPusher() {
  while(digitalRead(homeButton) != HIGH){
    myStepper.step(- stepsPerRevolution );
  myStepper.step( stepsPerRevolution * 2 );
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  return 0;