Problem with tool change - T command



  • Hello. My machine has a dual extruder printhead, I have a lifting mechanism wichs lift up T1 w using a servo. I have managed to configure everything but Im facing a weird problem now: im using a octpoprint interface just as a comment. Printing with T0 works perfect. But now while trying to print with a dual extrusion print, the T1 is doing "something" and just calling to T1 makes octpprint to crash down.
    Im sure it is a configuration issue because I can call T1 withot any problem if I use another printer profile in the slicer and use another printer, octoprint works perfectly, so there is something related to the config in my duet and octoprint.

    I have configured my tool changing in this way:

    ; tfree0.g
    ; called when tool 0 is freed
    ;
    ; generated by RepRapFirmware Configuration Tool
    G10 ; retract 6mm for standby
    G1 X62 Y0 F5000 ; moves to origin for tool change

    ; tfree1.g
    ; called when tool 1 is freed
    ;
    ; generated by RepRapFirmware Configuration Tool
    G10 ;retract
    G1 X0 Y0 F5000 ; move to origin

    ; tpost0.g
    ; called after tool 0 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool
    ; Wait for set temperatures to be reached
    M116
    G11

    ; tpost1.g
    ; called after tool 1 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool
    ; Wait for set temperatures to be reached
    M116
    G11

    ; tpre0.g
    ; called before tool 0 is selected
    ;
    ; generated by RepRapFirmware Configuration Tool
    M280 P0 S92

    ; tpre1.g
    ; called before tool 1 is selected
    ;
    ; generated by RepRapFirmware Configuration Tool
    M280 P0 S47

    My config.g:

    ; Configuration file for Duet 3 (firmware version 3) ORIGINAL
    ; executed by the firmware on start-up
    ;

    ; General preferences
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"Printer" ; set printer name
    M669 K1 ; select CoreXY mode

    ; Network
    M552 S0 ; disable network

    ; Drives
    M569 P0.0 S0 D2 ; physical drive 0.0 goes forwards X Se invirtieron los cables tambien. Se agrego D3 para stealhtchop3
    M569 P0.1 S1 D2 ; physical drive 0.1 goes forwards Y Ultimo cambio: de S0 a S1. Se agrego D3 para stealhtchop3
    M569 P0.2 S1 D2 ; physical drive 0.2 goes forwards
    M569 P0.3 S1 D2 ; physical drive 0.3 goes reverse
    M569 P0.4 S0 D2 ; physical drive 0.4 goes forwards
    M569 P0.5 S1 D2 ; physical drive 0.5 goes backwards

    M584 X0.0 Y0.1 Z0.2:0.3 E0.4:0.5 ; set drive mapping
    M350 X16 Y16 Z32 E16:16 I1 ; configure microstepping with interpolation
    ; M92 X160.32 Y160.32 Z3200.00:3200.00 E827.22 set steps per mm
    M92 X80.16 Y80.16 Z3200.00 E428.25:428.25 ; set steps per mm
    M566 X900.00 Y900.00 Z300.00 E450:450 ; set maximum instantaneous speed changes (mm/min)
    M203 X18000.00 Y18000.00 Z240.00:240.00 E2400.00 ; set maximum speeds (mm/min)
    M201 X1000.00 Y1000.00 Z20.00:20.00 E500.00 ; set accelerations (mm/s^2)
    M906 X1500 Y1500 Z900:900 E1000:1000 I30 ; set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; set axis minima
    M208 X400 Y350 Z400 S0 ; set axis maxima

    ; Endstops
    M574 X1 S3 ; configure sensorless endstop for low end on X
    M574 Y1 S3 ; configure sensorless endstop for low end on Y
    M574 Z2 S2 ; configure Z-probe endstop for low end on Z

    ; Z-Probe
    M558 P5 C"^!io3.in" H5 F120 T18000 ; set Z probe type to switch and the dive height + speeds
    G31 P500 X0 Y28.5 Z0.245 ; set Z probe trigger value, offset and trigger height
    M557 X25:310 Y27:312 S57:57 ; define mesh grid

    ; Heaters
    M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
    M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0
    ;M307 H0 B0 D30 S1.00 ; enable PID para camara, deadtime en 30 segundos
    M307 H0 B1 S1.00 ; enable bang-bang mode for the chamber heater and set PWM limit
    ;M140 H0 ; map heated bed to heater 0
    M141 H0 ; map chamber to heater 0
    M143 H0 S130 ; set temperature limit for heater 0 to 130C
    M308 S1 P"temp1" Y"thermistor" T500000 B4723 C1.19622e-7 ; configure sensor 1 as thermistor on pin temp1
    M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1
    M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
    M308 S2 P"temp2" Y"thermistor" T500000 B4723 C1.19622e-7 ; configure sensor 2 as thermistor on pin temp2
    M950 H2 C"out2" T2 ; create nozzle heater output on out2 and map it to sensor 2
    M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit

    ; Fans
    ;M950 F0 C"out3" Q500 ; create fan 0 on pin out3 and set its frequency
    ;M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
    ;M950 F1 C"out4" Q500 ; create fan 1 on pin out4 and set its frequency
    ;M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on

    ; 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
    M563 P1 D1 H2 define tool 1
    G10 P1 X-61 Y0 Z-2.3 set tool 1 axis offsets
    G10 P1 R0 S0 set initial tool 1 active and standby temperatures to 0C

    ; Custom settings are not defined
    M915 X Y S2 R0 F0 ; sensroless sensitivity

    ; movments without homing
    M564 H0

    ; Miscellaneous
    M207 S6 R0.2 F1800 ;firmware retraction
    M83 ; relative extrusion
    M501 ; load saved parameters from non-volatile memory
    M950 S0 C"0.out9" ; servo "0" in pin out9
    M280 P0 S92 ; move servo to rest position
    M376 H30 ; cancell mesh levelling at 30 mm
    M143 S450 ; set max temp to 450 degrees for T0
    M143 H2 S450 ; set max temp to 450 for T1
    T0 ; select first tool

    And the start of the gcode that Im trying to use to calibrate xy offset and the one that is making me troubles:

    ; generated by SuperSlicer 2.2.53 on 2020-11-08 at 12:33:56 UTC

    ;

    ; external perimeters extrusion width = 0.42mm
    ; perimeters extrusion width = 0.45mm
    ; infill extrusion width = 0.45mm
    ; solid infill extrusion width = 0.45mm
    ; top infill extrusion width = 0.42mm

    ; external perimeters extrusion width = 0.42mm
    ; perimeters extrusion width = 0.45mm
    ; infill extrusion width = 0.45mm
    ; solid infill extrusion width = 0.45mm
    ; top infill extrusion width = 0.42mm

    ; object:{"name":"xy-nozzle-offset-calibration-0","id":"xy-nozzle-offset-calibration-0.1.stl id:0 copy 0","object_center":[175.000000,175.000000,0.000000],"boundingbox_center":[175.000000,175.000000,0.150000],"boundingbox_size":[64.000000,64.000000,0.300000]}

    M107
    T0
    M141 S100
    M116
    G28
    M141 S80
    M116
    G4 S300
    M104 S150
    M116
    G29
    G29 S1
    G21 ; set units to millimeters
    G90 ; use absolute coordinates
    M83 ; use relative distances for extrusion
    T1
    G10 S240 P1 ; set temperature
    M116 ; wait for temperature to be reached

    Look at the T1 calling. If I comment that line, the goce is run (through T0 occourse) without problems. So the trigger is that T1.

    Any ideas about this problem?
    Thanks in advance



  • An important data: I get this error when calling T1:

    Recv: Warning: Tool 1 was not driven because its heater temperatures were not high enough or it has a heater fault

    It is not a heater fault, I checked and heater is working perfect , also on T0


  • Moderator

    The only thing extrusion related in your tool change files is the unretract command.

    ; tpost0.g
    ; called after tool 0 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool
    ; Wait for set temperatures to be reached
    M116
    G11

    ; tpost1.g
    ; called after tool 1 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool
    ; Wait for set temperatures to be reached
    M116
    G11

    What temp is T1 at when that command is executed?



  • @Phaedrux What Iposted are the first lines of the gcode of the printing file.
    In there you can see:
    T0 start at 150 degrees just for doing the bed levelling. It heats up to 150, executes de G29 then switches to T1. In this initial switch T1 os cold because the slicer has not sent any heating command for T1. Inmediatle after calling T1, a G10 S240 is excuted.
    I understand where are you going: Im trying to execute a cold extrusion here at the very starting of the file... The retraction of T0 should be possible, but not the unretract of T1 right?
    Ideas how to solve this configuration issue?


  • Moderator

    I guess you could either change the cold extrusion limits fo retraction, or ensure that T1 is pre-heated at the start of the print as well as T0. Perhaps with a standby temp.

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M302_Allow_cold_extrudes

    That doesn't really solve the problem of octoprint crashing when that error is thrown. Can you try adding M555 P2 to your config.g to ensure that RRF is sending messages over USB formatted as marlin would.

    It's been a while since I've used octoprint, but I think there is an option to set behaviour on errors. Perhaps take a look through the settings.



  • @Phaedrux I dont know if you saw this info:

    An important data: I get this error when calling T1:

    Recv: Warning: Tool 1 was not driven because its heater temperatures were not high enough or it has a heater fault

    It is not a heater fault, I checked and heater is working perfect , also on T0

    What is the meaning of that error?


  • Moderator

    As I said. It's a cold extrusion warning. Probably from the G11 on a cold tool.


Log in to reply