Wrong return point after tool change
-
Hi, I am doing first prints with my new tool changer but i dont understand the behavior of the tool change procedure. The new tool allways returns to the point the other tool left the print and contaminates it with its color. It is doing it automatically, I have no such command in my tpost file. I want it to go directly to the point it is supposed to start printing... is there a wa to achieve that?
-
Can you post your config.g and tool change files? What slicer are you using?
-
Sure, would be awsome if you find something. I am a little under time pressure here
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Sep 25 2020 15:34:47 GMT+0200 (MitteleuropƤische Sommerzeit) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Hydra TC One" ; set printer name M669 K1 ; select CoreXY mode ; Network M551 P"LivMatS" ; set password M540 PBE:78:4F:38:52:3A M552 S1 P0.0.0.0 ; enable network and set IP address M553 P255.255.255.0 ; set netmask M554 P10.5.154.254 ; set gateway M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S0 ; physical drive 2 goes backwords M569 P3 S1 ; physical drive 3 goes forwards M569 P5 S1 ; physical drive 3 goes forwards M569 P6 S1 ; physical drive 3 goes forwards M584 X0 Y1 Z2 C3 E5:6 ; set drive mapping M350 X16 Y16 Z16 C16 E16:16 I1 ; configure microstepping with interpolation M92 X100.00 Y100.00 Z400.00 C1312.36 E370.00:370.00 ; set steps per mm M566 X900.00 Y900.00 Z12.00 C900.00 E120:120 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z1000.00 C600.00 E1200:1200 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 C100.00 E250:250 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z1450 C1200 E1200:1200 I100 ; set motor currents (mA) and motor idle factor in per cent ;M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z-1 C0 S1 ; set axis minima M208 X305 Y260 Z350 C50 S0 ; set axis maxima ;M208 C50 S0 ; set axis maxima ; Endstops M574 X1 S3 ; configure sensorless endstop for low end on X M574 Y2 S3 ; configure sensorless endstop for high end on Y M574 Z1 S2 ; configure sensorless endstop for low end on Z M574 C1 S3 ; configure sensorless endstop for low end on U M915 X R1 F0 S4 M915 Y R1 F0 S4 ;M915 Z R1 F0 S3 M915 C R1 F0 S4 ; Z-Probe M558 P1 C"!zprobe.in" R1.0 H3.0 T4000 F200 A6 S0.02 ;M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed M557 X{move.axes[0].min + 10}:{move.axes[0].max - 10} Y{move.axes[1].min + 10}:{move.axes[1].max -10} P3 ; define mesh grid G31 P500 Z0.0 ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 A176.8 B1 C500.5 D1.7 S1.00 V24.1 M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"exp.thermistor3" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"duex.e2heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 A480.5 B0 C213.4 D5.7 S1.00 V24.1 M308 S2 P"exp.thermistor4" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp M950 H2 C"duex.e3heat" T2 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H2 A480.5 B0 C213.4 D5.7 S1.00 V24.1 ; 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"duex.fan3" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"duex.fan4" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P2 S1 H2 T45 ; set fan 1 value. Thermostatic control is turned on ; Tools M563 P0 D1 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 D0 H2 F0 ; define tool 0 ;G10 P1 X0 Y0 Z0 ; set tool 0 axis offsets G10 P1 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Custom settings are not defined ; Miscellaneous M950 J0 C"^!zstop" M501 ; load saved parameters from non-volatile memory T0 P0 T1 P0 T-1 P0 ; deselect tool G29 S1 if sensors.gpIn[0].value == 1 M291 P"Attached tool detected - please select in DWC" R"Warning" S2
; tfree1.g ; called when tool 1 is freed ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Sep 25 2020 15:34:48 GMT+0200 (MitteleuropƤische Sommerzeit) G1 C0 F600 G91 G1 Z5 F1000 G90 G53 G1 X47.7 Y0 F4000 M400 M208 S1 Y-70 G1 Y-70 F3000 M98 P"release_tool.g" M208 S1 Y0
; tpost1.g ; called after tool 1 has been selected ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Sep 25 2020 15:34:48 GMT+0200 (MitteleuropƤische Sommerzeit) ; Wait for set temperatures to be reached if sensors.gpIn[0].value == 1 && state.previousTool == -1 && state.status != "processing" abort "Tool selected without change procedure" G1 C0 F600 G91 G1 Z5 F1000 G90 G1 X47.7 Y0 F4000 M208 S1 Y-70 G1 Y-70 F3000 M98 P"pick_tool.g" G1 Y0 F4000 M208 S1 Y0 ;M208 S1 Z{-tools[0].offsets[2]} if sensors.gpIn[0].value != 1 M25 if state.status == "processing" && sensors.gpIn[0].value == 1 M98 P"wipe_tool.g" G1 R2 X0 Y0 Z20 F4000
-
@Phaedrux it is supposed to go back 20mm above the print and then it should go directly to the new starting point
-
@TC said in Wrong return point after tool change:
M563 P1 D0 H2 F0 ; define tool 0 ;G10 P1 X0 Y0 Z0 ; set tool 0 axis offsets
Why do you have the tool offset for T1 commented out?
@TC said in Wrong return point after tool change:
G29 S1
You should not load the heightmap in config.g because your z0 datum has not been established at power on. This can lead to unintended offsets.
Can you also share the macros called in your tool change files?
Also please the results of M122 to show me hardware and firmware combo.
Can you also describe what your conditional gcode is doing?
-
@TC said in Wrong return point after tool change:
I want it to go directly to the point it is supposed to start printing... is there a wa to achieve that?
Not currently, because when the slicer issues the T command, the firmware doesn't know where that point will be, or whether the slicer will issue a travel move at all before printing again.
It's usual to retract some filament when a tool has finished being used (in the tfree file), and re-prime it just before printing again (in the tpost file). If there has been significant oozing, then you may need to wipe the tool after re-priming.
-
@dc42 Ah thanks David. It would be great if the firmware could just know the next G1 command allready in the tpost.g file. That would solve the problem. I am doing it as you described. I even have a cleaning station but I am printing Pla combined with extremly flexible TPU so the ozzing is a serious problem.
-
@dc42 But is there a way to stop the printer from going back to restore point automatically?
-
@TC said in Wrong return point after tool change:
@dc42 Ah thanks David. It would be great if the firmware could just know the next G1 command allready in the tpost.g file. That would solve the problem. I am doing it as you described. I even have a cleaning station but I am printing Pla combined with extremly flexible TPU so the ozzing is a serious problem.
To minimize oozing I suggest the following in the tpost#.g file:
- prime nozzle
- wipe nozzle
- retract
- move explicitly to just above the resume point using G1 R2 X0 Y0 Z2
- prime (i.e. undo the retract)
This won't do exactly what you are looking for, but at least it will delay the reprime until after moving to the resume point.
Are you using firmware retraction? If so then I could add a feature whereby if a G10 command occurs during a tpost file and it is not undone with G11, then G11 is inserted immediately before the first extruding move.
-
@dc42 Ah that is a nice idea. What would be the best way to store this information about a former retraction in RRF 3.1.1?
And are there more than 3 restore points? if so I could save the last position for each tool so it could go back to where this exact tool left the print last time.