I don't have a UM2 and haven't looked at the PCB in detail but I suspect that the controller only sets the current but doesn't monitor. However, I could be completely wrong.
I don't have a UM2 and haven't looked at the PCB in detail but I suspect that the controller only sets the current but doesn't monitor. However, I could be completely wrong.
>Doesn't the stepper use as much [current] as is allowed?
I'm open to being corrected by David, but I do have recent experience controlling a normal (not stepper) motor with an Arduino, and in that case the motor only draws peak current when it's overworked, i.e. load stuck. I'm not sure how stepper motors are driven - is it through an h-bridge chip? In which case measuring input current ought to be possible.
Just looked, the controller can only set the current but not sense it.
I believe the following...
Oh and yes, the driver chops the current to the set value. Because of holding torque, the motor always consumes the same amount of current whether stepping or not. Basically, there is either enough current to overcome the force to step or the step is missed. It won't consume more current under load.
Sets the current? Again, that seems unlikely. I assume you would send the driver chip a series of TTL pulses, and the motor will take whatever current it needs, unless limited by the supply. Hmm. Maybe I should build myself a breadboard stepper controller to give my guesses a better chance of being right.
This doesn't make sense to me. If the motor current doesn't change with load, why does it need to be limited?
Also, my understanding of the "feeder motor skipping" problem is that when the draw exceeds the 1250mA current limit then the motor is reversed a bit to avoid grinding the filament (or destroying the motor?). An explanation which again IMHO makes no sense if current is constant. Likewise the partial remedy of using a higher hotend temp... does what exactly? - if not reduce the load and hence the load dependant current draw?
Stepper motors in normal use are constant current devices. See here for a great introduction:
http://www.geckodrive.com/support/step-motor-basics.html
So the controller sets the current that is supplied to the motor, and the available torque is proportional to that. If the motor tries to step but stalls and cannot advance, then in falls back into a stable configuration - this is what is happening when the motor 'steps back'.
Heating the filament makes it easier to extrude, lowering the pressure in the head, and hence the required torque at the exruder motor - and so makes it less likely that the motor will stall, given its fixed torque capabilities.
Limiting is required because most steppers are specified at 2-3V and we are cramming 18V into them. Without the limiting, the motors would burn up
Nope, trust me, one of the fundamental functions of the the driver is to limit current.
The skipping occurs when the force required to move to the next step is more that the force generated by the coils at the set current. There is no reversing due to a missed step The controller has no way of knowing the step was missed.
I checked the electronics and there is NO way for the controller to measure the current.
These are used in the UM1 and use the same chip as the UM2. See the section on current limiting.
http://www.pololu.com/product/1182
There are sense resistors on both the pololu carrier board and the UM2 (which have the AD4988s built in). The sense resistors are NOT monitored by the UM1 (they aren't even available off the carrier) or the UM2 where they are only connected to ground.
Go here:
https://github.com/Ultimaker/Ultimaker2/blob/master/1091_Main_board_v2.1.1_(x1)/Main%20Board%20V2.1.1.pdf?raw=true
go to page ten. It shows the 5 drivers for X, Y, Z E1 and extra (E2)
Notice that the only pins that go off the page are STEP, DIR, ENABLE and VREF. The sense lines on the right side only go to ground. The STEP, DIR ENABLE are self explanatory. VREF is the voltage FROM the processor and is what sets the current.
Thanks for the replies and the links guys. It looks like I need to do some research. That "step motor basics" site looks especially good.
Recommended Posts
IRobertI 521
As far as I know there's no way to get that information as it's not handled by the firmware but rather by the stepper driver IC. I don't know if those chips are able to report that information back. And I'm not sure what good it would do, doesn't the stepper use as much current as it is allowed? There is a setting these days to set the current in Maintenance -> Movement settings (I think that's right, too lazy to go check on the printer) but no way to check what's actually being drawn.
Link to post
Share on other sites