Stepper motor

From RepRap
Revision as of 23:32, 8 February 2012 by Sbliven (talk | contribs) (Suppliers: Updating the erbyers ebay post. Hopefully his store ID is stable.)
Jump to: navigation, search


What is a Stepper Motor ?

Stepper motors are one kind of electric motor used in the robotics industry. Stepper motors move a known interval for each pulse of power. These pulses of power are provided by a stepper driver and is referred to as a step. As each step moves the motor a known distance it makes them handy devices for repeatable positioning.

There are two major types of stepper motor known as bipolar and unipolar. Wikipedia has further information on stepper motors. Please see Wikipedia. A good diagram showing a stepper motor's mechanical operation is here.


refers to the frame size of the motor (as standardized by the US National Electrical Manufacturers Association [1]

). It specifies the “face” size of the motor but not its length. For example a NEMA 23 stepper has a face of 2.3 x 2.3 inches with screw holes to match. Note: just because a motor is bigger does not mean it is more powerful in terms of torque. It is perfectly possible for a NEMA 14 to “out pull” a NEMA 17 or a NEMA 23.

Bipolar and Unipolar
These terms refers to the internals of the motor. Each type has a different stepper driver circuit board to control them. In theory a RepRap could use either, but in practice most are bipolar.
Micro stepping
A stepper motor always has a fixed number of steps. Microstepping is a way of increasing the number of steps by varying the amount of electricity sent to the coils inside the stepper motor. In most cases, micro stepping allows stepper motors to run smoother and more accurately.

Bipolar Motors

StepperMotor-bipolar stepper sch.png

These motors are the strongest type of stepper motor. You identify them by counting the leads - there should be four or eight. They are also the type of motors we are using in the RepRap Project's Mendel & Darwin designs. They have two coils inside, and stepping the motor round is achieved by energising the coils and changing the direction of the current within those coils. This requires more complex electronics than a unipolar motor, so we use a special driver chip to take care of all that for us. Some designs (the eight-wire ones) split each coil in the middle so you can wire the motor either as bipolar (short the middles) or unipolar (short the middles and treat the link as the centre tap - see below).

Unipolar Motors

StepperMotor-unipolar stepper sch.png

Unipolar motors have two coils, each one has a centre tap. They are readily recognizable because they have 5, 6 or even 8 leads. It is possible to drive 6 or 8 lead unipolar motors as bipolar motors if you ignore the centre tap wires. 5 lead motors have both centre taps connected, so re-wiring them to a 4 lead version requires at least opening the motor, if it can be done at all.

The main beauty of unipolar motors is that you can step them without having to reverse the direction of current in any coil, which makes the electronics simpler. Some early RepRap prototypes used this trick. Because the centre tap is used to energise only half of each coil at a time, unipolar motors generally have less torque than bipolar motors.

Stepping Angle

Most stepper motors used for a Mendel have a step angle of 1.8 degrees. It is sometimes possible to use motors with larger step angles, however for printing to be accurate, they will need to be geared down to reduce the angle moved per step, which may lead to a slower maximum speed.

Micro stepping

Microstepping between pole-positions is made with lower torque than with full-stepping, but has much lower tendency for mechanical oscillation around the step-positions and you can drive with much higher frequencies.

If your motors are near to mechanical limitations and you have high friction or dynamics, microsteps don't give you much more accuracy over half-stepping. When your motors are 'overpowered' and/or you don't have much friction, then microstepping can give you much higher accuracy over half-stepping. You can transfer the higher positioning accuracy to moving accuracy too.


Stepper Motor History for Darwin (V1.0 RepRap)

The RepRap Darwin used a NEMA 23 stepper motor. This stepper motor was a unipolar stepper motor which could be configured as a bipolar. This design used 3 stepper motors, one for each axis, and a DC motor for its extruder. Later many people upgraded their extruders to increase their control of the extruder.

Note the Generation 2 electronics supported the first configuration with 3 stepper driver circuit boards for the steppers and a PWM circuit board to control the DC motor.

The Darwin stepper motor requirements were as follows:

Parameter Specification
Size NEMA 23
Type Bipolar
Shaft dual-output shaft
Torque 100 oz-in or about 71 N-cm
Resistance about 10 ohms, or 1 to 30 ohms


If you are using the PIC controller (Note: Generation 1 electronics) you need a motor that will use about 1A per winding at 12V - that is, around 10 ohms. The Arduino circuit can be adjusted to accommodate a wider range of steppers, but remember that if you specify a low-resistance one and the Arduino controller has to chop the voltage to limit the current going through it, that will also limit the torque.

Stepper Motor History for Mendel (V2.0 RepRap)

The RepRap Mendel used either NEMA 17 or NEMA 14 bipolar stepper motors. It used four stepper motors: one for each of the three axes and one for the extruder.

Note this configuration of four stepper motors was supported by the 3rd generation electronics.

The Mendel stepper motor requirements were as follows:

Parameter Specification
Size NEMA 17 or 14 (prototype was NEMA 14)
Type Bipolar
Shaft dual-output shaft (need to make knurling the stepper shaft easier, not applicable to recent geared extruders)
Torque 13.7 N-cm (= 1400 g-cm or 19.4 oz-in)
Resistance Must be over 6 ohms (not applicable to recent stepper controllers, see "current" below)

Holding Torque

It is recommended that you get approximately 13.7 N-cm (= 0.137 N-m or 1400 gf-cm or 19.4 ozf-in or 1.21 lbf-in) of holding torque (or more) for axis motors to avoid issues, although one stepper with less has been used successfully (see below). If in doubt, higher is better.

For Wade's Geared Extruder (most widely used one as of 2012) it is suggested to use motor that is capable of creating a holding torque of at least 40 N-cm.

If you need to convert between different units for the torque you can use the torque unit converter here.


If using the smaller NEMA 14 motors, aim for the high torque option. NEMA 14s are neater, lighter and smaller, but can be hard to obtain with the appropriate holding torque. NEMA 17s are quite easy to get in the specification that Mendel needs, but are bulkier and less neat. NEMA 14s are running near the edge of their envelope: they will get warm. NEMA 17s are well inside what they can do, and will run much cooler.

Note that any Mendel part that goes on to a stepper motor shaft expects the shaft to be roughly Ø5mm. If the shaft is a different size, you will need to make allowances for this in the parts you obtain/make.

Based upon the NEMA 17 specification (from what i can find) the mounting holes are spaced 1.22in or 31mm apart along the edge of the motor. This should help if you are using second hand / salvaged parts.


Steppers motors come in several wiring configurations. 4, 6 and 8 wires are all fairly common and work fine with the standard RepRap electronics. 5 wire stepper motors exist but won't work with the standard RepRap electronics, because the 5th wire connects to both coil centers. See stepper wiring for more details.


Most of the motors specs give the current for two coils that will give an 80 °C rise, i.e. they can run at 100 °C! When using them on plastic brackets you need to under-run them to keep the brackets from melting. With PLA you have to seriously under-run them! Fortunately temperature rise is proportional to the square of current, but torque is directly proportional so you can keep temperature under control without losing too much torque.


All recent stepper controllers use a current-limiting design. Because of this, the resistance (ohms) of the coils doesn't matter, as long as it is low enough for the current to rise fast enough for the current-limiting design to come into play. If the resistance is too high (i.e. 24V steppers) the current doesn't raise fast enough for reliable microstepping.

Designs which use a separate "extruder controller board" sometimes use H-bridges (which are designed for running a DC motor) instead of a proper current-limiting stepper controller. On these boards, you need to be careful not to turn the current (PWM) too high, especially with low-ohm (low voltage) motors. You run the risk of overheating both the stepper motor and the H-bridge chip.


Below is a list of possible motors and suppliers. Please add to it. If you have built a Mendel successfully with a given motor, remember to put true in the tested field.

Stepper Motors - NEMA 14 (smaller, neater and used on the Mendel prototype)
Vendors (link to product) Shipping location Manufacturer Model # (link to datasheet) Holding Torque Shaft Tested Additional notes
Motion Control Products UK Fulling Motor FL35ST36-1004B ~13.7 N-cm Dual true Used in mendel prototype
Active Robots UK Wantai 35BYHG04 ~12.3 N-cm Ø4.9mm true Less holding torque than recommended, but has apparently been used successfully
Pololu Robotics US SOYO SY35ST36-1004A ~13.7 N-cm Ø5mm ? Note: Pololu list this motor as 1400 g-cm AND as 20 oz-in (converts to 19.44 oz-in). According to supplier information, the metric value is correct.
Paoparts EU-FR SOYO SY35ST36-1004A ~13.7 N-cm Ø5mm ? Length cable 80 cm
Zapp Automation UK  ? SY35ST36-1004B ~14 N-cm Dual true
Stepper Motors - NEMA 17 (larger and generally heavier but with more room to put a higher torque than a NEMA 14)
Vendors (link to product) Shipping location Manufacturer Model # (link to datasheet) Holding Torque Shaft Tested Additional notes
Zapp Automation
Pololu Robotics
SOYO SY42STH47-1206A ~31.1 N-cm Single true None
Zapp Automation
SOYO SY42STH47-1684A ~43.1 N-cm Single, d-shape, Ø5mm true 4.5mm flat motors are factory custom made with 80cm cables
Zapp Automation
SOYO SY42STH47-1684B ~43.1 N-cm Dual, round, Ø5mm true motors are factory custom made with 80cm cables and have an option to include Molex connectors for our GEN6 electronics
Interinar Electronics, LLC US Oriental Motors PX243M-01AA 15 N-cm Single ? Not strong enough for direct drive extruder, Uses Imperial #4-40 TPI mounting holes instead of M3 metric US Lin Engineering 4218L-01-10 ~53 N-cm Round, Ø5mm true None US Lin Engineering 4218L-01-11 ~53 N-cm Ø5mm = 0.1968 inches, d-shape true None
Thingfarm North America
Wantai 42BYGHW811 47.1 N-cm Ø5mm true None
Cool Components
Robot Gear
Australian Robotics
Mercury Motor SM-42BYG011-25 23 N-cm Ø5mm true None
AusXMods AU Rugao Xinhe 17H185H-04A ~43.8 N-cm  ? ? 2.8v,1.68A/phase,1.65ohm/phase, the -04B variant is dual-shaft
Kysan China Kysan 42BYGH4803 49 N-cm Ø5mm true Successfully tested with Wade's Geared Nema 17 extruder - high flow rates. According to datasheet, 5mm round shaft. Requires Minimum Purchase of $100 when buying online.
MakerBot US Kysan 1123029 26 N-cm Ø4.78mm (3/16"), 24mm long ? None
MakerBot US Custom ??  ???? 70.6 N-cm Ø5.84mm (0.23"), 22mm long ? None
erbyers on ebay US Applied Motion 4017-871 ~8.47 N-cm Dual, Ø5mm ? One side of shaft is splined ~4.3mm 0.5in from face, other shaft is 5mm; wires 95mm long terminating in 0.1" header; date code from 1984
Reichelt DE Trinamic QSH4218-51-049 49 N-cm Ø5mm true Tested on MakerBot Cupcake CNC
mechapro DE Nidec Servo KH4248-B95101 48 N-cm Ø5mm ? None
LulzBot US SOYO SY42STH47-1504A 55 N-cm Ø5mm D-shaped true None
2PrintBeta DE ACT 17HS4417 40 N-cm Ø5mm ? None
XYZPrinters NL XYZ 42BYGH4803-04 55 N-cm Ø5mm true Custom model, includes 60cm leads
Akcesoria-cnc PL  ? (japan) KH42KM2R001 45 N-cm Ø5mm  ?

Unscientific rules of thumb for motor purchases

1) Generally, the longer the motor body, the more torque the motor has.

2) If a motor is rated 2.5 A and your stepper driver produces only 2 A your motor will not produce the manufacturer's rated torque.

3) If a motor is rated 35 V and your stepper produces only 12 V your motor will not produce the manufacturer's rated torque.

4) A motor can safely exceed its rated voltage with a chopping stepper driver (which is all the RepRap stepper drivers, save only the Gen3 electronics extruder board hack). It cannot exceed its rated current (amps) without severely overheating and dying a quick death.

5) Stepper motors are generally rated for a 50 °C temperature rise at rated current/torque.

6) ABS melts at 105 - 120 °C but softens at 80 °C. Therefore you probably can't run your steppers at their full rated torque without melting your plastic motor mounts.

7) Power is measured in watts (W) and is calculated as volts (V) × current (A).

8) Power made available to a motor will be turned into heat and motion.

9) The more power made available to the motor the higher the amount of heat and motion. Heat is proportional to current squared while motion is proportional to current, so losing a little motion (torque) can lose a lot of heat.

10) Power and torque are related. The more power, the more torque.

11) A motor's actual rated amps (if missing from the spec sheet) can be calculated by dividing the specified volts supplied to it by the ohms of resistance it has.

Driving stepper motors

To make a stepper motor work, you need to use

  1. a stepper driver chip or
  2. a microcontroller and, optionally, one or two full h-bridge chips

Stepper Driver Chips

These chips keep the power that drives the motors separate from the power that is on the arduino. The arduino can't provide enough juice to power the stepper motors directly. This is why you have to use separate chips to sort of act as valves that control how the motor spins.

Another benefit that stepper driver chips provide, is that they provide fractional steps. This helps smooth out the motion of the stepper motor. Without fractional steps, stepper motors can have a tendency to vibrate or resonate at certain RPMs.

Here's a list of stepper driver chips (newest first):

Allegro A4988 (QFN)
Used in Pololu stepper driver boards. Same as A4983 but offers overcurrent protection.
Allegro A4983 (QFN)
Used in Pololu stepper driver boards. Discontinued product. Replaced by equivalent A4988.
Allegro A3992 (DIL or TSSOP)
Used in Gen L Electronics
Allegro A3982
Improved over v1.2 in v2.2
also used in stepper motor driver v2.3
Allegro A3979
Abandoned due to tiny size in v2.1
Allegro A3977
Abandoned in stepper motor driver v2.0
Allegro A3967
Used in Easy Driver boards sold on sparkfun
Not sure if they can be used in repraps but they're good for experimenting
Texas Instruments DRV8811
Used in generation 6 electronics
This is probably why the FiveD firmware was modified
L297/L298 combo
Last stepper motor driver to use this was v1.2
L298 used in Valkyrie Redux

Microcontroller-based Stepper Drivers

Microcontroller based steppers drivers can achieve very high rotation speeds in stepper motors. Using a microcontroller, it is possible to have extreme control over exactly how each individual coil is energized inside the motor. This is absolutely necessary to obtain high speeds because as speed increases, timing of the coils firing must be perfectly in sync. Quoting from Dr. Iguana:

If you've ever pushed someone on a swing, you know that a small, well timed push can cause that person to swing higher and higher. Miss a push or two by even a small amount and the 'power transfer' is significantly less. This is the situation in stepper motors at high speeds. If you don't match the pushes or steps to the actual state of the motor it will run poorly.

In order to handle current higher than what the microprocessor can allow, the controller needs to use full H-bridge chips.

Normally, an H-bridge is used for controlling a plain old DC-motor but in this case, the h-bridge chips are used for exactly controlling the amount of electricity that goes to each individual coil on the stepper motor. Thus, for bipolar stepper motors, it needs 2 chips per motor.

Open Source Stepper Drivers


The AVRSTMD is an open source microcontroller-based stepper driver. It uses an atmega48 processor and two National Semiconductor LMD18245T current limited h-bridge chips.

Dr. Iguana

The Dr. Iguana stepper driver is based on a dsPic33 microcontroller and two L298N H-Bridge chips. It can achieve speeds up to 800 RPM. A very good source of information about microcontroller stepper drivers can be found on his website here along with all the schematics, gerber files, source code and BOM for the stepper driver.

RepRap Stepper Motor Driver v1.x

  • obsolete*

Cache-2950488044 8ba115bd24 m.jpg

The first generation of RepRap stepper motor drivers. (Note: These boards were used in the generation 2 collection of electronics.) Uses the L297/L298 stepper motor driver combo. Half-stepping. Handles up to 2A. All through hole. A nice, solid driver. It uses some old technology, so it's not as fancy as the newer stepper drivers, but it gets the job done. Read the documentation page here

RepRap Stepper Motor Driver v2.x

  • obsolete*

Cache-3218206144 6461b3e2c0 m.jpg

The second generation of RepRap stepper motor drivers. (Note: These boards were used in the generation 3 collection of electronics but could be retrograded to generation 2.)

Uses the Allegro A3982 chip which does a bunch of nice things and makes the board much simpler. It also drops the price by $10 compared to the v1.x series. It can handle up to 2A, and does half-stepping. The only downside is that it's SMT, which can be a bit scary for people. It's all large SMT parts, so it's pretty simple to solder, especially with the solder paste / hotplate method. Read the documentation page here.

Wiring Your Stepper

Pretty much all of our RepRap electronics are designed for Bipolar stepper motors. Every bipolar stepper motor has 4 wires that need to be wired to the driver board. These are labeled A, B, C, and D for lack of better terms. A and B are connected, as well as C and D. You can generally find out which wires are connected using a multimeter to measure the resistance. If you measure a small resistance (1-30 ohm) then they are connected. Generally, they are color coded and we have datasheets available, so things are easy.

On motors with six wires, you'll find 4 pairs with low resistance and two pairs with double the low resistance. These two pairs with high resistance are the ones you want. Ignore the remaining two wires and proceed as if you had four wire steppers. In a datasheet it's the middle wire of each of both coils which has to be ignored.

Shortcut for finding the proper wiring sequence

Reproduced by kind permission of Rustle Laidman at [1]

Connect the 4 coil wires to the controller in any pattern. If it doesn't work at first, you only need try these 2 swaps:

Name A B C D
Arbitrary first wiring order 1 2 4 8
Switch end pair 1 2 8 4
switch middle pair 1 8 2 4

You're finished when the motor turns smoothly in either direction. If the motor turns in the opposite direction from desired, reverse the wires so that ABCD would become DCBA.

NOTE: Some Reprap Electronics (such as RAMPS) will be looking for the endstops to be hooked up while testing the motor wiring as noted above. In this case you may see your motor move smoothly in one direction, but not at all in the other (as it thinks the endstop is triggered). If your firmware allows you to disable endstops you should do so for testing motor wiring, or alternatively you can connect the motor to the Extruder stepper motor connector to check that it moves smoothly in each direction.

NEMA 17 Motors

Lin Engineering / 4118S-62-07


This is an awesome little NEMA 17 stepper motor. It is the primary motor used on the Cupcake CNC. It has good torque and a small size. Here are some of the specs:

  • 200 steps per revolution (1.8 deg/step)
  • 2.5 A/phase
  • Phase resistance: 0.6 ohm
  • Phase inductance: 0.93 mH
  • Holding torque: 3240 g-cm or about 0.31 N-m
  • Shaft diameter: 0.190" [4.83 mm]
  • Shaft length: 0.50" [12.7 mm]
  • Motor depth: 1.34" [34 mm]

NEMA 17 is a standard motor mounting geometry. The outside of the motor housing is 1.7" x 1.7".

Name Pololu pin Color
A 2B Red
B 2A Blue
C 1A Green
D 1B Black


Technical Information

Zapp Automation / SY42STH47-1684B

  • 200 steps per revolution (1.8 deg/step)
  • Rated current: 1.68 A
  • Phase resistance: 1.65 ohm
  • Phase inductance: 2.8 mH
  • Holding torque: 4400 g-cm [0.43 N-m]
  • Shaft diameter: 5 mm
  • Shaft length: 22 mm
  • Motor depth: 47 mm
Name Pololu pin Color
A 1B Black
B 1A Green
C 2A Blue
D 2B Red


Technical Information

NEMA 23 Motors

Nanotec ST5709S1208-B

This was the original standard RepRap stepper motor. It has 400 steps to one revolution (0.9o per step). It actually has 4 coils (which means it can be wired as both a bipolar and unipolar), but we join up the wires to turn it into a bipolar motor.

Bipolar - Serial

This configuration is suited for our driver boards. It has higher impedance and higher resistance which means it draws less current. In this mode it can handle 0.85 amps, which is ideally matched to our L298 based boards. We recommend wiring it in this configuration.

Name Color
A Red
B Black
C Green
D Yellow

You will also need to splice the following wires together:

  • Red/White and Black/White
  • Green/White and Yellow/White


Bipolar - Parallel

This configuration offers higher performance. It has lower impedance, and lower resistance. That means you can push more electrons through, at a faster rate. However, it will draw about 1.7 amps, which is at the upper end of what the L298 is capable of delivering. We do not recommend wiring it like this.

Keep in mind that two wires make up the start and end of each coil.

Name Color
A Red and Black/White
B Black and Red/White
C Green and Yellow/White
D Yellow and Green/White


Technical Information

Keling KL23H51-24-08B

Cache-2122608287 2c91e1ae6e m.jpg

This is the RepRap stepper motor for the Arduino controller. It has 200 steps to one revolution (1.8o per step). It actually has 4 coils (which means it can be wired as both a bipolar and unipolar), but we join up the wires to turn it into a bipolar motor. It is much cheaper than the Nanotec, and with half-stepping it is almost as accurate. (The Keling KL23H51-24-08B is also used in the Eiffel prototype).

Bipolar - Serial

This configuration is suited for our driver boards. It has higher impedance and higher resistance which means it draws less current. In this mode it can handle 1.5 amps, which is ideally matched to our L298 based boards. We recommend wiring it in this configuration.

Name Color
A Blue
B Green
C Brown
D White

You will also need to splice the following wires together:

  • Red and Yellow
  • Black and Orange

Bipolar - Parallel

This configuration offers higher performance. It has lower impedance, and lower resistance. That means you can push more electrons through, at a faster rate. However, it will draw about 3 amps, which our L298 is just not capable of delivering. We do not recommend wiring it like this.

Keep in mind that two wires make up the start and end of each coil.

Name Color
A Blue and Yellow
B Red and Green
C Brown and Orange
D Black and White


Technical Information

FL57STH51-2808A (axis extending 1 way) and FL57STH51-3008B (axis 2 ways like the picture)


The stepper motors are provided by Bits From Bytes. They come in two variations. Bought three from Bits From Bytes and I got one with the axis through and extending from both ends, and two with the axis extending one side. Their weight is slightly above 0.6 kg (I measured 619 gram).

To make the unipolar stepper a bipolar one, connect these wires together:

  • Blue and Red/White
  • Green and Black/white
Name Color
A Blue/white
B Red
C Green/white
D Black

Datasheets: FL57STH51-3008B. FL57STH56-2008B

Lin Engineering 5718X-05S

StepperMotor-motor 5704.jpg

The 5718X-05S has the right specification to drive RepRap from the PIC controllers but we haven't tested it yet. It should work with the Arduino electronics too. It has 200 steps per revolution, so you need to set the controller to half-step it to get the resolution needed. Take care to get the model where the output shaft comes out front and back, not just at the front.

Stepper Motors

There is a good article on Wikipedia explaining the technology behind stepper motors. The physical size of stepper motors are usually described via a US-based NEMA standard, which describes the bolt-up pattern and shaft diameter; the RepRap site has an article explaining the standard. In addition to the NEMA size rating, stepper motors also also rated by the depth of the motor in mm, the longer the motor typically the more powerful. Stepper motors also have a step size rating, 4 steps within each cycle. The step size, divided into 360 degrees gives the number of steps per revolution. For example, "1.8 degrees per full step" is a common step size rating, equivalent to "200 steps per revolution".

Some stepper motor controllers generate 'microsteps' by generating a sine/cosine waveform for the stepper coils. The microsteps become less accurate then the full size steps, but allow finer control and smother operation. Also check the motor torque and the current draw to compare stepper motor strengths.

The pages related to building a Mendel has a list of suppliers of stepping motors.

The power of a motor is usually proportional to the physical size of the motor, The Darwin version of RepRap primarily used NEMA 24 motors, whereas the Mendel version is designed to use either NEMA 14 or NEMA 17 motors. The more commonly used size is NEMA 17 as it is easier to find NEMA 17 motors with sufficient torque compared to NEMA 14.

The StepperMotor page has even more details about the most common motors used in a RepRap/RepStrap.


The Mendel officially requires 13.7 N-cm torque (0.137 N-m or 1400 g-cm or 1.215 lb-in) for each of the X, Y and Z axes. Recent designs for extruders (ExtruderController) almost exclusively require stepper motors as well, but no torque requirements have been given in those designs.

Stepper motors do not offer as much torque or holding force as comparable DC servo motors or DC gear motors. Their advantage over these motors is one of positional control. Whereas DC motors require a closed loop feedback mechanism, as well as support circuitry to drive them, a stepper motor has positional control by its nature of rotation via fractional increments.

Power and current

All stepper motors will have certain specifications for voltage and current (typically 2.8 V and 1.68 A); as long as the stepper driver/controller does current control, you can use any supply voltage greater than the motor's rated voltage. In fact, a large difference is advantageous to the top speed of the motor. If the driver/controller does not do current control, you must use a supply voltage fairly close to the motor voltage (no more than 2x the voltage specified by the manufacturer) or the motor will overheat and burn out its winding insulation or demagnetize its rotor.

The version 2.3 RepRap axis controllers do have current control.

Stepper drivers vs stepper controllers

To run a stepper motor, two things are normally required: a controller to create step and direction signals (at ±5 V normally) and a driver circuit which can generate the necessary current to drive the motor. In some cases, a very small stepper may be driven directly from the controller, or the controller and driver circuits may be combined on to one board.

The stepper controller drives 3 wires -- traditionally labeled "step", "dir", "GND" -- which carry motion information to the stepper driver. (Often these 3 lines are opto-isolated at the front end of a stepper driver). The stepper controller is typically a pure digital logic device, and requires relatively little power.

The stepper driver connects to the 4 thick wires of the stepper motor. It contains the big power transistors, and requires a thick power cable to a DC power supply, because all the power to drive the motors runs through it.

PWM and Stepper Drivers

From Wikipedia:[[2]]: Pulse-width modulation (PWM) is a very efficient way of providing intermediate amounts of electrical power between fully on and fully off. A simple power switch with a typical power source provides full power only, when switched on. PWM is a comparatively recent technique, made practical by modern electronic power switches.

Stepper drivers normally work by chopping up a supply voltage using an embedded PWM chip. These chips do require minor support circuitry (which is the primary thing you pay for when you buy a stepper driver). The PWM chips themselves usually have a unit price below 10 USD, depending mostly on their rated current.

Some example chips include:

Chip Verified? Max current Comments
[L293D Yes 0.6 A Multiples can be stacked on top of each other to divide up amperage.
[A3967] No 0.75 A Slightly underpowered, at only 750 mA/phase
[A4983] Yes 2 A Can get very warm, active cooling is needed
[A4988] Yes 2 A Identical and pin compatible to A4983, but also pullup on M1 and motor short circuit protection
[Allegro 3977] No 2.5 A
[TB6560] No 2.5 - 3 A

Stepper drivers

Sourcing stepper motor drivers can be a bit difficult. The RepRap V2.3 stepper drivers are very hard to purchase pre-assembled. Sourcing the individual parts and assembling the controllers can be done with just a little bit of skill; for those without skills or materials to assemble the boards, generic stepper drivers can be purchased. In Europe it will usually be more cost-effective to purchase pre-assembled boards than to purchase the individual parts and perform a DIY assembly.

Alternative sources for stepper drivers

Manufacturer Verified? Location Max current Microstepping Comments
Stepper Motor Driver 2.3 (A3982) Yes US 2 A 1/2 Listed for comparison.
EasyDriver (A3967) Yes US 0.75 A 1/8 Slightly underpowered compared to other drivers, at only 750 mA/phase. bothacker uses EasyDriver[3], and reports that it has plenty sufficient power for Mendel. Recommended.
Pololu stepper driver board Yes US 2 A 1/16 Can get very warm; active fan cooling or passive small heatsink is needed above ~0.5 A. Recommended.
4 Axis Stepper Motor Driver Controller (A3977) Yes US 2.5 A 1/8 4 stepper drivers on a single board.
DIY CNC No GB 2.5 A 1/8 Can drive 1 stepper; discount when buying several.
Arduino Motor Shield No US 0.6 A ? Requires Arduino as controller. Can drive 2 servos, 4 DC, or 2 (bipolar or unipolar) steppers. Website notes that you can increase the max current by piggy-backing (soldering a chip onto a chip) another L293D chip on top of the first (and another one on top of that)
TB6560AHQ based No GB/PRC 1.5 - 3 A 1, 1/2, 1/8, 1/16 Can drive 3 to 5 steppers depending on model; read more.
Stepper Driver 2.3 Clone by kymberlyaandrus Yes US 2 A 1/2 Same schematic but physically smaller than the original version. The trim pot doesn't have a start/end point so adjusting the current can be more difficult than other boards. The terminal blocks are nice because they don't require making special connectors.
Gecko Drive Yes US 3.5 A 1/10 (only) Can drive 4 steppers
Nanotec SMC11 Yes GER 1.4 A 1/16 with cooling until 2.5 A
LiniStepper by Roman Black no US 3 A 1/18 and "stepless" Open Source: Circuit Diagram, PCB (Board) Layout, and PIC Software all available.
Tri Duino Stepper ??? ??? ??? ??? Open Source
A3979breakout ??? ??? ??? ??? ???
grblshield No US 2.5 1/8 3 axis controller plugs onto Arduino Uno or similar

PMinMo stepper motor driver comparison.

Mid-Band Resonance Compensation

Gecko drivers have a feature called mid-band resonance compensation which keeps stepper motors from stalling due to resonance issues that can occur when the motor is turning in the range of 5-15 RPMs. This can be very useful when controlling the steppers on a Tiag mill, for example. However, the stepper motors in a Mendel never run anywhere near that range, so mid-band resonance compensation provides no benefit to a Mendel build.

Further reading

  • Alternative electronics has some design considerations for people designing stepper motor controllers and other reprap electronics.
  • The PMinMO wiki: "Motors" article gives some recommendations for CNC motor selection.
  • The Open Circuits wiki "motor driver" article has a long list of open-source stepper motor drivers, and related information.
  • Some Wikipedia: linear actuator#Electro-mechanical actuators, rather than the motor spinning the lead screw as in most CNC designs, instead the motor spins an internal lead nut, pulling the motor up and down a (non-spinning) lead screw that passes all the way through the motor. The electronics works identically to other stepper motors -- standard stepper motor electronics can drive it. One RepRap researcher points out that this makes the mechanics simpler and, with a few changes to the design, could potentially lower total cost of a RepRap.[4][5][6]
  • Stepper World has a great series of articles about how stepper motors work.
  • For details refer to NEMA Standards Publication ICS 16-2001, "Motion/Position Control Motors, Controls, and Feedback Devices" (a copy may be downloaded here.
  • Retrieved from ""