Thing-O-Matic: X and Y Stage Masses and Forces vs Stepper Rating

While putting the HBP back together and stuffing it into the Thing-O-Matic, I did some weighing and measuring with the intent of finally putting numbers on the required motor torques.

The X stage weighs 114 g without the HBP heater and hardware. The aluminum build plates weigh 100 g each.

The assembled XY stages, HBP hardware, and two aluminum plates weigh about 1.1 kg.

The individual rods slide back and forth in their bearings with essentially no force at all; it’s less than the resolution of my pull scale. Call it 1 ounce = 0.3 N = 30 g.

After aligning the rods, I popped the X-stage HBP back in the Y stage, where I discovered I’d adapted the holes to suit the very-much-misaligned ABP’s rods. A bit of sanding freed up things up, but the final result was disappointing: sliding the X stage required about 0.75 pounds = 3.3 N = 340 g from my pull scale. Those rods remain over-constrained despite my best efforts.

The pull scale required less than 2 ounces = 0.6 N = 60 g to haul the Y stage back and forth after it was back in the Thing-O-Matic, so those ball bearings on the left-hand rod work really well. I must doodle up something similar for the X stage, for sure!

With the belts tensioned and the motors unplugged from the drivers, both the X and Y stages require about 2 pounds = 9 N = 0.9 kg of force to move. Those numbers depend strongly on belt tension, to the extent that the tension ought to be a measured quantity. The Y stage has some stiction that I guesstimate around 1.5 kg, but that’s not a reliable number.


Moving a well-adjusted X stage requires 5 times more force than the Y stage. What it’s like for a built-as-shipped X stage boggles the mind.

With the belts more-or-less properly tensioned, the force jumps dramatically for both stages. The force required to move the Y stage dwarfs the bearing resistance. The force for  a carefully adjusted X stage is about twice the bearing resistance.

The motor drive pulley has about 5 mm radius, so the torque to (slowly) move a 1 kg = 10 N load will be about 50 mN·m = 10 N × 0.005 m.

This torque-speed curve from the Kysan product information page for the 1123029 (aka 42BYG034-4.78) motor used in Cupcakes and Thing-O-Matics shows that the pull-in torque starts at 14 mN·m and goes downhill from there, as is customary for stepper motors:

Cupcake TOM Stepper Torque Curve
Cupcake TOM Stepper Torque Curve

However, the “test conditions” apply 400 mA from a 24 V source.

In a Thing-O-Matic, the motor windings sport a 35 ohm resistance and are driven from a 12 V power supply. Ignoring voltage drops in wiring, current-sense resistors, and driver transistors, you cannot push more than 340 mA = 12 V / 35 Ω into the winding. The current is likely around 300 mA, after taking all those factors into account.

The REF pot on the stepper driver board has no magic properties. If the REF voltage is higher than about 0.6 V = 300 mA, then the driver can’t regulate the current. Increasing REF simply eliminates the microsteps around the current peaks: their reduced current values remain higher than the maximum possible motor current.

For example, the MBI instructions specify X and Y motor REF voltages of 1.5 V = 750 mA, a factor of 2.5 more than the motor can actually draw at 12 V. That means only microsteps that reduce the current below 40% of the maximum have any effect; in 1/8 step mode that means only 10 of the 32 microsteps reduce the current and the other 22 use 300 mA.

By and large, the X and Y motors run in L/R mode with no microstepping; that horrible sound you hear is the motors screaming in agony. All of the touted advantage of microstepping do not apply to these motors and drivers under these conditions.

Motor torque is roughly proportional to winding current, so the actual pull-in torque would be at most 3/4 of the amount shown in the graph: call it 10 mN·m.

Therefore, the torque required to move a Thing-O-Matic stage against the forces described above exceeds the motor’s pull-in torque rating by a factor of 5. That ignores the torque required to accelerate / decelerate the stage mass.

No wonder those poor motors lose steps at the slightest provocation!

The motor’s rated holding torque is 240 mN·m, which derates to 180 mN·m at 300 mA. If the motor runs slowly enough, it can drag the stage along step-by-step.

At 100 rev/min, the lowest speed on the torque-speed graph, the stage moves at:

52 mm/s = (100 rev/min) × (1 min/60 s) × (π × 10 mm/rev)

I’ve been running my Thing-O-Matic at 40-50 mm/s, but that’s about the upper limit even after a whole bunch of careful adjustments. Now I understand why: these are the wrong motors for the job.

The motors operate at the ragged edge of their performance ratings even while moving at conservative feed rates. They probably produce more torque than their ratings, which is the only reason they work as well as they do. They’re certainly not suited for speeds over 50 mm/s, even if some folks have gotten them running up there; I could jog them at 70 mm/s with marginal reliability.

In addition, the very high winding resistance dissipates a tremendous amount of power that doesn’t contribute to turning the rotor: 3.2 W = (300 mA)2 × 35 Ω in each winding, 6.4 W for both. That’s derated very slightly by the few active microsteps, but it still makes for a rather toasty motor.

[Update: More brain fade. The motor max power spec equals a single winding at rated current times rated voltage. Derate the current in multiple windings so the total does not exceed that power.]

What’s needed is a NEMA 17 motor with decent pull-in torque, a few ohms of resistance per coil, and maybe a 1 A rating. Sort of like the one I’m using on the geared stepper extruder

20 thoughts on “Thing-O-Matic: X and Y Stage Masses and Forces vs Stepper Rating

  1. Say Ed,

    I was reading and thinking and writing and then I got to this: “By and large, the X and Y motors run in L/R mode with no microstepping; that horrible sound you hear is the motors screaming in agony. All of the touted advantage of microstepping do not apply to these motors and drivers under these conditions.”

    I’d just written last week (?) and you’d rebutted my grousing about our errant motor/controller settings and motor noise. I’d stated that my motors’ were in pain. You’d told me to get used to it. All motors make noise. *** So, you thought a little more and now agree? Good man. —- More later. —-

    1. There are two noises: the high-pitched whine caused by the chopper current limiting and the screech/grumble/whatever caused by a motor getting pulses at microstepping speed while actually running in L/R mode.

      The chopper whine happens even with the motors at rest. That’s the sound I rebuilt my Sherline drive box to reduce, but it’s inherent in chopper drivers.

      The drive overcurrent noise happens when they’re moving. I really didn’t get much of that there, because I tweaked the mechanics and set the current from first principles, without considering the MBI settings. These motors run under 400 mA and, thus, actually did use microstepping.

      In truth, I had no idea the MBI stepper driver settings had REV values that pushed the moters into L/R mode. Things didn’t seem quite right, but … I wasn’t expecting that.

  2. So, if run off of a 24V source, would they be acceptable? I can do it with the latest version of the Pololu driver carrier I made (, but haven’t tried it yet.

    Also, thank you for this. I’m working on acceleration/deceleration code for the firmware (see, and needed some rough numbers to put in for the limits. I’m running a Cupcake with the X/Y unmodded, so I was thinking 40mm/s/s a good starting point as maximum acceleration/deceleration without skipping.

    1. if run off of a 24V source, would they be acceptable?

      Their rated current remains 400 mA, so boosting the supply voltage with the current at the MBI-specified 750 mA will cook them in fairly short order. They already overheat with a 12 V supply and don’t produce enough torque to get out of their own way.

      Reducing the REF setting to 400 mA with a 24 V supply would drive them at their rated current and allow microstepping, but the mechanical loads are so far beyond their rated torque that I think they’ll remain marginal. Not to mention that they’ll still overheat.

      Back of the envelope: even the puniest Minebea 17PM-J0xx (for example) bipolar stepper has a pull-in torque around 130 mNm at 600 mA, an order of magnitude more than the Kysans at 400 mA, and a resistance around 6 ohms. To get 50 mNm you’d run 230 mA and dissipate 320 mW. That torque will handle the slow-speed load, make at least a dent in the acceleration torque requirement, and will remain barely warm to the touch.

      To run at full torque, 600 mA will dissipate 2.2 W, which might get toasty. I’d rather reduce the frictional/binding mechanical load, then figure the actual torque required for bounded acceleration, and set the current to match. I suspect it’d be no big deal.

      [Update: re-figure power based on the single winding limit. Doesn’t change the outcome.]

      1. I’m using the Pololu drivers, , which are based off of the Allerga A4983 chip, which has only the one tunable setting: Current limit.

        This allows it to run at the set current and use more or less voltage, with intelligent chopping and decay.

        I’ll double-check that I’m running them at 400 mA, and at least I’ll get them at their maximum.

        1. You can measure the X axis motor temperature (on a TOM, anyway) by jamming a thermocouple bead into one of the motor mounting bolt holes. The motor specs don’t give temperature ratings, but I’d worry if it got over 90 C = 200 F (a rise of maybe 50 C over ambient). That plywood box doesn’t help with heat dissipation.

    2. 40mm/s/s

      To accelerate to 40 mm/s from a standing start would require 20 mm (v2 / 2a), which will absolutely ruin the print speed for most objects: it’ll spend all its time accelerating and decelerating, with no time at full speed.

      I have my Sherline mill set to 5 in/s2 (125 mm/s2) and that’s nose-pickin’ by real CNC standards. But you may be right about the Kysan motors; the pull-in torque is exceedingly low compared to just the static loading.

      But if the acceleration appears as an easy-to-change RepG parameter, you can tune it to match whatever static & dynamic loads the machine presents…

      I must do more doodling on this, although I really don’t trust my measurements for more than one significant figure. Maybe that’s enough to get some idea of what’s going on?

      1. I say 40mm/s/s, but I dont really mean it. I mean quite a bit more.

        I can print at 40mm/s for at least an hour without a skip.

        I’m running at 1/16th microstepping, and I’m set to ~94 steps/mm. At 40mm/s, or 3,760steps/s, it can stop within one step with deceleration. Shooting from the hip, that would be 40mm/(1/94 second)/second, or 3,670mm/s/s.

        That seems extremely high.

        As you were saying about it always in acceleration and deceleration, and never at the set speed, that should be fine as long as they’re both at the limits of the machine, which we are printing at now without going any faster. IOW, if I set it to accelerate (decelerate) at the equivalent of the fastest it can currently go from a dead stop, I will print faster. I should even be able to turn it down some, keep the steppers a little cooler, and still go quite a bit faster.

        1. it can stop within one step with deceleration

          I think the drive belts provide several steps of compliance, so that the motors have a grace period while the load reaches its maximum. My modified clamps seem to bend the belt more than the angled ones, so the initial load on my motors may be even lower.

          accelerate (decelerate) at the equivalent of the fastest it can currently go from a dead stop

          The definitive test for that would be to run at maximum speed in each direction, then “instantly” reverse to maximum speed in the other, for travel distances ranging from a few mm up to the full build platform size. Bottle that up in a G-Code routine that also homes before and after the test: if the two home locations match, then you’re golden!

          It would probably shake your printer off the table, though…

          That seems extremely high.


          As a cross-check, use the distance covered by two steps, again with v2 = 2*a*x. At 0.011 mm/microstep, you’d get 402/(2 * 0.022) = 36000 mm/s2.

          Frankly, I don’t believe those numbers… but I must clear the desk and run some calculations based on those measurements. Having just returned from a trip with a stomach virus that wiped me out yesterday and having another trip on tap for next week, that could take a while. [sigh]

          [Edit: Off by a factor of ten. Looks like today is a dead loss, too.]

          1. The compliance of the drive train does matter. I had my “soft” coupler ( ) and could start and stop my Z axis ( ) all day at 550mm/min with no skipping (video here: ).

            When I put in the “stiff” coupler ( ), it would not work reliably until I reduced the speed to around 500mm/minute.

            So I think that the rather pliable drive train of the MBI products is allowing the current system to get away with the instant acceleration. All that springy compliance would come back within a few steps to haunt you though (wiggly corners).

            1. The 10% speed difference between the stiff and compliant couplers suggests something else is at work, because that’s only a 10% torque difference. The couplers may be reducing a mechanical resonance, which is certainly a Good Thing in and of itself.

              I really like your coupler, though. I’m kicking around an idea for a different mechanical lashup where it’ll come in handy!

    1. It’s too long to replace the X axis motor, doesn’t have the right shaft for the MBI pulleys, and there’s no torque vs speed curve, but the winding resistance suggests it’s a much better motor for the job.

      an appropriate current setting?

      I’d start with 100 mA and work upward until it stopped losing steps on the torture test at 50% higher speed than you expect to use. Or find the minimum current at which you can’t move the stage by hand, then add maybe 25%.

      Then print something complicated and see what happens. I must come up with a useful test file at some point, because I’m accumulating steppers here, too.

Comments are closed.