Go Down

Topic: Stepper vs Servo (Read 3810 times) previous topic - next topic


Hi there!  I never used the motors before so I need to know, What is the difference between Stepper and Servo motors and where we use them.  For making POV(persistence of vision) what kind of motor I need to use and what should be the minimum RPM of the motor is needed?


Okay - What kind of servo are you talking about?

Most of the time on this forum a servo is referring to a hobby servo like used in RC aircraft and such.

If you are referring to a servo motor as used for motion control, it is a different animal.

Both Stepper Motors and Servo Motors can be purchased with a driver. For a stepper they generally take one of two input formats. Most common is Step/Direction and the other option is DirPos/DirNeg. Servo Motors have come in two styles - DC Brush type and more recently Brushless. The older DC Brush type motors had an analog input, typically -10V - +10V with the polarity controlling direction and voltage controlling speed. Newer Brushless controllers generally have  two modes of operation - Step/Direction or Analog. Using the Step/Direction control option the Brushless Servo can be used in the same manner as a stepper motor.

Differences - A stepper motor has a limit on speed. As the stepper runs faster the torque falls. A stepper can be used with low ratio gearboxes/belt drives. A servo motor on the other hand has a better torque curve and is able to be run faster. 3000 - 5000 RPM is typical. Some motors are rated at 3000 RPM, but lightly loaded will perform nicely t 5000 RPM. Some Brushless drives have a selection of 2 motors - one design for speed and another design for more torque and less top speed. Brushless motors can also be configured as stand-alone drives where they are either configured to run at a specific RPM or a combinatin of inputs can be on/off and those patterns can select specific speeds. Because the brushless motor has a built in encoder the drive is able to control the RPM very closely in this mode.

Given a choice - If I could afford them I would rather use Brushless Servos, but they generally cost more, as much as 2 times, but they are also available in much higher power ratings. Brushless servos are generally rated in WATTS. 30, 50, 100 watt units are generally available to run on single phase 120VA and 200, 400, 800 watt units are available to run on 240VAC single or three phase.

PWM from an Arduino is probably not of high enough resolution to run a servo in analog mode. Though a Arduino could control a servo through the serial port.


For general stepper vs servo questions I would humbly suggest googling, there are plenty of explanations out there.

Very quick summary:
Stepper motors are used for things that need to rotate continuously with starts and stops.  They have very precise position control.  However the control system is "open loop control" (google) so if the motor skips steps you lose all positional accuracy.  They require a dedicated stepper motor driver (the Pololu A4988 is a popular choice).  A stepper motor typically has 4 wires, to drive it you need to generate a train of pulses.  The stepper motor driver takes care of this for you.

Servos (the hobby type) are a very small motor with built-in gear reduction and built-in closed loop position feedback.  Closed loop position feedback means they will return to their set position if they are "pushed" out of position.  They are also much simpler to drive from an Arduino - you just need 5V, GND, and a signal pin.  The built-in Servo.h library makes it even easier from a software perspective.  Servos are typically not able to rotate continuously (there are some types that can) - they have a set range (90 to 180 degrees) over which they can rotate back and forth.

For making POV(persistence of vision) what kind of motor I need to use and what should be the minimum RPM of the motor is needed?

I assume you mean that you will have a head that spins in circles.  Your rpm is going to depend on your intended refresh rate.  If your refresh rate is high you could do 1 of 2 things: use a stepper motor with a gearbox to increase the output speed, or use a conventional DC motor and control the rpm carefully.  It might be cheaper to use a DC motor with a rotary encoder to read the actual refresh rate, as opposed to finding a stepper motor and a gearbox with the right ratio.  Most stepper gearboxes I see are gear down boxes and you would need a gear *up* box.


Thank you both for your detailed explanation, you answered what I need!!!


Quote "For making POV (persistence of vision) what kind of motor I need to use and what should be the minimum RPM of the motor is needed?"

I think you mean Time-Lapse photography where you shoot video as as multiple single frame shots for later lining up in a video editing software.

I'm using a 360 continuous servo pulling a timing belt attached to the camera carriage moving at the slowest the 360 servo could go. The slower the better/smoother the resolution when you line up all your individual time-lapse photos in adobe premiere to make a video (making each photo lasts for 0.02 or 0.01 seconds).

I'm able to start/stop the 360 servo and wait/hold position until the camera shoots (night sky shots need longer shutter exposures around 10 to 15 secs of exposure. Day shots shorter exposure). You can set the delay of movement in the arduino. The Spring RC hobby 360 servo i'm using gives me about 45rpm at the fastest and about 10rpm at the slowest.

I use another standard servo to mechanically click the shutter remote button which could be delayed within the remote to give the servos a chance to move then shoot when it stops. Shooting long exposures while moving will blur your images. That's your side to side movements.

For panning (and tilting) while sliding, you'd need an even slower motor (and this is where I'm at in my project. I have tried using another 360 servo for both pan and tilt movement but at the slowest setting the slowest speed is still too fast to make it work. Enter stepper motors where i can hope to make micro movements  to center the image as the camera slides for longer usable shots where the subject won't get out of field of view.

At this point in my project i'm trying to get the stepper (cheap type bundled with arduino that runs on 5volts) to run in the same sketch as the 2 servos to make the arduino the master clock of the 3 motors. If i can get over this hump with the help of this forum then I would have the bare minimum working on this project. Any tips on this setup, you wizards of code.

Many thanks for this treasure trove of information.


I'm using a 360 continuous servo pulling a timing belt attached to the camera carriage moving at the slowest the 360 servo could go.
CR servos are not known for precision speed control. I think your stepper motor idea should be an improvement over a CR servo but I also think a DC motor with an encoder would be a good match for this task. You could get a motor with an encoder on the motor which provides much better resolution than adding an encoder to the output shaft.

BTW, this is known as "hijacking" a thread. While your post was about motor speed, it wasn't really about POV displays. IMO, you would have been better off starting a new thread. Not that it matters much to me. Just a suggestion for next time.


These are answers to a 3-years dead Thread   :)

Two or three hours spent thinking and reading documentation solves most programming problems.

Go Up