TMC5262 - Is COIL_INDUCT needed for StealthChop+?
This article explains when COIL_INDUCT is needed, when it is not, and how to handle it in systems where motor parameters may be unknown.
Strictly speaking, no - COIL_INDUCT is not required for StealthChop+ operation.
StealthChop+ can operate normally without configuring COIL_INDUCT. It is designed to provide quiet and smooth motor operation, independent of motor inductance settings.
If your application only requires:
- Low noise
- Smooth motion
- Basic motor control
then COIL_INDUCT does not need to be configured.
This being said, COIL_INDUCT is required for operation of StallGuard+, CoolStep+, and µDcStep. These features are highly recommended as they greatly improve the performance of the stepper motor.
As such, it is highly recommended to set COIL_INDUCT.
When is COIL_INDUCT required?
COIL_INDUCT is required for features that depend on estimating motor load. These include:
- StallGuard+ (sensorless load and stall detection)
- CoolStep+ (dynamic current adjustment based on load)
- µDcStep (load-dependent speed adaptation)
These functions rely on analyzing the motor’s back-EMF (BEMF) signal to determine load conditions. StallGuard technology works by comparing electrical energy entering and leaving the motor, using the returned energy (BEMF) as an indicator of load.
For this type of calculation to be accurate, the driver must understand the motor’s electrical characteristics, including inductance.
For applications that might use a wide variety of motors, can a single COIL_INDUCT value work for all motors?
No.
Motor inductance varies significantly across different motor types and sizes. Because StallGuard+ relies on real physical motor behavior, using a fixed or generic inductance value will lead to poor or incorrect load measurements.
For designs targeting multiple motor types, a one-size-fits-all inductance setting is not recommended.
In many cases, the coil inductance can be found in the motor's datasheet. If this is the case, the COIL_INDUCT should be set for each individual motor.
In cases where the coil inductance is not listed in the motor's datasheet, there is a way to estimate the coil inductance experimentally.
What is the recommended solution for generic or unknown motors?
For systems where:
- Motor specifications are unknown, or
- End users should not configure parameters
the recommended approach is to determine motor characteristics experimentally.
A typical method is:
- Have motor in standstill and set IHOLD = IRUN
- Read PWM_CALC and note the initial value.
- Reduce the holding current to 0 by setting CUR_PI_LIMIT to 0. Make this timestamp 0.
- Poll for PWM_CALC and note the time at which PWM_CALC becomes 37% of the initial value.
- Set CUR_PI_LIMIT back to its previous value (default is 4095) to allow normal current operation again.
- Keep motor at standstill for ~100ms so that the R_COIL measurement can occur.
- Read from R_COIL_AUTO_A/B to get the coil resistance
- Calculate L using R_COIL and the time it takes PWM_CALC to become 37% of its initial value
- L = t37% * RCOIL
- You can then program this L value into COIL_INDUCT
- Don't forget to change IHOLD back to its previous value / whatever value is required for the end application
