Mostly Printed CNC: Stepper Drive

The MPCNC kit includes five Automation Technology KL17H248-15-4A stepper motors:

MPCNC Stepper label - KL17H248-15-4A
MPCNC Stepper label – KL17H248-15-4A

If link rot should set in, a direct rip from the website:

NEMA 17 BIPOLAR STEPPER MOTOR, KL17H248-15-4A, 76 oz-in

Shaft: 5mm diameter with flat
Current Per Phase: 1.5A
Holding Torque: (76 oz-in)
Rated Voltage: 4.2V
NO.of Phase: 2
Step Angle: 1.8° ± 5%
Resistance Per Phase: 2.8Ω± 10%
Inductance Per Phase: 4.8mH± 20%
Insulation Class: Class B
Dielectric Strength: 100Mohm
Operation Temp Range: -20 ~ +40° C
Lead Wire: 22AWG / 750mm with connector to stepper motor driver

Red- 1A
Green- 1B
Yellow- 2A
Blue- 2B

A nice torque curve:

KL17H248-15-4A - Torque curve
KL17H248-15-4A – Torque curve

The present MPCNC design wires the motors on each end of X / Y axes in series. Each motor has 2.8 Ω of DC resistance = 5.6 Ω total and, given the small wire gauge (allegedly 22 AWG on the motors and unspecified for any eBay cables) and six (!) teeny header pins in series along the wires for each winding, a total series resistance of 6 Ω seems reasonable and is, in fact, what I measure with an ohmmeter.

The stepper drivers arrived preset for 1 A peak:

MPCNC Stepper Drive - as delivered - 500 mA div
MPCNC Stepper Drive – as delivered – 500 mA div

The vertical scale is 500 mA/div. The waveform comes from a 10 mm move at 5000 mm/min = 83 mm/s, which is absurdly fast for such a machine, particularly seeing as how the default firmware limits it to 190 mm/min = 3 mm/s. Cutting speeds will be much lower than either of those.

The default DRV8825 current-setting pot setting was 600 mV, for a nominal current motor current of 1.2 A peak. That’s reasonably close to the measurement, all things considered.

However, because the motors run from a 12 V supply at 1 A, the winding and wiring losses mean they operate at a bit over 8 V: much much less than the nominal 24 and 32 V plotted in the torque curve. More voltage = faster response to microstep current changes = higher top speed. At sensible speeds, this surely does not matter.

The default DRV8825 stepper driver module jumpers select 32 microsteps = 6400 step/rev, a factor of four higher than the chart.

Part of the tweakage will be to sort that out; a 24 V supply may be in order. Driving each motor separately (as required for automatic de-racking homing) at 1.5 A/phase would require 3  1.5×√2 A/motor × 5 motors = 15 10.5 A, which seems excessive even to me, particularly in light of sending it across a RAMPS board. At 1 A/phase, you need 10 7 A, which falls within the realm of reason and would be kinder to the PLA motor mounts. It’s not clear boosting the motor voltage will produce any real benefit, although giving the drivers more headroom seems reasonable.

The GT2 drive belts have 2 mm pitch, so the 16 tooth drive pulleys move 32 mm/rev and require 200 step/mm, which seems high to me. At a nice round 100 mm/s, the steppers must tick along at 20 k step/s, half of Marlin’s top speed, which may explain some of the roughness around 80 mm/s.

The torque curve suggests the motors want to run under 200 RPM = 3.3 rev/s = 100 mm/s with the stock 16 tooth pulley. No problem with those numbers!

Using 16:1 microstepping would produce 3200 step/rev, 100 step/mm, thus half the step rate at any speed. Reducing the driver step frequency can’t possibly be a Bad Thing for Marlin.

3 thoughts on “Mostly Printed CNC: Stepper Drive

  1. wires the motors on each end of X / Y axes in series

    Huh, that’s a bit unexpected – RAMPS has an optional dual Z outputs but wired in parallel. Dropping the supply voltage (or doubling the inductance) in series connection can’t be good for high RPM performance. With 1A per motor, driver should still have enough oomph for two motors in parallel which would leave the performance unchanged. I vaguely remember some driver datasheet specifically calling against running dual motors form single driver, but I can’t find it now.

    Regarding micro-stepping, 8 and 16 both seem to work just fine for 3D printing without any noticeable difference except Marlin having to work harder in the latter case.

    Regarding 12V vs 24V motor supply, I didn’t see any difference in practice. In both cases motors performed without issues. I’m sure that would change if you pushed them faster, but for a belt driven system, that doesn’t seem to be an issue as you just don’t need that much RPMs. When it comes to heaters and wiring, 24V supply wins hands down though.

    As for power requirements, the printer I’m refurbishing had a no name Chinese 400W 24V supply feeding 250W bed, two 25W hotends, 6 fans, Olimex A10 Linux board, 4″ color TFT and 6 of 1.64A motors (independent dual Y design) all turned on to 2.2A peak on the driver side without any noticeable power issues. I sometimes feel that RAMPS and other 3D printing boards somehow cheat the basic thermodynamic laws but they do work even when you’d think they shouldn’t :)

    Also, I don’t think you should add peak phase currents when calculating power requirements, the worst case should be 1.41 * Ipeak because driver never drives both phases fully on.

    Which decay mode are you using? How bad is the noise? This guy had an interesting idea on making the mixed mode performing similar to fast mode minus the awful noise it usually makes no DRV8825. I’d love to hear your take on his idea.

    1. Good catch on total current: fixed!

      The whole design depends on a motor at each end of the axes, so putting them in series guarantees equal winding current with (nearly) equal torque and, even better, ensures they both stop if when the driver / wiring cuts out.

      I’m not the guy to ask about noise, because my world has no treble and very little midrange. If the drivers make an annoying sound, Mary will come downstairs to tell me about it … [sigh]

      1. The level of noise I’m experiencing with these puppies can be FELT just as well as heard, so I’m guessing yours don’t have a problem :)

Comments are closed.