Stepper motors

Arduino SimpleFOClibrary supports most of common stepper motors out there.

Stepper motors are a subset of BLDC motors, and these are some of their characteristics:

  • 2 phase motors - 4 wires
  • Relatively high number of pole pairs >50
  • Internal resistance generally >5Ω
  • Currents generally under <5A

Stepper motors are one of the most common hobby motors. They are everywhere. The main benefits of using stepper motors are :

  • Price - both motors and drivers are quiet cheap
  • Simplicity of usage - direction and step interface
  • Good performance - high holding torque, velocity up to 1000rpm

Benefits of using Field Oriented Control with stepper motors

The main problem of using the stepper motors in open-loop (without position sensor) control mode is that we are obliged to neglect all the dynamics the motor and its load have. We assume that the motor is capable of obeying any command we might have. Therefore, when using the stepper motor we often underestimate the motor’s abilities in order to be sure that the motor can produce all the movements we ask it to do. This can be easily seen in 3D printers for example, if you set the speed of the printer’s movements to be too high, the motor will start skipping (missing steps or not being able to follow) and it will ruin your print. Therefore printers often have a feed-rate factor, which enables you to slow down your instructions and avoid the movements that your motor will not be able to produce.

Additional problem of the open-loop control of stepper motors is not knowing where the motor is, what makes the control algorithm unable to respond to the disturbances from the environment. Again in 3D printing this problem is well known as losing steps. If the nozzle of the 3D printer gets stuck for a second, the 3d printer will not know it and it will continue sending the commands to the motor as if the motor has been following the whole time. This often results by the ruined print.

So, some of the benefits of using the FOC algorithm with the stepper motors are:

  • Better dynamics
    • Proper choice of stepper driver + position sensor + microcontroller necessary
  • No missing steps
    • Disturbance rejection
  • Much more energy efficient
    • Voltage set to the motor is modulated to minimize the positioning error - (usually fixed )
  • Backdrivable

Some supported motors

Here are some examples of the different price range gimbal motors that have been successfully tested with this library.

NEMA14 BYGHW- 50PP (200 steps)
- 12V/1.2A
- 8.8Ω
- 35x35x35mm
NEMA17 42BYGH34-0400A- 50PP (200 steps)
- 12V/0.4A
- 30Ω
- 42x42x34mm
NEMA 17HS19-2004S1- 50PP (200 steps)
- 12V/2A
- 4Ω
- 42x42x48mm
NEMA23 57BYGH- 50PP (200 steps)
- >
- 12V/2.5A
- 1.2Ω
- 56x56x56mm