Setting motor current higher than rated current?
-
Ok, back up, there’s some bad info here.
Typical NEMA 17 hybrid steppers used in 3D printers use “class B” insulation in the coils, which is rated to 130C. At this temperature, the motor should last on the order of >10,000 hours before failing. Every 10C you exceed the coil rating can be VERY LOOSELY APPROXIMATED to reduce the motor life in half. So at 160C coil temp the motor may only last ~1000 hours which is less than printers are generally expected to last. (This is not guaranteed and you should not base any plans on this.)
The motor’s rated current ultimately comes from the 130C coil temp rating value and some assumptions about the motor’s ability to shed heat:
- Standard -10C safety factor (run coils at 120C actual)
- Ambient temperature is 50C
- Motor is horizontal and open to free air convection on five sides
- Driver doesn’t do anything screwy that causes excessive heating due to excessive high-frequency switching
What happens in this scenario is that the coils heat up to 120C, and shed heat to the stator/housing, so the stator heats up to perhaps 80-90C, and then sheds heat to the 50C air. Heat flows from hotter to colder so these temperature deltas are required to cool the motor.
To be clear: under these conditions, the motor run at rated current will last a loooong time. You don’t need to run it at 60-90% of rated current for the motor’s sake. That is done to protect fingers and plastic mounting hardware.
At 71% of rated current, the motor’s temp rise above ambient will be half.
At 141% of rated current, the motor’s temp rise above ambient will be double.For standard motor conditions, the coil temp rise is 120-50=70C. That much temperature delta is required to drive heat-shedding to the environment and reach equilibrium.
If you cool the motor more aggressively, such as attaching fans or heatsinks or watercooling blocks, you can safely run higher than rated current.
If your ambient temp is less than 50C, you can safely run higher than rated current.
So, what’s a safe motor current? Depends on your setup. 110% is often going to be completely fine. 140% will definitely fry the coils if you don’t provide aggressive motor cooling.
Say you want to run the motor in 30C air with a heatsink glued on and you’re willing to add some risk of premature failure. Maybe here we can tolerate 105C of coil temperature rise above ambient versus the design temp rise of 70C above ambient. That means you get 50% more temp delta and thus 50% more heat shedding. So the coils can be run at sqrt(1.5)=122% rated current. The motor will be way too hot to touch, but in theory, it will perform fine at that temp.
Rotor demagnetization really isn’t much of an issue. Hybrid steppers run fine with weak permanent magnets. The magnet isn’t producing torque, it’s just steering the electromagnetic flux produced by the coils through the motor so it spins in a consistent direction.
-
@rcarlyle Thank you, this is some really great explanation and useful information!
I'm gonna put you on my list of experts under the section for motors.
-
@rcarlyle said in Setting motor current higher than rated current?:
Rotor demagnetization really isn’t much of an issue. Hybrid steppers run fine with weak permanent magnets. The magnet isn’t producing torque...
I don't think that is entirely accurate.
My understanding is that permanent magnet steppers can have greater torque when moving and they have holding torque in contrast to steppers which do not use permanent magnets.
So, yes, if the permanent magnets were weakened they would run ok but not without some loss of performance.
I could be wrong - my learning all comes from books.
Frederick
-
@fcwilt Replacing the motors crossed my mind but will require redesign of a couple things (its pretty tight the way it is now).
My motor rated current is 1200mA. So at 1200mA, it got to over 60C. I'd rather have it get to 45C max just to save from any burning sensations. But setting it to 1100mA was what it was at before, but I want more power. But due to Duet 2's firmware, it sounds like I cannot set the current to anything in between 1100 and 1200.
@RCarlyle Excellent information. I will consider actively cooling the motors so I can run at 1300mA or 1400mA while keeping them below 45C.
-
@fcwilt sort of. Hybrid steppers (which contain permanent magnets) produce higher torque per unit motor volume than “permanent magnet” steppers (which also contain permanent magnets) and “variable reluctance” steppers (which do NOT contain permanent magnets). But these all use different mechanisms of stepping.
- VR stepper: electromagnets pull on an iron bar or cross to align the iron rotor poles with the electromagnet stator poles
- PM stepper: electromagnet stator poles push/pull on a permanent magnet rotor
- Hybrid stepper: electromagnet stator poles pull on iron rotor poles to try to align their respective cog teeth, but the permanent magnet forces the flux to route in a particular direction so a specific set of cog teeth try to align and the motor doesn’t accidentally spin backwards
The hybrid stepper DOES require a permanent magnet in the rotor in order to work with only two phases — VR steppers need three phases to rotate in a known direction — but the hybrid stepper magnet contributes little torque on its own since coil fields aren’t directly pushing/pulling on the PM field.
Weaker permanent magnets mean a little less torque, but also less back-emf so the motor can run faster.
In any case, at typical running temps, rotor demagnetization is more or less reversible, since we’re not exceeding the curie temp. So the magnet recovers its strength (less some hysteresis) upon cooling.
-
@rcarlyle said in Setting motor current higher than rated current?:
In any case, at typical running temps, rotor demagnetization is more or less reversible, since we’re not exceeding the curie temp.
Just out of curiosity: do you know what the Curie temperature for an average hybrid stepper motor would be?
-
There is a complication. The rated current of a stepper motor is normally stated with both coils energised at that current. Whereas when microstepping, we only energise one coil at full current at a time.
A simplistic view would be at as long as you don't set the Duet to x1 microstepping, you can safely set the current to 1.414 times the rated current, because that current in one coil will give the same total power dissipation as the rated current in both coils. However, in this case at the half step positions, all that heat will be generated in one coil instead of being split evenly between both coils.
So I think we can say that when the motor is moving at a few full steps per second or faster and using greater than x1 microstepping, you could safely run the motors with the current set at up to at 1.414 times rated current. But when the motor is at standstill, you should not use such a high current; although you are probably safe to go a little above the rated current by 10% or possibly 20%.
The drivers on the Duet 2 WiFi/Ethernet do not have automatic standstill current reduction, so it's not easy to enforce a lower standstill current. The drivers on the Duet Maestro do.
HTH David
-
@dc42 said in Setting motor current higher than rated current?:
The drivers on the Duet 2 WiFi/Ethernet do not have automatic standstill current reduction, so it's not easy to enforce a lower standstill current.
Next best thing would be to tune stallGuard+coolStep to have the drivers automatically reduce current if there is a low load. But it might be very fiddly to configure and is definitely something to rely on too much.
-
@wilriker said in Setting motor current higher than rated current?:
@dc42 said in Setting motor current higher than rated current?:
The drivers on the Duet 2 WiFi/Ethernet do not have automatic standstill current reduction, so it's not easy to enforce a lower standstill current.
Next best thing would be to tune stallGuard+coolStep to have the drivers automatically reduce current if there is a low load. But it might be very fiddly to configure and is definitely something to rely on too much.
You can already do this, see the M915 T parameter.
-
@dc42 I know that it can be done (I have this on my todo list for a long time now). I just meant it can be a little bit hard to configure (as stallGuard usually is if one wants to get it right) and therefore I would not consider it a safe method to avoid overheating of motors.
-
@dc42 Does that mean the Z motor would typically get hotter since it is at a standstill more often than X and Z during a print?
-
@dc42 If you pick up a random stepper datasheet, it will most likely give you:
- rated current assuming ONE coil is energized at that current
- rated holding torque with BOTH coils at the rated current (which will overheat the motor)
This is obviously stupid and unhelpful in our particular application, but manufacturers do it this way to make their motors look more powerful. And for some applications (like intermittent load-positioning with standstill current reduction) it is a perfectly reasonable way to rate the motor.
Unfortunately, different stepper manufacturers do this different ways, so it's kind of a pot-shoot unless you're accustomed to a particular manufacturer's datasheets. For example, I know Kysan and Moons provide two-coils-on-100% holding torques and one-coil-on-100% rated currents.