Steps/mm not being automatically adjusted when changing microstepping



  • I'm running into an odd issue when changing to anything other the 16x microstepping. It seems like the automatic adjustment of the M92 parameters is not working.

    I've done the following:
    1. Ensured that my M92 command follows the M350 command
    2. Ensured that I'm not just losing steps (the distance traveled is a multiple of the microstepping (1/2 as far for 32x, 1/4 as far for 64x, etc…)

    Here is an excerpt

    [[language]]
    ; Configuration file for Duet WiFi (firmware version 1.17)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat May 27 2017 15:46:30 GMT-0400 (EDT)
    
    ; General preferences
    M111 S0 ; Debugging off
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves
    M555 P2 ; Set firmware compatibility to look like Marlin
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X250 Y250 Z250 S0 ; Set axis maxima
    
    ; Endstops
    M574 Z0 S0 ; Define active low and unused microswitches
    M574 X1 Y2 S1 ; Define active high microswitches
    M558 P0 X0 Y0 Z1 H5 F120 T6000 ; Set Z probe type to switch, the axes for which it is used and the probe + travel speeds
    G31 P600 X0 Y0 Z2.5 ; Set Z probe trigger value, offset and trigger height
    M557 X15:235 Y15:235 S20 ; Define mesh grid
    
    ; Drives
    M569 P0 S1 ; Drive 0 (x) goes forwards
    M569 P1 S0 ; Drive 1 (Y) goes backwards
    M569 P2 S0 ; Drive 2 (Z) goes backwards
    M569 P3 S1 ; Drive 3 (E) goes forwards
    M350 X64 Y64 Z16 E16 I1 ; Configure microstepping with interpolation
    M92 X80 Y80 Z2020 E96 ; Set steps per mm
    M566 X900 Y900 Z12 E120 ; Set maximum instantaneous speed changes (mm/min)
    M203 X6000 Y6000 Z180 E1200 ; Set maximum speeds (mm/min)
    M201 X500 Y20 Z250 E250 ; Set accelerations (mm/s^2)
    M906 X800 Y1200 Z600 E1000 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout
    
    ; Heaters
    M143 S270 ; Set maximum heater temperature to 270C
    M301 H0 S1.00 P10 I0.1 D200 T0.4 W180 B30 ; Use PID on bed heater (may require further tuning)
    M305 P0 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 0
    M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1
    
    ; Tools
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
    G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C
    
    ; Network
    M550 PPrintrbot Metal Plus ; Set machine name
    ...
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S0 ; Disable Telnet
    
    ; Fans
    M106 P0 S0.3 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
    
    ; Custom settings are not configured
    
    

  • administrators

    The way that the automatic adjustment works is that when you run M350, the current steps/mm is adjusted to take account of the change in microstepping. When you run M92 the values you provide are assumed to be correct for the current microstepping. Therefore, if you use M350 first and then M92, then if you change the microstepping in M350 you need to also change the M92 values. Or you can use M92 first, using values appropriate for the default x16 microstepping, then when you subsequently use M350 the steps/mm will be adjusted automatically.



  • dc42, this is the section of the documentation that threw me for a loop:

    The M92 commands to set steps/mm must come after any M350 command to set microstepping. This is because when you change microstepping, the steps/mm are automatically adjusted to take account of the change in microstepping.

    https://duet3d.com/wiki/Configuring_RepRapFirmware_for_a_Cartesian_printer


  • administrators

    Thanks for pointing that out. I have updated the text, and I hope it is clearer now.


Locked
 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.