probe bed with tool1 on IDEX
-
I have an IDEX with two print heads each with an IR sensor. I would like to be able to probe the bed from either tool. I am able to successfully print with both tools and it runs the tool change macros as expected when doing so.
If I run G29 K0 it runs the through the process with tool0 as expected, if however I run G29 K1 which I expect would run through the same process using tool1 it instead runs through the process with tool0 movement but reading the sensor on tool1.
Not sure if I'm missing something in config or if I can even do this, I also know its not really necessary but sometime I have a tool0 offline and want to still be able to probe the bed.
I expect I'm missing something simple here.
; Configuration file for Duet 3 (firmware version 3) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Chiron" ; set printer name M552 S1 G4 S5 ; wait for expansion boards to start ; Drives M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S0 ; physical drive 0.1 goes backwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.4 S1 ; physical drive 0.4 goes forwards M569 P20.0 S1 ; physical drive 21 goes forwards M569 P21.0 S0 ; physical drive 20 goes backwards M584 X0.0 U0.1 Y0.2 Z0.3:0.4 E20.0:21.0 ; set drive mapping M906 X1000 U1000.00 Y1000 Z1000 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M201 X900.00 U900.00 Y300.00 Z15.00 E1000.00:1000.00 ; set accelerations (mm/s^2) M203 X15000.00 U15000.00 Y15000.00 Z1000.00 E3600.00:3600.00 ; set maximum speeds (mm/min) M566 X900.00 U900.00 Y300.00 Z60.00 E20.00:20.00 ; set maximum instantaneous speed changes (mm/min) M92 X200.00 U200.00 Y200.00 Z800.00 E400.00:400.00 ; set steps per mm M350 X16 U16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation M84 S30 ; Set idle timeout ; Axis Limits M208 X-75 U0 Y0 Z-5 S1 ; set axis minima M208 X415 U485.2 Y410 Z410 S0 ; set axis maxima ; Endstops M574 X1 S1 P"io0.in" ; configure active-high endstop for low end on X via pin io0.in M574 U2 S1 P"io1.in" ; configure active-high endstop for high end on U via pin io01.in M574 Y1 S1 P"io2.in" ; configure active-high endstop for low end on Y via pin io2.in M574 Z1 S1 P"io3.in+io4.in" ; configure active-high endstop for low end on Z via pin io3.in/io4.in ; Z-Probe M558 P8 H5 F200 T3000 C"20.io1.in" K0 ; Tool0 set dive height, probe speed and travel speed G31 P500 X12.5 Y0 Z1.5 M558 P8 H5 F200 T3000 C"21.io1.in" K1 ; Tool1 set dive height, probe speed and travel speed G31 P500 X-12.5 Y0 Z1.5 M557 X-10:410 Y25:410 S47 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 A"Bed" ; 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 S1 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S155 ; set temperature limit for heater 0 to 155C M308 S1 P"20.temp0" Y"pt1000" A"Print0" ; sensor 1 (toolboard) board 20 M950 H1 C"20.out0" T1 ; create nozzle heater output on out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S455 ; set temperature limit for heater 1 to 455C M308 S2 P"21.temp0" Y"pt1000" A"Print1" ; sensor 2 (toolboard) board 21 M950 H2 C"21.out0" T2 ; create nozzle heater output on out0 and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H2 S455 ; set temperature limit for heater 1 to 455C M308 S3 P"20.temp1" Y"thermistor" T100000 B4138 A"Extrude0" ; configure sensor 3 as thermistor on board 20 temp1 M308 S4 P"21.temp1" Y"thermistor" T100000 B4138 A"Extrude1" ; configure sensor 4 as thermistor on board 21 temp1 ; Fans M950 F0 C"20.out1" Q500 ; create fan 0 on pin out1 on board 20 and set its frequency M106 P0 S0 H-1 M950 F1 C"20.out2" Q500 ; create fan 1 on pin out2 on board 20 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"21.out1" Q500 ; create fan 2 on pin out1 on board 21 and set its frequency M106 P2 S0 H-1 M950 F3 C"21.out2" Q500 ; create fan 3 on pin out2 on board 21 and set its frequency M106 P3 S1 H2 T45 ; set fan 3 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 K0 ; define tool 0 G10 P0 X0 Y0 Z0 R0 S0 ; set tool 0 axis offsets M563 P1 D1 H2 X3 F2 K1 ; define tool 1 G10 P1 U0 Y-0.4 Z1.25 R0 S0 ; set tool 1 axis offsets M501
Thank for the help !
-
@kingofthegeeks said in probe bed with tool1 on IDEX:
M558 P8 H5 F200 T3000 C"21.io1.in" K1
It looks like you have an extra space in there between P8 and H5. See if that helps.
G31 P500 X12.5 Y0 Z1.5
And your G31 commands will need to target the probe it's meant for as well with K0/K1
Can you also post the results of M122 and M98 P"config.g"?
-
@phaedrux ```
M122
=== Diagnostics ===
RepRapFirmware for Duet 3 MB6HC version 3.3 (2021-06-15 21:45:47) running on Duet 3 MB6HC v1.01 or later (standalone mode)
Board ID: 08DJM-956L2-G43S8-6JTDG-3S86Q-KB3QF
Used output buffers: 1 of 40 (14 max)
=== RTOS ===
Static ram: 150904
Dynamic ram: 93088 of which 0 recycled
Never used RAM 110200, free system stack 200 words
Tasks: NETWORK(ready,23.4%,254) ETHERNET(notifyWait,0.0%,117) HEAT(delaying,0.0%,357) Move(notifyWait,0.0%,352) CanReceiv(notifyWait,0.0%,799) CanSender(notifyWait,0.0%,374) CanClock(delaying,0.0%,339) TMC(notifyWait,7.6%,93) MAIN(running,68.4%,1114) IDLE(ready,0.6%,29), total 100.0%
Owned mutexes: LwipCore(NETWORK)
=== Platform ===
Last reset 00:00:22 ago, cause: software
Last software reset at 2021-06-18 21:00, reason: User, GCodes spinning, available RAM 110200, slot 1
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a
Error status: 0x00
Step timer max interval 126
MCU temperature: min 52.8, current 53.4, max 53.5
Supply voltage: min 23.6, current 23.7, max 23.7, under voltage events: 0, over voltage events: 0, power good: yes
12V rail voltage: min 12.1, current 12.2, max 12.3, under voltage events: 0
Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0
Driver 0: position 0, standstill, reads 57709, writes 14 timeouts 0, SG min/max 0/0
Driver 1: position 0, standstill, reads 57709, writes 14 timeouts 0, SG min/max 0/0
Driver 2: position 0, standstill, reads 57709, writes 14 timeouts 0, SG min/max 0/0
Driver 3: position 0, standstill, reads 57710, writes 14 timeouts 0, SG min/max 0/0
Driver 4: position 0, standstill, reads 57710, writes 14 timeouts 0, SG min/max 0/0
Driver 5: position 0, standstill, reads 57713, writes 11 timeouts 0, SG min/max 0/0
Date/time: 2021-06-18 21:01:04
Slowest loop: 3.70ms; fastest: 0.05ms
=== Storage ===
Free file entries: 10
SD card 0 detected, interface speed: 25.0MBytes/sec
SD card longest read time 2.3ms, write time 0.0ms, max retries 0
=== Move ===
DMs created 125, maxWait 0ms, bed compensation in use: none, comp offset 0.000
=== MainDDARing ===
Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
=== AuxDDARing ===
Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
=== Heat ===
Bed heaters = 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
=== GCodes ===
Segments left: 0
Movement lock held by null
HTTP is idle in state(s) 0
Telnet is idle in state(s) 0
File is idle in state(s) 0
USB is idle in state(s) 0
Aux is idle in state(s) 0
Trigger is idle in state(s) 0
Queue is idle in state(s) 0
LCD is idle in state(s) 0
SBC is idle in state(s) 0
Daemon is idle in state(s) 0
Aux2 is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty.
=== CAN ===
Messages queued 215, received 442, lost 0, longest wait 2ms for reply type 6049, peak Tx sync delay 6, free buffers 49 (min 48), ts 112/111/0
Tx timeouts 0,0,0,0,0,0
=== Network ===
Slowest loop: 5.87ms; fastest: 0.02ms
Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
HTTP sessions: 1 of 8- Ethernet -
State: active
Error counts: 0 0 1 0 0
Socket states: 5 2 2 2 2 0 0 0
- Ethernet -
-
with M98 P"config.g" I get no response in console but system appears to reboot as toolboard fans momentarily come on.
I also made the changes you suggested to no effect.
Thanks
-
Can you send M558 K0 M558 K1 G31 K0 G31 K1 and compare the results to what you have in config,g?
-
@phaedrux
Everything seems to be as it shouldM558 K0
Z Probe 0: type 8, input pin 20.io1.in, min interval 25ms, dive height 5.0mm, probe speeds 200,200mm/min, travel speed 3000mm/min, recovery time 0.00 sec, heaters normal, max taps 1, max diff 0.036/20/2021, 4:24:57 AM M558 K0
Z Probe 0: type 8, input pin 20.io1.in, min interval 25ms, dive height 5.0mm, probe speeds 200,200mm/min, travel speed 3000mm/min, recovery time 0.00 sec, heaters normal, max taps 1, max diff 0.036/20/2021, 4:26:45 AM G31 K0
Z probe 0: current reading 0, threshold 500, trigger height 1.500, offsets X12.5 Y0.0 U0.0G31 K1
Z probe 1: current reading 0, threshold 500, trigger height 1.500, offsets X-12.5 Y0.0 U0.0; Configuration file for Duet 3 (firmware version 3) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Chiron" ; set printer name M552 S1 G4 S5 ; wait for expansion boards to start ; Drives M569 P0.0 S0 ; physical drive 0.0 goes backwards M569 P0.1 S0 ; physical drive 0.1 goes backwards M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.4 S1 ; physical drive 0.4 goes forwards M569 P20.0 S1 ; physical drive 21 goes forwards M569 P21.0 S0 ; physical drive 20 goes backwards M584 X0.0 U0.1 Y0.2 Z0.3:0.4 E20.0:21.0 ; set drive mapping M906 X1000 U1000.00 Y1000 Z1000 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M201 X900.00 U900.00 Y300.00 Z15.00 E1000.00:1000.00 ; set accelerations (mm/s^2) M203 X15000.00 U15000.00 Y15000.00 Z1000.00 E3600.00:3600.00 ; set maximum speeds (mm/min) M566 X900.00 U900.00 Y300.00 Z60.00 E20.00:20.00 ; set maximum instantaneous speed changes (mm/min) M92 X200.00 U200.00 Y200.00 Z800.00 E400.00:400.00 ; set steps per mm M350 X16 U16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation M84 S30 ; Set idle timeout ; Axis Limits M208 X-75 U0 Y0 Z-5 S1 ; set axis minima M208 X415 U485.2 Y410 Z410 S0 ; set axis maxima ; Endstops M574 X1 S1 P"io0.in" ; configure active-high endstop for low end on X via pin io0.in M574 U2 S1 P"io1.in" ; configure active-high endstop for high end on U via pin io01.in M574 Y1 S1 P"io2.in" ; configure active-high endstop for low end on Y via pin io2.in M574 Z1 S1 P"io3.in+io4.in" ; configure active-high endstop for low end on Z via pin io3.in/io4.in ; Z-Probe M558 P8 H5 F200 T3000 C"20.io1.in" K0 ; Tool0 set dive height, probe speed and travel speed G31 P500 X12.5 Y0 Z1.5 K0 M558 P8 H5 F200 T3000 C"21.io1.in" K1 ; Tool1 set dive height, probe speed and travel speed G31 P500 X-12.5 Y0 Z1.5 K1 M557 X-10:410 Y25:410 S47 ; define mesh grid ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4138 A"Bed" ; 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 S1 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S155 ; set temperature limit for heater 0 to 155C M308 S1 P"20.temp0" Y"pt1000" A"Print0" ; sensor 1 (toolboard) board 20 M950 H1 C"20.out0" T1 ; create nozzle heater output on out0 and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S455 ; set temperature limit for heater 1 to 455C M308 S2 P"21.temp0" Y"pt1000" A"Print1" ; sensor 2 (toolboard) board 21 M950 H2 C"21.out0" T2 ; create nozzle heater output on out0 and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H2 S455 ; set temperature limit for heater 1 to 455C M308 S3 P"20.temp1" Y"thermistor" T100000 B4138 A"Extrude0" ; configure sensor 3 as thermistor on board 20 temp1 M308 S4 P"21.temp1" Y"thermistor" T100000 B4138 A"Extrude1" ; configure sensor 4 as thermistor on board 21 temp1 ; Fans M950 F0 C"20.out1" Q500 ; create fan 0 on pin out1 on board 20 and set its frequency M106 P0 S0 H-1 M950 F1 C"20.out2" Q500 ; create fan 1 on pin out2 on board 20 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"21.out1" Q500 ; create fan 2 on pin out1 on board 21 and set its frequency M106 P2 S0 H-1 M950 F3 C"21.out2" Q500 ; create fan 3 on pin out2 on board 21 and set its frequency M106 P3 S1 H2 T45 ; set fan 3 value. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 K0 ; define tool 0 G10 P0 X0 Y0 Z0 R0 S0 ; set tool 0 axis offsets M563 P1 D1 H2 X3 F2 K1 ; define tool 1 G10 P1 U0 Y-0.4 Z1.25 R0 S0 ; set tool 1 axis offsets M501
-
@kingofthegeeks this should be possible using firmware 3.3 but not with earlier versions. Prior to probing using tool 1 you will need to execute a new M557 command using U in place of X, e.g.:
M557 U0:420 Y25:410 S47 ; define mesh grid
Adjust the U coordinate range so that it is reachable by the tool on the U axis. This command tells RRF that you require a height map for the UY plane not the XY plane.