3.6.0-beta.1 Breaking Homing Sequence
-
Hi there. After updating to 3.6.0-beta.1, my homing sequence seems to be failing, causing the printer to try to move outside of the build volume (and of course making a host of horrible noises, lol).
config.g
; Voron ; Hardware ; Pi: Raspberry Pi 4 Model B. ; Main Board: Duet 3 Mainboard (MB) 6HC v1.01. ; CAN Board: Duet 3 Toolboard (TB) 1LC v1.2 ; 0:/sys/config.g ; Executed by the firmware on start-up. ; General Preferences G90 ; Set all axes (not extruders) to absolute positioning. M83 ; Set all extruders (not axes) to relative positioning. M669 K1 ; Set kinematics type and parameters. ; K (Kinematics type): 1 (CoreXY). ; CAN Delay G4 S2 ; Dwell. Pause the machine for a period of time. ; S (Time to wait [sec]): 2 (Recommended time to wait for Duet Toolboard). ; Drive Map ; XY Drives ; | A | B | ; Z Drives ; | 3 | 0 | ; - - - - ; | 2 | 1 | ; Front ; Drives M569 P0.0 S1 ; Set motor driver settings. ; P (Motor drive number): 0.0 (Mainboard. Driver 0 board label. TMC5160 stepper driver. [XY, A, top left motor]). ; S (Direction of movement): 1 (Forward). ; D (Driver mode): 2 (SpreadCycle). ; F (Off time, toff). ; B (Blanking time, tbl). ; Y (Hysteresis). M569 P0.1 S1 ; Set motor driver settings. ; P (Motor drive number): 0.1 (Mainboard. Driver 1 board label. TMC5160 stepper driver. [XY, B, top right motor]). ; S (Direction of movement): 1 (Forward). ; D (Driver mode): 2 (SpreadCycle). ; F (Off time, toff). ; B (Blanking time, tbl). ; Y (Hysteresis). M569 P0.2 S0 D2 F3 B0 Y0:2 ; Set motor driver settings. ; P (Motor drive number): 0.2 (Mainboard. Driver 2 board label. TMC5160 stepper driver. [Z0, far right motor]). ; S (Direction of movement): 0 (Backward). ; D (Driver mode): 2 (SpreadCycle). M569 P0.3 S1 D2 F3 B0 Y0:2 ; Set motor driver settings. ; P (Motor drive number): 0.3 (Mainboard. Driver 3 board label. TMC5160 stepper driver. [Z1, close right motor]). ; S (Direction of movement): 1 (Forward). ; D (Driver mode): 2 (SpreadCycle). M569 P0.4 S0 D2 F3 B0 Y0:2 ; Set motor driver settings. ; P (Motor drive number): 0.4 (Mainboard. Driver 4 board label. TMC5160 stepper driver. [Z2, close left motor]). ; S (Direction of movement): 0 (Backward). ; D (Driver mode): 2 (SpreadCycle). M569 P0.5 S1 D2 F3 B0 Y0:2 ; Set motor driver settings. ; P (Motor drive number): 0.5 (Mainboard. Driver 5 board label. TMC5160 stepper driver. [Z3, far left motor]). ; S (Direction of movement): 1 (Forward). ; D (Driver mode): 2 (SpreadCycle). M569 P121.0 S1 ; Set motor driver settings. ; P (Motor drive number): 121.0 (Duet3D 1LC toolboard. Driver 0 board label. TMC2209 stepper driver. E1, Extruder 1). ; S (Direction of movement): 1 (Forward). ; D (Driver mode): 2 (SpreadCycle). ; F (Off time, toff). ; B (Blanking time, tbl). ; Y (Hysteresis). M584 X0.0 Y0.1 Z0.2:0.3:0.4:0.5 E121.0 R0 S0 ; Set drive mapping. ; X (X motor): 0.0 (Mainboard. Driver 0 board label). ; Y (Y motor): 0.1 (Mainboard. Driver 1 board label). ; Z (Z motors): 0.2:0.3:0.4:0.5 (Mainboard. Drivers 2, 3, 4, & 5 board labels). ; E (Extruder motor): 121.0 (Toolboard. Driver 0 board label). ; R (Axes created in command are...): 0 (Linear). ; S (Axes created in command are treated in feedrate calculations as...): 0 (Linear). ; P (Number of visible axes): - (Defaults to the number of axes that are configured). M671 X410:410:-60:-60 Y422:-8:-8:422 S20 F1.0 ; Set positions of Z belts (60mm X, 72mm Y offsets in back. 60mm X, 8mm Y offsets in front.) 0 (410,422), 1 (410, -8), 2 (-60, -8), 3 (-60, 422). ; X (X coordinates of Z screws). ; Y (Y coordinates of Z screws). ; S (Maximum correction to apply to each Z screw [mm]). ; F (Fudge factor). M350 X16 Y16 Z16 E16 I1 ; Set microstepping mode and interpolation. ; X (X axis): 16 (1/16 step). ; Y (Y axis): 16 (1/16 step). ; Z (Z axis): 16 (1/16 step). ; E (Extruder): 16 (1/16 step). ; I (Microstepping interpolation mode): 1 (Enable). M92 X80 Y80 Z400 E814 ; Set axis steps per unit (steps/mm). ; X (X axis). ; Y (Y axis). ; Z (Z axis). ; E (Extruder). (800 is default for Bondtech LGX Lite Pro). M566 X480 Y480 Z24 E150 P1 ; Set maximum instantaneous speed change (jerk/square corner velocity). ; X (X axis [mm/min]): 480 (8 mm/sec. 5 mm/sec was too low. 8 mm/sec was good). ; Y (Y axis [mm/min]): 480 (8 mm/sec. 5 mm/sec was too low. 8 mm/sec was good). ; Z (Z axis [mm/min]): 24 (0.4 mm/sec. 0.2 mm/sec was too low. 3 mm/sec was good. 12 mm/sec was too high.). ; E (Extruder [mm/min]): 150 (2.5 mm/sec. 2 mm/sec based on garethky Github recommendation was too low. 133 mm/sec based on DorjeDorf Github recommendation was too high). ; P (Jerk policy): 1 (Jerk is applied between any pair of travel/print moves). M203 S1 X600 Y600 Z50 E120 ; Set maximum feedrate (speed). ; S (Units): 1 (mm/sec. Default is mm/min). ; X (X axis [mm/sec]). (Reference RepRapFirmware EMF Calculator). ; Y (Y axis [mm/sec]).(Reference RepRapFirmware EMF Calculator). ; Z (Z axis [mm/sec]). ; E (Extruder [mm/sec]). (Ultimaker S7 default retract speed is 45). M201 X20000 Y20000 Z500 E5000 ; Set maximum print move accelerations. ; X (X axis [mm/sec^2]). ; Y (Y axis [mm/sec^2]). ; Z (Z axis [mm/sec^2]). ; E (Extruder [mm/sec^2]). M906 X1680 Y1680 Z900 E550 I30 ; Set maximum peak motor currents (Duet 3 MB6HC is in steps of 26.2mA. Duet 3 1LC toolboard is in steps of 50mA, rounded down). ; X (X drive [mA]). (1,680 is 60% of max peak rated motor current of 2,800 mA. 2,227 was too high, too hot to touch.). ; Y (Y drive [mA]). (1,680 is 60% of max peak rated motor current of 2,800 mA. 2,227 was too high, too hot to touch.). ; Z (Z drive mA]). (900 is 45% of max peak rated motor current of 2,000 mA. 1388.6 was a little too loud). ; E (Extruder [mA]). (Bondtech 01LCT00STM00008/Bondtech LGX Lite Pro. 550 is 55% of max peak rated motor current of 1,000 mA. Bondtech site recommends 550-650ma w/ extruder. ; 700 was too high, too hot to touch.). ; I (Motor current idle factor [%]). M84 S30 ; Stop idle hold. ; S (Idle time out [sec]). ; Axis Limits M208 X0:350 Y0:350 Z0:310 ; Set axis maximum travel. ; S (Set axis): - (Excluded for alternative format). ; X (X axis [mm]). (Min) : (Max). ; Y (Y axis [mm]). (Min) : (Max). ; Z (Z axis [mm]). (Min) : (Max). ; Calculate Bed Center if !exists(global.bed_center_x) global bed_center_x = floor(move.axes[0].max / 2) if !exists(global.bed_center_y) global bed_center_y = floor(move.axes[1].max / 2) ; Endstops M574 X2 P"0.io0.in" S1 ; Set endstop configuration. ; X (Position of X endstop): 2 (High end). ; P (Pin name): 0. (Mainboard) io0.in. ; S (Endstop type): 1 (Switch type). M574 Y2 P"0.io1.in" S1 ; Set endstop configuration. ; Y (Position of Y endstop): 2 (High end). ; P (Pin name): 0. (Mainboard) io1.in. ; S (Endstop type): 1 (Switch type). M574 Z0 ; Set endstop configuration. ; Z (Position of Z endstop): 0 (None). ; Axis Compensation ; M556 S100 X0.247 ; Axis skew compensation. ; S (Value of the measured distance [mm]). ; X (Deviation in the X/Y settings [mm]). ; Bed Compensation Taper M376 H2 ; Set bed compensation taper. ; H (Taper height). ; Z Probe M950 S0 C"121.io0.out" ; Create GPIO/servo pin. ; S (Output/servo pin number). ; C (Pin name): 121. (Toolboard) io0.out. M558 P8 C"121.io0.in" H3 F600:120 T30000 K0 R0 A1 B1 ; Set Z probe type. ; P (Z Probe type): 8 (Omron TL-Q5MC2 NPN Normally Closed NC Inductive Proximity Sensor). ; C (Endstop input): - (Not Inverted due to NC) 121. (Toolboard) io4.in. ; H (Dive height [mm]). ; F (Feed rate. Probing speed [mm/min]) ; T (Travel speed [mm/min]). 21,000 (350 mm/sec). ; K (Z probe number): 0 (1). ; R (Recovery time [sec]). ; A (Max number of times to probe each point) ; B (Heaters): 1 (Turn off all heaters while probing). G31 P100 X0 Y24.0 Z2.191 K0 ; Set Z probe. ; P (Trigger value). ; X (Probe X offset [mm]). ; Y (Probe Y offset [mm]). ; Z (Trigger Z height [mm]). (This is modified for Z probe calibration. A higher offset number moves the nozzle closer to the bed.). ; K (Z probe number). M557 X25:325 Y25:313.5 P3 ; Define Z probe mesh grid (This is the probe point grid, not the nozzle grid). ; X (Min:Max X coordinates to probe [mm]). (Min) : (Max). ; Y (Min:Max Y coordinates to probe [mm]). (Min) : (Max). ; P (Points to probe in each settings). ; Heater, Bed M308 S0 P"0.temp0" Y"thermistor" A"Bed" T100000 B3950 C0 R2200 L0 H-6 ; Set (Bed) temperature sensor parameters. ; S (Sensor number). ; P (Pin name): 0. (Mainboard) temp0. ; Y (Sensor type). ; A (Sensor name). ; T (Thermistor resistance at 25 deg C [ohms]). ; B (Beta value): 3,950 (From Keenovo website). ; C (C Coefficient). ; R (Series resistor value [ohms]): 2,200 (Default for Duet3). ; L (ADC low offset correction): 0 (Default is 0. Semi-auto calibration gets 0. Manual calibration gets 0.). ; H (ADC high offset correction): -6 (Default is 0. Semi-auto calibration gets -6. Manual calibration gets -6.). M950 H0 C"0.out0" Q10 T0 ; Create heater (Bed). ; H (Heater number). ; C (Pin name): 0. (Mainboard) out0. ; Q (PWM frequency [Hz]): 10 (Due to solid state relay). ; T (Temperature sensor number): 0 (Bed). M307 H0 R0.645 D1.57 E1.35 K0.355:0.000 B0 I0 S1.00 V0 ; Set heating process parameters (Auto tune performed: M303 H0 P1 S100). ; H (Heater number): 0 (Bed). ; R (Heating rate [deg C/sec]). ; D (Dead time [sec]). ; E (Exponent of cooling rate curve): 1.35 (default). ; K (Cooling rate at 100C above ambient [deg C/sec]). ; B (Bang bang control): 0 (Disabled). ; I (PWM signal inversion): 0 (Not inverted). ; S (Maximum PWM frequency to use). ; V (V in calibration supply voltage): 0 (Disabled due to mains power supply. Also, not applied to bed heaters). M140 P0 H0 ; Configure bed heater. ; P (Bed heater index); 0 (Default.) ; H (Heater number): 0 (Map heated bed to heater 0.). M143 H0 S125 A0 C0 ; Set maximum heater temperature. ; H (Heater number to monitor): 0 (Bed). ; S (Maximum permitted temperature [deg C]): 125 (Due to Keenovo bed heater adhesive). ; A (Action to trigger): 0 (Default. Generate heater fault). ; C (Condition for temperature event): 0 (Default. Temperature too high). ; Heater, Extruder 1 M308 S1 P"121.temp0" Y"pt1000" A"Extr. 1" L-20 H4 ; Set (Extruder 1) temperature sensor parameters. ; S (Sensor number): 1 (Extruder 1). ; P (Pin name): 0. (Mainboard) temp1. ; Y (sensor type): pt1000 (E3D PT1000). ; A (Sensor name). ; R (Series resistor value [ohms]): - (Uses the default for the board). ; L (ADC low offset correction): ... (Default is 0. Semi-auto calibration gets -15. Manual calibration gets -20.) ; H (ADC high offset correction): ... (Default is 0. Semi-auto calibration gets -1. Manual calibration gets 4.) M950 H1 C"121.out0" Q250 T1 ; Create heater (Extruder 1, E3D E-HEATER-HT-24V-65W-KIT). ; H (Heater number). ; C (Pin name): 0. (Mainboard) out1. ; Q (PWM frequency [Hz]): 250 (Default for heaters). ; T (Temperature sensor number). M307 H1 R3.381 D3.42 E1.35 K0.496:0.430 B0 I0 S1.00 V23.5 ; Set heating process parameters (Auto tune performed: M303 H1 P1 S240 T0 A20 Y5 F1). ; H (Heater number): 1 (Extruder 1). ; R (Heating rate [deg C/sec]): 3.381 (ST heat break: 3.680. Decrease this by 30% if a heater temperature error shows up). ; D (Dead time [sec]): 3.42 (ST Heat Break: 3.48). ; E (Exponent of cooling rate curve): 1.35 (default). ; K (Cooling rate at 100C above ambient [deg C/sec]): 0.496:0.430 (ST Heat Break: 0.425:0.258). ; B (Bang bang control): 0 (Disabled). ; I (PWM signal inversion): 0 (Not inverted). ; S (Max PWM frequency to use). ; V (Vin calibration supply voltage [V]). M143 H1 S280 A0 C0 ; Set maximum heater temperature. ; H (Heater number to monitor): 1 (Extruder 1). ; S (Maximum permitted temperature [deg C]): ... (Max hot end temp: 500. Max heater temp: 550. Max PT1000 sensor temp: 500. Max silicone sock temp: 280. Max nozzle temp: 300.) ; A (Action to trigger): 0 (Default. Generate heater fault). ; C (Condition for temperature event): 0 (Default. Temperature too high). M302 P0 S160 R90 ; Allow cold extrudes. ; P (Cold extrude allow state): 0 (Forbid cold extrudes). ; S (Minimum extrusion temperature [deg C]): 160 (Default). ; R (Minimum retraction temperature [deg C]): 90 (Default). M570 H1 P5 R3 ; Configure heater fault detection. ; H (Heater number): 1 (Extruder 1). ; P (Time for which a temperature anomaly must persist before raising a heater fault [sec]): 5 (Default). ; T (Permitted temperature excursion from the setpoint [deg C]): 15 (Default). ; R (Maximum number of consecutive temperature reading failures before a heater fault is raised): 3 (Default). ; Fan, Print Cooling M950 F0 C"121.out1" Q15000 ; Create fan (Mechatronics B5015E24B-BSR). ; F (Fan number). ; C (Pin name): 121. (Toolboard) out1. ; Q (PWM frequency [Hz]). M106 P0 S0.00 L0.02 X1.00 B0.3 H-1 R1 C"Print Fan" ; Set fan. ; P (Fan number): 0 (Print/part cooling). ; S (Fan speed [%]). ; L (Minimum fan speed [%]). ; X (Maximum fan speed [%]). ; B (Blip time [sec]). ; H (Thermostatic control): -1 (Disabled). ; R (Restore fan speed): 1 (To the value it has when the print was paused). ; C (Name). ; Fan, Heat Break M950 F1 C"121.out2" Q25000 ; Create fan (Orion OD4010-24HB01A). ; F (Fan number). ; C (Pin name): 121. (Toolboard) out2. ; Q (PWM frequency [Hz]). M106 P1 S1.0 L0.2 X1.0 B0.5 H1 T45 C"Heat Break Fan" ; Set fan. ; P (Fan number): 1 (Heat break). ; S (Fan speed [%]). ; L (Minimum fan speed [%]). ; X (Maximum fan speed [%]). ; B (Blip time [sec]). ; H (Thermostatic control): 1 (Extruder 1). ; T (Thermostatic mode trigger temperature [deg C]). ; C (Name). ; Fans, Case M308 S2 Y"drivers" A"Driver Temp" ; Set (stepper drivers) temperature sensor. ; S (Sensor number). ; Y (Sensor type): drivers (Mainboard stepper drivers). ; A (Sensor name). M308 S3 Y"mcu_temp" A"MCU Temp" ; Set (CPU/MCU) temperature sensor. ; S (Sensor number). ; Y (Sensor type): mcu_temp (CPU/MCU). ; A (Sensor name). M950 F2 C"0.out6" Q25000 ; Create fan (Delta AFB0624LD). ; F (Fan number): 2 (Case fan). ; C (Pin name): 0. (Mainboard) out6. ; Q (PWM frequency [Hz]). M106 P2 L0.8 X1.0 B0.1 H2:3 T58:65 C"Case Fans" ; Set fan. ; P (Fan number): 2 (Electronics). ; L (Minimum fan speed [%]). ; X (Maximum fan speed [%]). ; B (Blip time [sec]). ; H (Thermostatic control): 2 (stepper drivers) : 3 (CPU/MCU). ; T (Thermostatic trigger temperature [C]): ... - ... (Proportional range). ; C (Name). ; Fan, Exhaust M950 F3 C"0.out4" Q15000 ; Create fan (Delta AFB0624LD). ; F (Fan number). ; C (Pin name): 0. (Mainboard) out4. ; Q (PWM frequency [Hz]). M106 P3 L0.8 X1.0 B0.1 H1 T45 C"Exhaust Fan" ; Set fan. ; P (Fan number): 1 (Heat break). ; S (Fan speed [%]). ; L (Minimum fan speed [%]). ; X (Maximum fan speed [%]). ; B (Blip time [sec]). ; H (Thermostatic control): 1 (Extruder 1). ; T (Thermostatic mode trigger temperature [deg C]). ; C (Name). ; Tools M563 P0 S"Extr. 1" D0 H1 F0 L0 ; Define tool. ; P (Tool number): 0 (Extruder 1). ; S (Tool name). ; D (Extruder drive): 0 (defined in M584 as E1.0). ; H (Heater): 1 (Extruder 1, defined in M950 H1). ; F (Fan mapped): 0 (Print/part cooling fan). ; L (Drive to use for filament mapping). M568 P0 R0 S0 A0 ; Set tool settings (Set temperature). ; P (Tool number): 0 (Tool 1. Extruder 1). ; R (Standby temperature [deg C]). ; S (Active temperature [deg C]). ; F (Spindle speed [RPM]): - (No spindle used). ; A (Required heater state): 0 (Off). G10 L1 P0 X0 Y0 Z0 ; Set tool offset and temperature. ; L (Mode): 1 (Default. Sets the tool offset, as if the L parameter was not present). ; P (Tool number): 0 (Tool 1. Extruder 1). ; X (X offset). ; Y (Y offset). ; Z (Z offset). ; Display M575 P1 S1 B57600 S1 ; Set serial communications parameters. ; P (Serial channel number): 1 (Auxiliary serial port). ; B (Baud rate): 57,600 (PanelDue default). ; S (Mode): 1 (PanelDue, checksum required). ; Automatic Power Saving M911 S21.0 R22.0 P"M568P0A0 M913X0Y0 G91 G1Z3F2400 M83 E-1 F900" ; Set auto save on power loss. ; S (Auto save threshold [V]). ; R (Resume threshold [V]). ; P (Commands on power loss). ; CPU Temperature Compensation M912 P0 S00.0 ; Set electronics temperature monitor adjustment. ; P (Temperature monitor channel): 0 (Default). ; S (Value to be added to temperature reading [C]): 00.0 (Lower number decreases displayed cpu temperature. =(temperature_actual)-(temperature_indicated)). ; Pressure Advance M572 D0 S0.000 ; Set extruder pressure advance (Linear advance). ; D (Extruder number): 0 (Extruder 1). ; S (Pressure advance amount [sec]). ; Accelerometer Configuration ; M955 P121.0 I05 ; Configure accelerometer (This is for when the Duet Toolboard 1LC accelerometer is used). ; P (Accelerometer to use): 121.0 (Duet Toolboard) ; I (Accelerometer orientation): 0 (+Z accelerometer faces +X on printer), 5 (+X accelerometer faces -Y on printer). ; M955 P0 I65 C"spi.cs1+spi.cs0" ; Configure accelerometer (This is for when the Duet Standalone Accelerometer Board using the LIS3DH MEMS digital motion sensor is used). ; P (Accelerometer to use): 0 (Connected locally via SPI). ; I (Accelerometer orientation): 6 (+Z accelerometer faces -Z on printer), 5 (+X accelerometer faces -Y on printer). ; C (Pins used): "spi.cs1+spi.cs0" (All wires connected to Temp DB connector. No temperature daughterboard is inline. Connect the IDC cable ; plug into the main board with the cable ribon pointing inboard). ; Input Shaping M593 P"zvddd" F53.0 S0.1 L0.25 ; Configure Input Shaping. ; P (Input shaping type). ; F (Frequency [Hz]). ; S (Damping factor): 0.1 (default). ; L (Minimum acceleration [mm/sec^2]): 0.25 (default). ; Filament Sensing M591 D0 P3 C"121.io1.in" S1 L26.31 R25:200 E20.0 A0 ; Configure filament sensing (Duet rotating magnet filament sensor. Hardware v3.0. Software v4.0. Presence, detection, ; jam, runout). ; D (Extruder drive number): 0 (Extruder 1). ; P (Sensor type): 3 (Duet rotating magnet sensor without microswitch). ; C (Pin name): "121. (Toolboard) io1.in". ; S (Enable monitoring): 1 (Enable when printing from SD card). ; L (Sensitivity [mm/rev]). (Default is 28.80). ; R (Movement tolerance[%]). (Default is 60-160). ; E (Extrusion length [mm]. (Default is 3.0. Will likely need 10-20 given sensor distance from extruder. 10mm of ; histerysis was measured). ; A (Check motion): 0 (Default. Check extruder motion of only printing moves). ; Select Tool T0 ; Select the first tool.
-
start gcode
; Printer Settings Start GCode Start ; Prepare G21 ; Set units to millimeters (mm). G90 ; Set all axes (not extruders) to absolute positioning. M83 ; Set all extruders (not axes) to relative positioning. M106 P0 S0 ; Fan (Make sure part cooling fan is off at beginning of print). ; P (Fan number): 0 (Default. Extruder 1). ; S (Fan Speed): 0 (Turn off). M220 S100 ; Set speed factor override percentage (Set speed factor to 100%). ; S (Speed factor override percentage): 100 % (Default). M221 S100 D0 ; Set extrusion factor override percentage (Set extrusion factor to 100%). ; S (Extrude factor override percentage): 100 % (Default). ; D (Extruder drive number): 0 (Default. Extruder 1). M572 D0 S0 ; Set extruder pressure advance (Turn off pressure/linear advance). ; D (Extruder number): 0 (Default. Extruder 1). ; S (Pressure advance amount): 0 sec (Turn off). ; Notify M291 P"Printer: Voron. Material: {filament_preset[current_extruder]}. Nozzle: {nozzle_diameter[current_extruder]}. Layer: {layer_height}." R"Settings" S1 T10 ; Display message. ; Home G28 ; Home (all axes). ; X (Flag to home the X axis): - ; Y (Flag to home the Y axis): - ; Z (Flag to home the Z axis): - ; Heat (1 of 2) M140 S{first_layer_bed_temperature[0]} ; Set bed temperature and dont wait (Heat up bed to first layer settings). ; P (Bed heater index): - (Default is 0). ; H (Heater Number): - ; S (Active/Target temperature): ... deg C. T0 ; Select tool. ; n (Tool number to select): 0 (Tool 1. A negative number deselects all tools.) ; R1 (Select the tool that was active when the print was last paused): - ; P (Bitmap of the macros to be run): - M568 P0 R{nozzle_temperature_range_low[current_extruder] - 40} S{nozzle_temperature_initial_layer[current_extruder]} A1 ; Set tool (Extruder 1 temperature) settings. ; P (Tool number): ... ; R (Standby temperature): ... deg C. ; S (Active temperature): ... deg C. ; A (Required heater state): 1 (Standby temperature). ; Move Toolhead G1 X{(print_bed_min[0] + print_bed_max[0]) / 2} Y{print_bed_max[1] - 10} F21000 ; Controlled linear move (Absolute. Hover over rear center position to facilitate bed preparation). ; X (X axis): ... ; Y (Y axis): ... ; Z (Z axis): - ; F (Feed rate): 21,000 mm/min (350 mm/sec). ; H (Move type): - (Default is 0). ; Wait for Heaters M116 ; Wait (for the nozzle and the bed to heat up). ; P (Tool number): - ; H (Heater number): - ; C (Chamber number): - ; S (Tolerance): - deg C. ; Run Bed Compensation G32 ; Run "bed.g" macro for automatic bed compensation. ; Heat (2 of 2) M140 S{first_layer_bed_temperature[0]} ; Set bed temperature and dont wait (Heat up bed to first layer settings). ; P (Bed heater index): - (Default is 0). ; H (Heater Number): - ; S (Active/Target temperature): ... deg C. M568 P0 A2 ; Set tool settings and dont wait (Heat the extruder up 2 of 2 to active temp). ; P (Tool number): ... ; R (Standby temperature): - deg C (This parameter has been referenced already). ; S (Active temperature): - deg C (This parameter has been referenced already). ; A (Required heater state): 2 (Active temperature). M116 ; Wait (for the nozzle and bed to heat up). ; P (Tool number): - ; H (Heater number): - ; C (Chamber number): - ; S (Tolerance): - deg C. ; Move Toolhead G1 X0 Y0 Z3 F21000 ; Controlled linear move (Absolute. Hover over origin position). ; X (X axis): ... ; Y (Y axis): ... ; Z (Z axis): ... (To prevent scratching the bed). ; F (Feed rate): 21,000 mm/min (350 mm/sec). ; H (Move type): - (Default is 0). ; Purge Blob G1 E1 F900 ; Controlled linear move (Relative. Un-retract extruder). ; E (Extrude): 1 mm (You retract 1 mm for the End GCode or the cancel.g file) ; F (Feed rate): 900 mm/min (15 mm/sec. Minimum un-retraction for S7 printer). G1 E10 F94 ; Controlled linear move (Relative. Prime the hotend). ; E (Extrude): 10 mm. ; F (Feed rate): 94 mm/min (1.57 mm/sec. A flow rate of ~ 10 mm^3/sec). ; Prime Line G1 X5 Z0.2 F2400 ; Controlled linear move (Absolute. Move -Z and +Y to start prime line). ; X (X axis): 5 mm (Move to X of 5, to prevent nozzle squishing into prime blob). ; Z (Z axis): 0.2 mm (Move to Z of 0.2, to go to start of layer). G1 X325 E12 F1200 ; Print prime line horizontally across front left corner (Uses a conservative initial layer speed of 20 mm/sec). G1 X350 F7200 ; Travel to release purge line from nozzle. G1 Z3 F2400 ; Raise extruder to prevent bed scratching. G92 E0 ; Reset extruder distance to 0. ; Printer Settings Start GCode End
-
It seems to fail around the bed.g section:
; Voron ; 0:/sys/bed.g ; Called to perform automatic bed compensation via G32. ; Prepare M400 ; Wait for current moves to finish. M561 ; Clear any bed plane fitting transform. M290 S0 R0 ; Baby stepping. ; S (Amount to baby step [mm]): 0 (Clear/Reset). ; R (Relative?): 0 (Absolute). ; Home (1 of 2) if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; If the axes are not homed ... G28 ; ... home the axes. ; Gantry Tram M98 P"gantry_probing.g" echo "BTC: 1 - Difference was " ^ move.calibration.initial.deviation ^ "mm" while move.calibration.initial.deviation >= 0.05 ; perform additional tramming if previous deviation was over 0.05 mm. if iterations = 5 abort "Too many auto tramming attempts" M98 P"gantry_probing.g" ; perform bed tramming echo "BTC: " ^ iterations + 2 ^ " - Difference was " ^ move.calibration.initial.deviation ^ "mm" continue ; Home 2 of 2 (Just Z). G28 Z ; Home z ; Bed Level G29 S0 ; Mesh bed probe. ; S (Set parameter): 0 (Probe the bed. Save height map in the file "/sys/heightmap.csv" on the SD card. Activate bed compensation.) ; End
here is the referenced gantry_probing.g file as well
; Gantry Tram G90 ; Absolute positioning. G30 P0 X325 Y313.5 Z-99999 ; Single Z probe (Probe points are based on probe location, not nozzle location. See config.g M557). ; P (Probe point number): 0 (1st of 4). ; X (X coordinate): 325 (Right side). ; Y (Y coordinate): 313.5 (Far side). ; Z (Z coordinate): -99999 (Probe the bed). G30 P1 X325 Y25 Z-99999 ; Single Z probe. ; P (Probe point number): 1 (2nd of 4). ; X (X coordinate): 325 (right side). ; Y (Y coordinate): 313.5 (close side). ; Z (Z coordinate): -99999 (Probe the bed). G30 P2 X25 Y25 Z-99999 ; Single Z probe. ; P (Probe point number): 2 (3rd of 4). ; X (X coordinate): 25 (left side). ; Y (Y coordinate): 25 (close side). ; Z (Z coordinate): -99999 (Probe the bed). G30 P3 X25 Y313.5 Z-99999 S4 ; Single Z probe. ; P (Probe point number): 3 (4th of 4). ; X (X coordinate): 25 (left side). ; Y (Y coordinate): 313.5 (far side). ; Z (Z coordinate): -99999 (Probe the bed). ; S (Set parameter): 4 (Calculate 4 point compensation).
-
Also, if it helps, my X and Y steppers sound noticeably quieter after the update, even though M970 shows phase stepping as disabled for all axes. Steppers are LDO 42STH60-2004AH on a voron 2.4 350 setup.
-
@Charlie Does the iterations variable used in bed.g need to be defined?
-
@adrian iterations is a builtin keyword for loops.
-
Its looking like more of a stepper motor/driver issue. Increasing the X/Y stepper motor current to 2380 mA allows me to run the homing sequence and have 600mm/s travel speeds with 7000mm/s^2 accels.
I think my biggest question now is what all the new parameters do. Im using the Forum, GCode Dictionary and the github changelogs to get most of my info.
Any more info on what M970.1 and .2 do? My assumption is that the speed and accel "constant" is like the slope "m" on a y=mx+b style graph, where "b" is min stepper current (motor idle current set by M906?), and the actual current set is the maximum of either the 970.1 and 970.2 lookup values. Im really in the dark regarding this stuff though, so please let me know if I'm completely wrong.
-
Hi @Charlie, I added the new phase stepping feature but it is still experimental. Phase stepping is disabled by default unless you run
M970 {axis letter}1
(note that it is currently only supported on 6HC mainboard drivers).One of the benefits of phase stepping is lower motor noise. In the 3.6.0-beta1 release this is done my controlling the motor current based on speed and acceleration.
M970.1
,M970.2
&M917
allow setting the scaling factors for this equation. For example, you may find that you want higher current when accelerating/decelerating to prevent stalling but a lower current when moving at steady speed to reduce noise.M917
sets the minimum current percentage based on theM906
value. The current will never exceed theM906
value.If you want to use phase stepping then please do give feedback on how you find it performs. It should be safe to use but limited print comparisons have been done at this point.
As for your issue, it sounds like increasing the motor current fixes it? If so my guess would be the new input shaper is causing a move to achieve slightly higher accelerations/speeds than it did in 3.5 which could have caused a motor stall.
-
@Charlie the easiest way to tune the phase step parameters is to connect a USB cable to the Duet with a program like YAT or Putty and enable debugging with
M111 P4 S1
(disable it again after you are done). Then do a move with a phase stepped axis and it will print an output like this:
Thev
is velocity,a
is acceleration, andcf
is current fraction (what theM906
value will be multiplied by for that point in the move.You can tweak the
M970.1
,M970.2
&M917
parameters untill you are happy with the max speed/acceleration and noise that the motors are making -
@Charlie one other thing to verify relating to you homing/motor stalling issue is the actual current that is being applied to the motors. Can you send the response from
M569 P{driver_num}
andM906
please. Make sure thatM569
is sent soon after a move so that the current has not been reduced by theM906
idle current reduction -
@AndyE3D First of all, thank you so much for your work on implementing this feature! Its been awesome for decreasing motor noise, as well as decreasing VFAs (especially below 100mm/s print speeds).
When I get the time, Ill be sure to do that. Im assuming that I would be able to run Serial Tools app from mac to do the same stuff on a Mac.
Im also getting one of the Vector 3D stepper motor analyzers. I don’t know if anyone has used that and has any input, but Ill be sure to report my findings.
-
@AndyE3D This may sound simple, but how do I get the "v, a, cf" display in SBC mode? I enabled debugging using the M111 P4 S1 in dwc, plugged my computer into the USB port on the Duet, and I tried Serial Tools on a Mac, but I dont get any response. Im assuming that this may be correct for standalone mode, but not for SBC. Is this correct?
-
@AndyE3D I also tried using YAT on a PC, and was unable to get a response from any commands that I made (like M122 or M115). Im assuming that this may have something to do with SBC mode, or Im making some other error in the setup.
-
@AndyE3D Do we know what the M970.1 default 1000 and the M970.2 5000 values are relative to?
The documentation is a bit sparse on how the math is calculated. -
@Notepad I completely agree. "Acceleration/Velocity constant." Does not help much when trying to tune settings. I was hoping to be able to report back how the calculations are made after doing some testing (and reverse calculating the current factor), but without being able to get a debugging output Im unable to help.
-
Does anyone have references to how this is implemented?
The only link I currently have is M970. Others with more info (particularly regarding how its calculated and tuned) would be greatly appreciated.
-
@Charlie I don't think SBC mode will impact the USB interface to the Duet. You may need to try a different USB cable as for reasons I've never understood the Duet boards seem very sensitive to this. When you plug the cable into a windows PC do you see a new COM port being created (and hear the windows "new device" sound)? If you do you should see the device come and go in the windows device manager. I'd try opening that port using putty (rather than YAT as I've found YAT to be a little fussy with the terminal settings). If you use putty you will probably need to enable local echo (to see what you type) and also adjust the handling of newline to also perform a carriage return. See: https://teamgloomy.github.io/putty.html for more details (this is for the stm32 port of RRF firmware but pretty much all of it applies to the Duet).
-
@Notepad @Charlie this is the equation that uses the acceleration & velocity constants
float PhaseStep::CalculateCurrentFraction() noexcept { // Driver is in assisted open loop mode // In this mode the PID terms are not used and the A and V terms are independent of the loop time. constexpr float scalingFactor = 100.0; constexpr float scalingFactorSqr = scalingFactor * scalingFactor; PIDVTerm = mParams.speed * Kv * scalingFactor; PIDATerm = mParams.acceleration * Ka * scalingFactorSqr; PIDControlSignal = min<float>(fabsf(PIDVTerm) + fabsf(PIDATerm), 256.0); currentFraction = holdCurrentFraction + (1.0 - holdCurrentFraction) * min<float>(PIDControlSignal * (1.0/256.0), 1.0); if (reprap.GetDebugFlags(Module::Move).IsBitSet(MoveDebugFlags::PhaseStep)) { debugPrintf("v=%f, a=%f, cf=%f\n", (double)(mParams.speed * scalingFactor), (double)(mParams.acceleration * scalingFactorSqr), (double)currentFraction); } return currentFraction; }
The units, calculation, and tuning are almost identical to assisted open loop on the 1HCL board with the main difference being it does not have the encoder to warn about skipped steps (stall detect also does not work when phase stepping), and the Kp & Kd terms are not used.
In YAT make sure that you have enabled
DTR
if you are running the latest firmware as the USB code was changed recently. I don't know if there are other difference connecting to the Duet on MacOS
-
@AndyE3D Thank you so much for posting this code. Im pretty new to code in general, but it looks like makes sense (unless im completely mistaken which is also possible). Looks like this is in GitHub: ReprapFirmware/src/Movement/PhaseStep.cpp, line 132 for others that may be looking.
After trying to put some of this in a spreadsheet (which Im sure is not the best way to go about this, but its what I kinda know), and putting in some velocity and acceleration values, Im struggling to get the PIDControlSignal value to be anything other than the 256 max value, which will in turn set the currentFraction to the max of 1.
Im not sure what Im missing here. Could be that the mParams arent actually as simple as the speed and accel in mm/sec(^2), I may have calculated holdCurrentFraction wrong (in PhaseStep.h as 0.71), or the default values are really conservative. Or something else that I cant think of.
-
@AndyE3D And yes, making sure that DTR was enabled solved my issue with connection! Thank you so much. I can now use YAT on the PC to send and receive commands using a direct USB connection to the Duet.
Now my issue is that, although I can connect and send an M122 command and get an output, once I send
M111 P4 S1
, every time I send a move command (likeG91 G1 H2 X10 F3000
) I get a "Warning: Lost connection to Duet (Timeout while waiting for transfer ready pin)", and then a "Warning: SPI connection has been reset". Then it seems to restart, as the machine is no longer homed.