IDEX - tool overstepping



  • Hi,

    I have a cartesian IDEX printer running the STM port in SBC mode. Currently the printer prints fine when only T0 is used. In dual mode the T0 oversteps after a few layers are printed.
    image0.jpg
    I have increased the current and idle current factor for the motors, but still get the same results.

    My configuration consists of the following:
    Board: STM32F4 SBC (STMSBC)
    DSF Version: 3.1.1
    Firmware: RepRapFirmware for STM32F4 based Boards 3.2-beta1_2 (2020-09-15b1)
    Duet Web Control 3.1.1```
    code_text

    ; Drives
    M569 P0 S1 D3 V25                              	; X 	=> physical drive 0 goes forwards using default driver timings
    M569 P1 S1 D3 V25                              	; Y 	=> physical drive 1 goes forwards using default driver timings
    M569 P2 S1 D3 V25                              	; Z 	=> physical drive 2 goes forwards using default driver timings
    M569 P3 S0 D2                                  	; E0 	=> physical drive 3 goes backwards using default driver timings
    M569 P4 S1 D2								   	; E1 	=> physical drive 4 goes backwards using default driver timings
    M569 P5 S1 D3 V25							   	; U 	=> physical drive 5 goes forwards using default driver timings
    M584 X0 Y1 Z2 E3:4 U5                          	; set drive mapping
    M350 X16 U16 Y16 Z16 E16:16 I1                 	; configure microstepping with interpolation
    
    M92 X100.00 U100.00 Y100.00 Z400.00				; set  axis steps per mm
    M92 E96.452:96.40    						   	; set extruder steps per mm
    
    M566 X600.00 U600.00 Y600.00 Z12.00            	; set maximum instantaneous speed changes (mm/min)
    M566 E300.00:300.00								; set maximum instantaneous speed changes (mm/min)
    
    M203 X12000.00 U12000.00 Y12000.00 Z720.00     	; set maximum speeds (mm/min)
    M203 E1500.00:1500.00					      	; set maximum speeds (mm/min)
    
    M201 X1000.00 U1000.00 Y1000.00 Z200.00       	; set accelerations (mm/s^2)
    M201 E10000.00:10000.00							; set accelerations (mm/s^2)
    
    ;M906 X933 U933 Y1131.2 Z1060 I30              	; set motor currents (mA) and motor idle factor in percent
    ;M906 E1060:1060 I30							; set motor currents (mA) and motor idle factor in percent
    
    M906 X1200 U1200 Y1400 Z1200 I50              	; set motor currents (mA) and motor idle factor in percent
    M906 E1400:1400 I50								; set motor currents (mA) and motor idle factor in percent
    
    M84 S30                                        	; Set idle timeout
    
    ; Axis Limits
    M208 X-47 U16 Y0 Z0 S1							; set axis minima
    M208 X215 U284 Y320 Z345 S0						; set axis maxima => Old U286
    
    ; Endstops/probe 
    ;M574 X1 S1 P"x-stop"                          	; configure active-high endstop for low end on X via pin xstop
    ;M574 Y1 S1 P"y-stop"                          	; configure active-high endstop for low end on Y via pin ystop
    M574 Z1 S2                                     	; configure Z-probe endstop for low end on Z
    
    ; Sensorless homing for X, Y and U axis
    M574 X1 Y1 U2 S3
    M915 X Y U R0 F0							   	; motor stall detection
    
    ; Z-Probe
    M558 P5 C"!zstop" H5 F360 T6000 A2             	; set Z probe type to switch and the dive height + speeds
    G31 P500 X28 Y20 Z0.163 ;0.183 ;0.233                 	; set Z probe trigger value, offset and trigger height
    M557 X5:225 Y20:315 P10:10                     	; define mesh grid with 10x10 probing points
    
    ; Heaters
    M308 S0 P"F.3" Y"thermistor" T100000 B4092	   	; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"B.0" T0 Q10                          	; create bed heater output on bed and map it to sensor 0 (B.0 = e2heat)
    M307 H0 B0 S1.00                               	; disable bang-bang mode for the bed heater and set PWM limit
    M143 H0 S120                                   	; set temperature limit for heater 0 to 120C
    M140 H0                                        	; map heated bed to heater 0
    
    M308 S1 P"F.4" Y"thermistor" T100000 B4138     	; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"e0heat" T1                           	; create nozzle heater output on e0heat and map it to sensor 1
    M307 H1 B0 S1.00                               	; disable bang-bang mode for heater  and set PWM limit
    M143 H1 S255                                   	; set temperature limit for heater 0 to 255C
    
    M308 S2 P"F.5" Y"thermistor" T100000 B4138	   	; configure sensor 2 as thermistor on pin e1temp
    M950 H2 C"e1heat" T2                           	; create nozzle heater output on e1heat and map it to sensor 2
    M307 H2 B0 S1.00                               	; disable bang-bang mode for heater  and set PWM limit
    M143 H2 S255                                   	; set temperature limit for heater 0 to 255C
    
    ; Fans
    M950 F0 C"fan0" Q500                           	; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1                                 	; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"fan1" Q500                           	; create fan 1 on pin fan1 and set its frequency
    M106 P1 S0 H-1                                 	; set fan 1 value. Thermostatic control is turned off
    
    ; Tools
    M563 P0 D0 H1 F0                               	; 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
    M563 P1 D1 H2 F1 X3                             ; define tool 1
    G10 P1 U4.9 Y0 Z0                               ; set tool 1 axis offsets => old U2.6
    G10 P1 R0 S0                                   	; set initial tool 1 active and standby temperatures to 0C
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    T0                                             	; select first tool
    
    M575 P1 B57600 S0								; Enable BTT 35v2 TFT LCD
    
    M501	
    

    Any help would be appreciated.
    Thank you



  • @Zuru1 My best guess would be some form of motor stalling on T0 causing the layer shift - such as the nozzle catching on the T1 material, etc.

    Is it always the same layer? Always in the same direction? When doing tool changing, do you have any sort of z-hop enabled with the slicer? What if you tried homing T0 and T1 to the X and U origins when running a tool change?



  • I think i migth have solved it, just need to run/complete some tests to be sure.
    The solution I found was increasing the motor idle hold time. This was initially set to 30, so I increased it to 120.



  • @Zuru1 said in IDEX - tool overstepping:

    I think i migth have solved it, just need to run/complete some tests to be sure.
    The solution I found was increasing the motor idle hold time. This was initially set to 30, so I increased it to 120.

    M84, or something else (perhaps specific to the STM port)?

    It is my understanding that, at least on the Duet boards, the unused axis (U or X for example) keeps the stepper motor fully engaged. Coming from a Duet 2 - I don't think configuring M84 will solve the issue, but I may be wrong.



  • Yes M84, was set too low.



  • @sebkritikel I suppose it's possible that the tool changes had all axes sitting idle for 30 seconds while temperatures stabilized?



  • @bot said in IDEX - tool overstepping:

    @sebkritikel I suppose it's possible that the tool changes had all axes sitting idle for 30 seconds while temperatures stabilized?

    That is a great point, and not one I thought of. I might need to think about changing that on my machine... not because I'm having any issues, as my tool changes only take a second as I bring the print temperature up during the other tool's print phase. Just in case I guess.



  • @bot
    Yeah, that was my conclusion as well since i don't bring the Tx to temp before switching.
    So far the result is promising, but i will change my setting in the slicer to bring up the temp before tool switch.


Log in to reply