Changing Microstepping

Last Update: 19 May 2020

Every LongMill is powered by our Longboard CNC controller which has four integrated TB6600 stepper motor drivers (pictured). By default, we set each driver to 1/8 microstepping via the onboard DIP switches. We chose 1/8 microstepping because we found that it’s a good balance between motor movement resolution and torque outputted from the motors. The theoretical resolution with this setup is 0.005mm.

What is microstepping

Each stepper motor has a certain number of steps in its internal rotor which determines the number of steps required to make a full rotation. With the NEMA 23s used on the LongMill, each 360-degree rotation is split up to 200 individual steps. The controller and driver can “step” forward or backward, and by stepping forwards or backwards a certain number of times, that movement can translate into the rotational motion that ultimately moves each axis of the motor.

200 steps per rotation might seem like a lot, but in many cases it would be beneficial to have an even more accurate control of the motors. Microstepping is a technique that allows for steps to be broken down into ‘sub-steps’ so that the stepping resolution can be increased. This allows us to:

Changing microstepping

Currently, the steps/mm EEPROM settings in the LongMill ($100, $101, and $102) are set to 200. This value is important because it helps the controller to interpret the gcode file it’s given and convert mm movements to step signals that it feeds to the motors. The math for obtaining that number comes from this formula:

Steps/mm  =   Steps/revolution  /  (microstepping value  x  gearing ratio from motor to lead screw  x  lead screw pitch  x  # of starts)

And so when we plug in these values:

  • LongMill stepper motors are 200 steps/rotation
  • Drivers set to 1/8 microstepping by default
  • Each axis is direct drive and Z-axis has 1-to-1 pulley ratio
  • Our lead screws have a 2mm pitch and are 4-start (2mm x 4 = 8mm lead of the lead screw, by the way)

We get the EEPROM values =  200  /  (1/8  x  1  x  2  x  4)  =  200 steps/mm

If you’d like to change your machines microstepping values, you’ll have to change the positions of the desired drivers onboard DIP switches and set the EEPROM setting to match. For example, changing the Z-axis driver to have 1/16 microstepping would require following the table below and then in your UGS console sending the command “$102  = 400” to set the appropriate steps/mm of the Z-axis. Each driver can be adjusted to use either single-step or 1/2 step, 1/4 step, 1/8 step, and 1/16 step microstepping. Bare in mind that changes to the DIP switches should only be made when your LongMill is powered off, and also understand that if you play with microstepping you’ll find that positional resolution and torque tend to be inversely proportional.

  M1 M2 M3
1 Step OFF OFF ON
1/2 Step OFF ON OFF
1/4 Step ON OFF OFF
1/8 Step ON OFF ON
1/16 Step ON ON OFF