Skip to main content
/

Site Navigation

Your Account

Choose Language

Help

Revision to Reducing Stand-Still Noise

Manuel Coenen

+[summary_image|765]
+
[title|Reducing Stand-Still Noise]
{table
+|format=l:l:r:r
|! Variable
|! Meaning
|! RRF Default value
|--
-| TOFF
+| ``TOFF``
| Off time
| 0..15
| 4
|--
-| HSTRT
+| ``HSTRT``
| Hysteresis start value
| 0..7
| 3
|--
-| HEND
+| ``HEND``
| Hysteresis end (low) value
| 0..15
| 3
|--
-| HDEC
+| ``HDEC``
| Hysteresis decrement interval
| 16, 32, 48, 64
| 16
|--
-| RNDTF
+| ``RNDTF``
| Random TOFF time
| 0, 1
| 0
|--
-| CHM
+| ``CHM``
| Chopper mode
| 0, 1
-| 0
+| 0 (=spreadCycle)
|--
-| TBL
+| ``TBL``
| Blanking time
| 16, 24, 36, 54
=== 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 and one or more motors to achieve the lowest noise-level.
+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 have been found to make at most a very marginal impact.
+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 [[Gcode#Section_M569_Set_motor_driver_direction_enable_polarity_and_step_pulse_timing|M569]] command, more specifically the C parameter of this command.
+To modify the ``TOFF`` parameter one uses the [[Gcode#Section_M569_Set_motor_driver_direction_enable_polarity_and_step_pulse_timing|M569]] command, more specifically the ``C`` parameter of this command.
=== Preparations ===
-Only tune one motor at a time with no idle-current-reduction. Do it as follows
+Only tune '''one motor at a time''' with no idle-current-reduction. Do it as follows
-# 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 [[Gcode#Section_M302_Allow_cold_extrudes|M302 P1]] but then only do a very tiny move like G1 E0.01 - that will be sufficient to activate the motor)
+# 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 [[Gcode#Section_M302_Allow_cold_extrudes|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)
## If necessary disable all other motors by issuing ``M84 <motor designations go here>``
# Disable idle-current reduction for the motors with ``M906 I100``
Next step is to actually modify the value in the ``CHOPCONF`` register of the driver for the motor being tuned.
-It follows a list of all values with all variables kept at their RRF default value except for ``TOFF``
+It follows a table of all values with all variables kept at their RRF default value except for ``TOFF``
-* ``TOFF=0`` -> ``M569 C65968`` (this means motors are off!)
-* ``TOFF=1`` -> ``M569 C65969``
-* ``TOFF=2`` -> ``M569 C65970``
-* ``TOFF=3`` -> ``M569 C65971``
-* ``TOFF=4`` -> ``M569 C65972`` - default
-* ``TOFF=5`` -> ``M569 C65973``
-* ``TOFF=6`` -> ``M569 C65974``
-* ``TOFF=7`` -> ``M569 C65975``
-* ``TOFF=8`` -> ``M569 C65976``
-* ``TOFF=9`` -> ``M569 C65977``
-* ``TOFF=10`` -> ``M569 C65978``
-* ``TOFF=11`` -> ``M569 C65979``
-* ``TOFF=12`` -> ``M569 C65980``
-* ``TOFF=13`` -> ``M569 C65981``
-* ``TOFF=14`` -> ``M569 C65982``
-* ``TOFF=15`` -> ``M569 C65983``
+{table
+|format=r:c:c
+|! TOFF
+|! Command
+|! Comment
+|--
+| 0
+| ``M569 C65968``
+| This will turn the motor off completely
+|--
+| 1
+| ``M569 C65969``
+|
+|--
+| 2
+| ``M569 C65970``
+|
+|--
+| 3
+| ``M569 C65971``
+|
+|--
+| 4
+| ``M569 C65971``
+| Default
+|--
+| 5
+| ``M569 C65973``
+|
+|--
+| 6
+| ``M569 C65974``
+|
+|--
+| 7
+| ``M569 C65975``
+|
+|--
+| 8
+| ``M569 C65976``
+|
+|--
+| 9
+| ``M569 C65977``
+|
+|--
+| 10
+| ``M569 C65978``
+|
+|--
+| 11
+| ``M569 C65979``
+|
+|--
+| 12
+| ``M569 C65980``
+|
+|--
+| 13
+| ``M569 C65981``
+|
+|--
+| 14
+| ``M569 C65982``
+|
+|--
+| 15
+| ``M569 C65983``
+|
+}
-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. 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.
+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. 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`` value you found is the most silent (it is advised to add the corresponding value of ``TOFF`` as a comment to that line). Then go on with the next motor.
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`` ====
+
+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
+
+[code]HEND <= HSTRT[/code]
+
+but your mileage may vary so feel free to try any combination you want.
+
+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.
+
=== Future Development ===
-As a result of ``TOFF`` being a major factor of stand-still noise a future version of RRF will have a separate paramter for (most probably) ``M569`` command to only adjust the value of ``TOFF`` without having to deal with hard-to-read bitmasks.
+As a result of ``TOFF`` being a major factor of stand-still noise a future version of RRF will have a separate parameter for (most probably) ``M569`` command to only adjust the value of ``TOFF`` without having to deal with hard-to-read bitmasks.
== External References ==

To undo the changes made by this version, click 'Revert Changes.' This will automatically restore the previous version of this guide.

Revert Changes