Skip to main content

Site Navigation

Your Account

Choose Language

Background

As a side-effect of using highly configurable and advanced stepper drivers such as TMC2660 it makes it necessary to sometimes tune things based on the actual hardware used. This also goes for reducing noise of the motors. This depends on a lot of factors amongst others are motor current, resonance of motor mount, current micro-step position on the motor end as well as a lot of parameters set to the stepper drivers.

Available Configuration Parameters

TMC2660 have multiple parameters to set that can have an influence on the sounds of motors. These are all combined in the so called Chopper Control Register aka CHOPCONF that is set to the drivers by RRF. This register is made up of the following individual values:

VariableMeaningValue RangeRRF Default value
TOFFOff time0..154
HSTRTHysteresis start value0..73
HENDHysteresis end (low) value0..153
HDECHysteresis decrement interval16, 32, 48, 6416
RNDTFRandom TOFF time0, 10
CHMChopper mode0, 10 (=spreadCycle)
TBLBlanking time16, 24, 36, 5436

All separate values are encoded in a bit mask and sent as one value from RRF to the stepper drivers.

There are some inter-dependencies on these values but most notable is

HSTRT + HEND <= 15

Stand-Still Noise

Most of the time users report very silent steppers while they are moving but unpleasant noises when drivers are standing still. There are various methods implemented in RRF like idle-current-reduction that should address these but sometimes it can be necessary to do a more fine-granular tuning on one or more motors to achieve the lowest noise-level.

The most influence on stand-still noise has been found in the TOFF parameter so that is what this guide will focus on. Of course you are free to also change all other parameters but they have been found to make at most a very marginal impact.

As mentioned before tuning these parameters is highly hardware specific and even if one printer uses the same type of motors for all axes it will probably also be necessary to tune the parameter(s) for each motor separately. Also sometimes the default value already is the best.

Tuning

To modify the TOFF parameter one uses the M569 command, more specifically the C parameter of this command.

Starting with RRF 2.02 the M569 command has been extended with a new Fnnn parameter to set the TOFF value directly without using the rather hard-to-read CHOPCONF register bitmask.

Preparations

This requires RepRapFirmware 2.0 or later.

Only tune one motor at a time with no idle-current-reduction. Do it as follows

  1. Activate the motor to be tuned by either homing it (for a moving axis) or moving it in case of an extruder motor (you might have to disable cold extrusion prevention with M302 P1 but then only do a very tiny move like G1 E0.01 to prevent grinding of filament - that will be sufficient to activate the motor)
    1. If necessary disable all other motors by issuing M84 <motor designations go here>
  2. Disable idle-current reduction for the motors with M906 I100

Modifying the CHOPCONF Register

Next step is to actually modify the value in the CHOPCONF register of the driver for the motor being tuned.

It follows a table of all values with all variables kept at their RRF default value except for TOFF

TOFFCommand RRF <= 2.01Command RRF >= 2.02Comment
0M569 C65968This will turn the motor off completely. This is not a valid value for the Fnnn parameter.
1M569 C65969M569 F1
2M569 C65970M569 F2
3M569 C65971M569 F3
4M569 C65972M569 F4Default
5M569 C65973M569 F5
6M569 C65974M569 F6
7M569 C65975M569 F7
8M569 C65976M569 F8
9M569 C65977M569 F9
10M569 C65978M569 F10
11M569 C65979M569 F11
12M569 C65980M569 F12
13M569 C65981M569 F13
14M569 C65982M569 F14
15M569 C65983M569 F15

All of these commands need to be extended to address the motor being tuned by adding the apporiate Pnnn parameter where nnn corresponds to the driver number starting at 0. So usually X=0, Y=1, Z=2, E0=3, E1=4, etc. So a full command to set the Y axis motor to a TOFF value of 8 would be M569 C65976 P1 or M569 F8 P1 using RRF 2.02 or later.

Nothing else needs to be added. The effect (if any) will be immediately after issuing the command.

Generally TOFF values above 10 will give a very unpleasant high-pitched noise but you can of course still try all values to be sure.

Once you have found the best setting for this motor amend the M569 command in your config.g with the Cnnn|Fnnn value you found is the most silent (it is advised to add the corresponding value of TOFF as a comment to that line in case you are using the Cnnn parameter). Then go on with the next motor.

Other Variables

As said before the other variables in CHOPCONF seem to have very little effect on stand-still noise but if you still want to test these there exists a tool that lets you configure all variables and creates the appropriate value for the M569 Cnnn parameter at chopconf-generator (with pre-compiled releases at the Releases page).

Note that this tool also allows output of the result as hexadecimal value but ironically RRF 2.0 does no longer accept hexadecimal input values.

HSTRT, HEND & HDEC

It was found to make a very subtle difference on very slow movements to tune these two parameters. In tests best combination where always with

HEND <= HSTRT

but your mileage may vary so feel free to try any combination you want.

RRF < 2.02: Using the chopconf-generator from above and a small batch script can provide a list of all possible combinations and will make sure that only valid combinations are created.

RRF >= 2.02: You can use the new M569 Ynn:nn:nn parameter to tune these values. The first number is HSTRT, the second is HEND. The third number is optional and is to set HDEC. Note that this value has to be given as 0..3 corresponding to 16, 32, 48 and 64 respectively.

TBL

Blanking time can be set via M569 Bnn and takes the value 0..3 corresponding to 16, 24, 36 and 54 respectively.

RRF 2.02

As a result of TOFF being a major factor of stand-still noise RRF 2.02 introduced a separate parameter Fnn for M569 command to only adjust the value of TOFF without having to deal with hard-to-read bitmasks.

External References

A lot of information can be found at the following sources:

0 Comments

Add Comment

View Statistics:

Past 24 Hours: 3

Past 7 Days: 38

Past 30 Days: 193

All Time: 1,731