Fine Tuning TMC2660 drivers to a specific motor(s)?
botanic2000 last edited by
Good day everyone!
I have a rather advanced question, which I can't quite wrap my mind aroud.
I've recently assebled a CoreXY machine and when I run it at the speeds under 60mm/s I get quite a noticeable vibration coming from the motors, to which the whole frame resonates and makes nasty noize. All the mechanical stuff has been checked dozen of times and I can't see any problems there. Also, when I move gantry by hand with motors off, I don't any vibration, like I'd get when the actual motors are moving it. So, chanses are 9 of 10 that the default settings of the drivers are not quite matching the motors I'm using.
I've tried any possible current in the range of 800mA to 1800mA
If I run motors with belts removed, they do seem to run quite smooth
The vibration frequency does seem to match full step frequency
Drivers are configured to run in x16 microstepping, with interpolation on and spreadCycled forced to be on by a GCode command
If I disable the interpolation and run drivers in x16 the audiable differnce is minimum, compared to interpolation on
The type of motors I am using are kinda on the far end of the NEMA 17 stuff, so my guess would be that default mid-range settings of chopper register are not quite matching whatever I'm using. I went through the TMC2660 datasheet (pages 33-34) and it does say, that drivers could tuned to better match a specific motor type to be used. This can be achieved by setting a certain values in CS and HSTRT and HSEND register, based on the calculations using the formulas provided in the datasheet.
Also, a quote from datasheet on this matter:
As experiments show, the setting is quite independent of the motor, because higher current motors
typically also have a lower coil resistance. Choosing a medium default value for the hysteresis (for
example, effective HSTRT+HEND=10) normally fits most applications. The setting can be optimized by
experimenting with the motor: A too low setting will result in reduced microstep accuracy, while a
too high setting will lead to more chopper noise and motor power dissipation. When measuring the
sense resistor voltage in motor standstill at a medium coil current with an oscilloscope, a too low
setting shows a fast decay phase not longer than the blanking time. When the fast decay time
becomes slightly longer than the blanking time, the setting is optimum. You can reduce the off-time
setting, if this is hard to reach.
Highlite in black is somewhat I am experiencing - vibration/noize and motors getting hotter then I'd expect - at 70% set current they heat up to ~70C after half hour of operation.
So, I have few questions:
- Has anyone tried to play around with the settings mentioned above?
- Are the CS and HSTRT+HEND accesible using any GCode?
- Can anyone advise a NEMA17 motor that is known for sure to be dead silent when driven by TMC2660? Just in case...
The setup is following:
- 24 V supply
- DuetWiFi with latest firmware (updated yesterday)
- Motors used - "Longs Stepper Motor" 17HS8403N with following specs
Rate Voltage - 3.1V
Rate Current - 2.5A
Resistance - 1.25Ohm
Inductance - 1.6mH
Any help or feedback is welcome.
P.S.: if there is a test point to check Vsense on the driver, I can connect a scope to see exactly whats happening....
- Search for other posts on motor noise at standstill to see what other users have tried.
- You can set the entire chopper control register using M569.
- There are no test points on the sense resistors, but the sense resistors are easy to probe.
botanic2000 last edited by
Thanks for the reply.
Keyword "standstill" did, in fact, bring me to a guide that responses to most of my questions above:
However, to properly use the formulas from Trinamic (instead pf just poking around) I need to know the CS value from SGCSCONF register (stallGuard/coolStep related) that is used by RRF.
Unfortunatelly, this article on the WIKI does not provide such kind of info:
Can you please advise, what is a default CS value, used by RRF?
If you send M569 P# where # is the driver number, it will report the current value of the chopper control register at the end of the line.