Motor load indicator

56 views
Skip to first unread message

Ryan Carlyle

unread,
Nov 22, 2019, 11:35:26 AM11/22/19
to 3DP Ideas
One hard thing to do with extruders is show their dynamic performance under load, like how close the motor is to stalling or whether they’re losing filament flow rate due to grip issues. I’m thinking about some kind of gear arrangement that would act as an analog comparator for the shaft angle of two motors.
- One dual-shaft motor drives the extruder like normal, and also a pulley or gear takeoff on the back side
- One motor is driven with no load but also has a pulley or gear takeoff
- The difference in angle between the two shaft positions is found via some kind of subtracting gearbox arrangement
- magnify that signal to be reasonably visible on an indicator dial

Car differentials being back-driven and phase shift gearboxes can sum two shaft rotations, and I’m fairly sure you should be able to come up with some similar arrangement that subtracts one from another. Haven’t worked out the details yet though.

Patrick Barnes

unread,
Nov 25, 2019, 4:03:03 PM11/25/19
to 3DP Ideas
In a much simpler case of an RC servo (implementing "force-limiting" when squeezing people's heads - fun project!) we found that just measuring the supply current worked wonderfully.

I know that stepper motors use current even when idle, but I bet there's a visible current increase with load.
I'd love to see if anyone sticks a logging ammeter on an extruder stepper driver, how much current is used at idle, when spinning without load, and when spinning with various loads.
It would likely be useful, even if some averaging needs to be done.

-Patrick


--
You received this message because you are subscribed to the Google Groups "3DP Ideas" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3dp-ideas+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/3dp-ideas/94799faa-5183-491c-8da0-6e9eb02a7445%40googlegroups.com.

Ryan Carlyle

unread,
Nov 25, 2019, 4:17:56 PM11/25/19
to 3DP Ideas
That’s tricky because the chopping driver basically eliminates any variation in coil current with load, until the motor is at very high speeds where back-emf becomes large. DC motors draw more current under load because the load makes them slow down, but that doesn’t really work with steppers. The driver pushes the same current at the same motor speeds whether highly loaded or no load. Once you’re in that high speed stepper range with lots of back-emf, being loaded shifts the back-emf waveform into sync with the coil current waveform. Back-emf makes the coil current rise slower and fall faster in that case. (And the opposite when braking.) But what most load-sensing stepper drivers do is simply MEASURE back-emf directly when coil current passes through zero. That’s easier than trying to infer stuff from the current waveform shape. Only works at high speeds though. 

Realistically, an encoder on the shaft that compares loaded angle to target angle is the "correct" way to measure stepper load, but it would be nice to have a slick mechanical implementation that anybody can build. 
To unsubscribe from this group and stop receiving emails from it, send an email to 3dp-ideas+unsubscribe@googlegroups.com.

Daren Schwenke

unread,
Nov 28, 2019, 11:30:47 AM11/28/19
to 3DP Ideas
Hmm.. Well for detecting the drive slipping you could just put an encoder on your filament idler and see if that matches the steps you are sending. Assuming you have a filament idler..

As for detecting the torque applied, just measure the motor wanting to spin on it's mounts. You could also detect slipping this way as well by an unexpected drop of that torque, probably.

Whosawhatsis

unread,
Nov 28, 2019, 8:07:01 PM11/28/19
to Daren Schwenke, 3DP Ideas
For that matter, you could put an encoder in a belt idler as well. That would detect backlash as well as missed steps. 

On Thu, Nov 28, 2019, 08:30 Daren Schwenke <darens...@gmail.com> wrote:
Hmm..  Well for detecting the drive slipping you could just put an encoder on your filament idler and see if that matches the steps you are sending. Assuming you have a filament idler..

As for detecting the torque applied, just measure the motor wanting to spin on it's mounts.  You could also detect slipping this way as well by an unexpected drop of that torque, probably.

--
You received this message because you are subscribed to the Google Groups "3DP Ideas" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3dp-ideas+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/3dp-ideas/e52a43ca-8c90-40d2-b708-fa1f01024059%40googlegroups.com.

David Crocker

unread,
Nov 29, 2019, 10:58:20 AM11/29/19
to 3dp-...@googlegroups.com

I'm surprised that nobody has yet pointed out that Trinamic stepper drivers that support stall detection already provide load sensing. It's only updated every full step, but I suspect that any load sensing method based on motor back emf would have that limitation.

David Crocker, Duet3D Limited

www.duet3d.com
duet3d.dozuki.com
forum.duet3d.com

Ryan Carlyle

unread,
Nov 29, 2019, 2:03:57 PM11/29/19
to 3DP Ideas
What I really want is a running-torque sensing rig that I can put in a book photo. So it would need a legible readout of the load on a motor pushing filament into a hot end, measured in load angle (0-1 full steps). This would be for illustrating my steppers book volume and possibly a future extruders book volume. All the digital measurement techniques would require some additional readout steps and I just don't have the time/energy/interest in figuring out how to do that. Kludging together some bearings and pulleys on a 1:50 gearbox to an indicator dial is more appealing to me personally.
  • Laser bouncing off a mirror on the shaft only works on a stationary motor... unless I rig up a strobe or rotating shutter type thing... hmmm... that's not a bad thought... long camera exposure could capture that...
  • Driver stall-detect circuits aren't super accurate at low speed to my knowledge
  • Strain gauge on the hot end mount has been done, but you only see filament pushing force, not motor load directly
  • Measuring filament motion doesn't really show you motor load, although it IS useful for flow loss measurement

Whosawhatsis

unread,
Nov 29, 2019, 8:37:26 PM11/29/19
to Ryan Carlyle, 3DP Ideas
In theory, you could gear a motor up so that an output shaft would rotate once for every step of the motor (or even every microstep), then you would have a gauge (or just a rotating mirror) that would swing around every step and indicate the rotational position error every time it stopped. Of course, in the real world, friction and backlash would make it impossible to get usable measurements this way. Even without friction, the angular momentum of the output shaft alone would probably be enough to stall the motor when attached through that kind of gearing.
--
You received this message because you are subscribed to the Google Groups "3DP Ideas" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3dp-ideas+...@googlegroups.com.

Ryan Carlyle

unread,
Nov 29, 2019, 11:48:56 PM11/29/19
to 3DP Ideas
Right, just having it spin 1:50 would be useless and difficult to build without it locking up, which is why I want to rig up some subtraction gearing to only show the difference between a loaded motor and unloaded motor.

Although now I’m wondering, would there be a way to spin a camera or a mirror to make a spinning dial look stationary so you can read a load angle off it? Hmm.

Whosawhatsis

unread,
Nov 30, 2019, 12:02:12 AM11/30/19
to Ryan Carlyle, 3DP Ideas
You could also spin the dial with a stationary camera, then rotate the images digitally to straighten the dial. Seems like it would be easier to use an encoder to track it digitally, though.

Have you looked at the encoders used by the mechaduino? They just need a diametrically-magnetized magnet affixed to the shaft (they don't need a double-shaft motor) and they track the angle from that. I think they're using a real encoder chip for this, but a 2-axis magnetometer should work too if the resolution is sufficient (they do a calibration procedure under zero load to account for any error in the sensor/magnet alignment). This data could be output on a serial port and tracked digitally. I'm not sure if their firmware has a function to output the position error, but it's open source, and shouldn't be hard to modify to do so.

On November 29, 2019 at 20:48:57, Ryan Carlyle (temp...@gmail.com) wrote:

Right, just having it spin 1:50 would be useless and difficult to build without it locking up, which is why I want to rig up some subtraction gearing to only show the difference between a loaded motor and unloaded motor.

Although now I’m wondering, would there be a way to spin a camera or a mirror to make a spinning dial look stationary so you can read a load angle off it? Hmm.

--
You received this message because you are subscribed to the Google Groups "3DP Ideas" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3dp-ideas+...@googlegroups.com.

Ryan Carlyle

unread,
Nov 30, 2019, 12:08:08 AM11/30/19
to 3DP Ideas
I have some mechaduino boards. Could do that. Just don’t have the bandwidth to get up to speed on their build environment and figure out how to do what I want.

The actual encoder is pretty slick, it’s just a chip that measures magnetic field orientation (like a compass) that sits over the magnet you glue to the rear rotor. Not sure if it ended up being precise enough for proper field-oriented control, seems like they ended up just using it to check for skipped steps. Might have been a clock speed polling frequency issue though, I don’t recall. There’s a mechaduino google group but it’s long fallow.

Whosawhatsis

unread,
Nov 30, 2019, 1:58:19 AM11/30/19
to Ryan Carlyle, 3DP Ideas
Supposedly, most of their modes are actually sensing where they are within a step and orienting the magnetic field at 90 degrees to that position for maximum torque. Or is that info out of date?

On November 29, 2019 at 21:08:10, Ryan Carlyle (temp...@gmail.com) wrote:

I have some mechaduino boards. Could do that. Just don’t have the bandwidth to get up to speed on their build environment and figure out how to do what I want.

The actual encoder is pretty slick, it’s just a chip that measures magnetic field orientation (like a compass) that sits over the magnet you glue to the rear rotor. Not sure if it ended up being precise enough for proper field-oriented control, seems like they ended up just using it to check for skipped steps. Might have been a clock speed polling frequency issue though, I don’t recall. There’s a mechaduino google group but it’s long fallow.

--
You received this message because you are subscribed to the Google Groups "3DP Ideas" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3dp-ideas+...@googlegroups.com.

David Crocker

unread,
Nov 30, 2019, 2:56:26 AM11/30/19
to Whosawhatsis, Ryan Carlyle, 3dp-...@googlegroups.com
The Duet3D magnetic filament monitor uses this type of encoder chip too, in order to measure the hobbed shaft position and send it as a 10-bit number to the controller. The chip is a AS5601.

Ryan Carlyle

unread,
Nov 30, 2019, 9:07:30 AM11/30/19
to 3DP Ideas
WW, my vague recollection is they originally did the 90-degree-phase-and-vary-current FOC thing, but the clock speed limits of the processor / encoder setup made it impossible to update fast enough to get high motor speeds, so they switched to a more vanilla servo implementation. Somebody made a whole new codebase for them that merged with ustepper or something at one point? I stopped following when their google group went fallow and don’t remember what happened very clearly.

I have 5 of them in the parts bin until I work on Volume 3 (steppers) anyway. Could mail you a couple if you want.

I think you need at least ~12-13 bits encoder resolution for FOC to work well. 10bit is great for what RRF’s doing for filament tracking.

Whosawhatsis

unread,
Nov 30, 2019, 3:37:38 PM11/30/19
to Ryan Carlyle, 3DP Ideas
I have a couple as well, but have only gotten as far as building a demonstration rig out of one of them (its different modes make it a lot easier to explain the difference between brushed and brushless motors).
--
You received this message because you are subscribed to the Google Groups "3DP Ideas" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 3dp-ideas+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages