You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
The existing implementation to set the motor current is as per the TMC datasheet.
CS (current scaler, IRUN_IHOLD) is set to 31 (max value)
globalscaler is calculated
CS is adjusted if needed
This sets the current accurately, but for some motors (specifically low inductance) or when using higher voltage power supplies (eg 48/60V) it produces optimal hysteresis values that are outside the recommended range. By reducing CS, you can reduce the required hysteresis values which can produce a quieter motor.
In testing this seems to have the biggest impact on noise at low speed. When using a LDO2804AC motor at 48V I was able to get the following noise reductions by tuning CS, HSTRT, and HEND
20mm/s: 72 dB -> 65 dB (noise floor of my office)
100 mm/s: 68 -> 69 dB
200 mm/s: 72 dB -> 71 dB
Describe the solution you propose.
It can not be expected that people will set CS & hysteresis directly so if CS is not provided, set current the existing way
If CS is provided, check that globalscaler can be calculated to within the allowed range, error if it can't
Could reduce CS but that might produce unexpected tuning results so imo better to throw an error
Also CS is not recommended to reduce below 16 anyway
Need to handle IHOLD current reduction in the calculation too
Probably ok for this to go below 16 as should only be used when holding position
Describe alternatives you've considered
No response
Provide any additional context or information.
No response
The text was updated successfully, but these errors were encountered:
Wouldn't it be better to set CS automatically, to the extent possible, if the user doesn't provide a value for CS? We know what values of hysteresis are used (either the default values or the values set by the user), and we can read the VIN voltage. There's a possible issue if we read the VIN voltage too early while it is still rising.
It's also occurred to me that we could perhaps provide an option to calculate good values for CS and hysteresis in RRF when setting the motor current. We would need to measure the voltage, and we'd need the user to provide the phase inductance and resistance values via M569.
Is your feature request related to a problem? Please describe.
The existing implementation to set the motor current is as per the TMC datasheet.
This sets the current accurately, but for some motors (specifically low inductance) or when using higher voltage power supplies (eg 48/60V) it produces optimal hysteresis values that are outside the recommended range. By reducing CS, you can reduce the required hysteresis values which can produce a quieter motor.
In testing this seems to have the biggest impact on noise at low speed. When using a LDO2804AC motor at 48V I was able to get the following noise reductions by tuning CS, HSTRT, and HEND
20mm/s: 72 dB -> 65 dB (noise floor of my office)
100 mm/s: 68 -> 69 dB
200 mm/s: 72 dB -> 71 dB
Describe the solution you propose.
Describe alternatives you've considered
No response
Provide any additional context or information.
No response
The text was updated successfully, but these errors were encountered: