G29 with BLTouch
-
Hello all,
I am trying to get G29 working with a modix Big-60 that has a BLTouch. The homing files are set to perform 4 point ABL with 4 independent lead screws. After homing, if I run G29, the BLTouch does not deploy, and the bed tries to slam into the nozzle.
If I run a macro file with:
G1 Z15 M400 M280 P0 S10 M400 M280 P0 S60 M400 G29
The bed will move to Z15, then back to where it started, it will move to the first probe point, and then I will get a message saying that probe was triggered during start of probing move. Then the machine will run "homeall.g" again, for some reason. If I manually enter M280 P0 S10 in the console, it will deploy the BLTouch.
I'm not quite sure what I am doing wrong here. I also have M280 P0 S10 in my deployprobe.g, but apparently that is not getting run either.
Thanks
-
Does the pin deploy and retract when you send M401 and M402? Those commands call the deployprobe.g and retractprobe.g macros and are how the pin is deployed when G30/G29 is used.
Please post some additional information like the results of M122 and M98 P"config.g". Also post your full config.g and any macros that get called from within it. Your homing files, bed.g, mesh.g if it exists.
You can also see here for testing a Z probe safely: https://docs.duet3d.com/en/User_manual/Connecting_hardware/Z_probe_testing
-
@Phaedrux Yes, M401 and M402 work as expected.
M122 results
M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.4.5 (2022-11-30 19:36:12) running on Duet WiFi 1.02 or later + DueX5v0.11 Board ID: 0JD2M-9F8TA-GJ4TD-6JTDJ-3S86N-TNPQ6 Used output buffers: 1 of 26 (12 max) === RTOS === Static ram: 23836 Dynamic ram: 75740 of which 12 recycled Never used RAM 9636, free system stack 184 words Tasks: NETWORK(notifyWait,13.8%,242) HEAT(notifyWait,0.0%,333) Move(notifyWait,0.0%,363) DUEX(notifyWait,0.0%,24) MAIN(running,85.3%,440) IDLE(ready,0.9%,30), total 100.0% Owned mutexes: === Platform === Last reset 00:01:22 ago, cause: power up Last software reset at 2023-05-31 10:37, reason: User, GCodes spinning, available RAM 9076, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Step timer max interval 0 MCU temperature: min 19.2, current 24.6, max 24.8 Supply voltage: min 24.1, current 24.3, max 24.6, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 99/7, heap memory allocated/used/recyclable 2048/110/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min n/a Driver 1: standstill, SG min n/a Driver 2: standstill, SG min n/a Driver 3: standstill, SG min n/a Driver 4: standstill, SG min n/a Driver 5: standstill, SG min n/a Driver 6: standstill, SG min n/a Driver 7: standstill, SG min n/a Driver 8: standstill, SG min n/a Driver 9: standstill, SG min n/a Driver 10: Driver 11: Date/time: 2023-05-31 14:33:31 Cache data hit count 2999513061 Slowest loop: 9.50ms; fastest: 0.18ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 9.4ms, write time 0.0ms, max retries 0 === Move === DMs created 83, segments created 0, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 1 is on, I-accum = 0.0 === 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 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty === DueX === Read count 1, 0.73 reads/min === Network === Slowest loop: 12.67ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) HTTP sessions: 1 of 8 = WiFi = Network state is active WiFi module is providing access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.27 WiFi MAC address ca:c9:a3:40:6f:f9 WiFi Vcc 3.37, reset reason Power up WiFi flash size 2097152, free heap 23440 WiFi IP address 192.168.0.2 Connected clients 1 Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
M98 P"config.g" Error: in file macro line 4 column 24: meta command: variable 'config_version' already exists
config.g
; Modix Big-60, Duex Expansion, Dual Printhead ; Configuration file for Duet WiFi (firmware version 3.4.5) ; Generated by Modix - Version 3.4.5 Config B global config_version = "Version 3.4.5 Config B" global generation = 3 ; Generation 3 printer global printhead = 1 ; Griffin printhead global expansion = 1 ; Duex expansion board is installed global printheads = 2 ; Dual printhead, change this value to 1 to switch it to a single-printhead setup ; General preferences_________________________________________________________ G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M555 P2 ; Set output to look like Marlin M575 P1 B57600 S1 ; Set auxiliary serial port baud rate and require checksum (for PanelDue) ; Network_____________________________________________________________________ M550 P"Big 60" ; set printer name ;M551 P"MODIX3D" ; Set password (optional) M98 P"config_networking.g" ; load networking settings G4 P300 ; wait 300ms ;M552 P0.0.0.0 ; Uncomment this command for using Duet Ethernet board ; Drives_________________________________________________________________________ ;Main board______________________________________________________________________ M569 P0 S0 ; Physical drive 0. X1 M569 P1 S1 ; Physical drive 1. X2 M569 P2 R-1 ; Physical drive 2. Canceled ;M569 P3 S0 ; Physical drive 3. Primary Extruder M569 P4 S0 ; Physical drive 4. Secondary Extruder ;Duex5 board_____________________________________________________________________ M569 P5 S0 ; Physical drive 5 . Y M569 P6 S0 ; Physical drive 6 . Z1 (0,600) M569 P7 S0 ; Physical drive 7 . Z2 (0,0) M569 P8 S0 ; Physical drive 8 . Z3 (600,0) M569 P9 S0 ; Physical drive 9 . Z4 (600,600) ;Motor to stepper motor driver mapping_________________________________________________________ M584 X0:1 Y5 Z6:7:8:9 E4 P3 ; Driver mapping M671 X-185:-185:668:668 Y668:-46:-46:668 S30 ; Anticlockwise ;Motor settings and acceleration limits___________________________________________________________________ M350 X16 Y16 Z16 E16:16 I1 ; Configure microstepping with interpolation M92 X100 Y100 Z2000 E418.5 ; Set steps per mm M566 X360 Y360 Z30 E3600:3600 P1 ; Set maximum instantaneous speed changes (mm/min) M203 X9000 Y9000 Z200 E5000:5000 ; Set maximum speeds (mm/min) M201 X1000 Y1000 Z200 E5000:5000 ; Set accelerations (mm/s^2) M204 P500 ; Set print and travel accelerations (mm/s^2) M906 X1800 Y1800 E1000 Z1800 I50 ; Set motor currents (mA) and motor idle factor in per cent M84 S100 ; Set idle timeout - 100 seconds ; Axis Limits M208 X0 Y0 Z-2 S1 ; set axis minima M208 X600 Y600 Z660 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop + e0stop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop M574 Y2 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop ; Z-Probe ;M558 P9 C"zprobe.in" H3 F100 T9000 R0.5 ; BLTouch probing settings ;M950 S0 C"duex.pwm5" ; sets the BLTouch probe M950 S0 C"duex.pwm4" ; create servo pin 0 for BLTouch M558 P9 C"zprobe.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds M376 H100 ; Height (mm) over which to taper off the bed compensation G31 P500 X-25.5 Y26.9 ; BLTouch X and Y offset M557 X{move.axes[0].min + sensors.probes[0].offsets[0] + 1, move.axes[0].max + sensors.probes[0].offsets[0] - 1} Y{move.axes[1].min + sensors.probes[0].offsets[1] + 1, move.axes[1].max + sensors.probes[0].offsets[1] - 1} P10:10 ; The M557 is used to define the mesh grid area. It uses the P parameter to set the amount of probing points. P10:10 would be a 10x10 grid. Supports up to a 21x21 grid. M98 P"config_probe.g" ; Load the Z-offset from the config_probe.g file ; The Z_offset value is now set in config_probe.g, not in config.g ; Adjust the values there, do not adjust anything here. ; Heaters___________________________________________________________ M140 H-1 ; disable heated bed (overrides default heater mapping) ;E0_________________________________________________________________ ;M308 S0 P"e0temp" Y"thermistor" T100000 B4725 ; configure sensor 0 as thermistor on pin e0temp ;M308 S0 P"spi.cs1" Y"rtd-max31865" ; Configure sensor 0 as PT100 via the daughterboard M308 S0 P"e0temp" Y"pt1000" ; Configure sensor 0 as PT1000 on pin e0temp M950 H1 C"e0heat" T0 ; create nozzle heater output on e0heat and map it to sensor 0 ;M98 P"PID_tune_E1.g" R1 ; PID calibration ; M307 is not used in this config. The M307 files are stored and executed from the PID_tune_E0.g file. You can verify the values there. M143 H1 S285 ; set temperature limit for heater 0 to 285C ;if {global.printheads} = 2 ;E1_________________________________________________________________ ;M308 S1 P"e1temp" Y"thermistor" T100000 B4725 ; configure sensor 1 as thermistor on pin e1temp ;M308 S1 P"spi.cs2" Y"rtd-max31865" ; Configure sensor 1 as PT100 via the daughterboard ;M308 S1 P"e1temp" Y"pt1000" ; Configure sensor 1 as PT1000 on pin e1temp ;M950 H2 C"e0heat" T1 ; create nozzle heater output on e1heat and map it to sensor 1 ;M98 P"PID_tune_E1.g" R1 ; PID calibration ; M307 is not used in this config. The M307 files are stored and executed from the PID_tune_E1.g file. You can verify the values there. ; M143 H1 S285 ; set temperature limit for heater 1 to 285C ; Fans______________________________________________________________ M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 C"Primary blower fan" ; set fan 0 value. Thermostatic control is turned on M950 F2 C"duex.fan7" Q500 ; create LED on pin fan2 and set its frequency M106 P2 S0 H-1 C"LED" ; Disable fan channel for LED M106 P2 S255 ; LED on by default M950 F3 C"duex.fan5" Q500 ; create fan 3 on pin fan1 and set its frequency M106 P3 S255 H0 T45 ; set fan 3 value. Thermostatic control is turned on ;if {global.printheads} = 2 ;M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency ; M106 P1 S0 H-1 C"Secondary blower fan" ; set fan 1 value. Thermostatic control is turned on ; M950 F4 C"duex.fan6" Q500 ; create fan 4 on pin fan1 and set its frequency ; M106 P4 S255 H1 T45 ; set fan 4 value. Thermostatic control is turned on ; Tools______________________________________________________________ ;T0_________________________________________________________________ M563 P0 S"Griffin Extruder" 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 ;if {global.printheads} = 2 ;T1_________________________________________________________________ ; M563 P1 S"E1 Secondary" D1 H1 F1 ; define tool 1 ; G10 P1 X0 Y74.3 Z0 ; set tool 1 axis offsets ; G10 P1 R0 S210 ; set initial tool 1 active and standby temperatures to 0C ; Automatic power saving____________________________________________ M911 S22.5 R29.0 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss. Power Failure Pause ; Filament sensor settings__________________________________________________ ;M591 D0 P1 C"duex.e2stop" S1 ; Regular filament sensor for E0 ;M591 D1 P1 C"duex.e3stop" S1 ; Regular filament sensor for E1 ; Add-on settings__________________________________________________ ; Primary hotend Clog detector__________________________________________________ ;M591 D0 P7 C"e1stop" S1 L3.2 E10 R10:300 ; Clog Detector E0 [Add-On] ;Secondary hotend Clog detector__________________________________________________ ;M591 D1 P7 C"zstop" S1 L3.2 E10 R10:300 ; Clog Detector E1 [Add-On] ; Crash detector__________________________________________________ ;M950 J2 C"duex.e4stop" ; create Input Pin 2 on pin E4 to for M581 Command. ;M581 P2 T0 S0 R0 ; Crash Detector [Add-On] ; Emergency stop button__________________________________________________ ;M950 J3 C"duex.e6stop" ; create Input Pin 2 on pin E4 to for M581 Command. ;M581 P3 T0 S1 R0 ; Emergency stop [Add-On] ;M581 P3 T1 S1 R1 ; Emergency stop, pause the print [Add-On] ;M581 P3 T1 S1 R0 ; Emergency stop, pause always [Add-On] ; Automatic Z Offset Calibration____________________________________ M574 Z1 S1 P"!duex.e5stop" ; configure switch-type for Automatic z-offset ;M501 T0
; homeall.g ; called to home all axes G91 ; relative positioning G1 H2 Z15 F200 ; lift Z relative to current position M98 P"0:/sys/homex.g" M400 M98 P"0:/sys/homey.g" M400 M98 P"0:/sys/homez.g" M400
; homex.g ; called to home the X axis G91 ; relative positioning M913 X50 ; X axis 50% power ;G1 H2 Z5 F200 ; lift Z relative to current position G1 H1 X{(move.axes[0].max+5)*-1} F3000 ; move quickly to X and Y axis endstops and stop there (first pass) G1 H2 X5 F600 ; go back a few mm G1 H1 X{(move.axes[0].max+5)*-1} F600 ; move slowly to X and Y axis endstops once more (second pass) M913 X100 ; X axis 100% power ;G1 H2 Z-5 F200 ; lower Z again G90 ; absolute positioning
; homey.g ; called to home the Y axis G91 ; relative positioning ;G1 H2 Z5 F200 ; lift Z relative to current position G1 H1 Y{(move.axes[1].max+5)} F3000 ; move quickly to Y axis endstop and stop there (first pass) G1 H2 Y-5 F600 ; go back a few mm G1 H1 Y{(move.axes[1].max+5)} F600 ; move slowly to Y axis endstop once more (second pass) ;G1 H2 Z-5 F3000 ; lower Z again G90 ; absolute positioning
; homez.g ; called to home the Z axis if !move.axes[0].homed || !move.axes[1].homed ; If the printer hasn't been homed, home it M98 P"0:/sys/homeall.g" M400 M98 P"config_probe.g" ; Load BLTouch probe settings M280 P0 S10 I1 ; push pin down M280 P0 S60 I1 ; use touch probe mode G29 S2 ; cancel mesh bed compensation G91 ; relative positioning G1 H2 Z5 F200 ; lift Z relative to current position G90 ; absolute positioning G1 X{move.axes[0].min+5} Y{move.axes[1].min+5} F6000 ; move to front left G1 F600 ; slow speed M401 M400 G4 P500 G30 ; home Z by probing the bed G32 ; tram bed ;G1 X{move.axes[0].min+5} Y{move.axes[1].min+5} F6000 ; move to front left ;G1 F600 ; slow speed ;M400 ;G4 P500 ;G30 ; home Z by probing the bed ;G29 S1 ; load heightmap
; Modix bed.g file for duex enabled printers ; Configuration file for Duet WiFi (firmware version 3.4.5) ; Generated by Modix - Version 3.4.5 Config B M558 H10 ; BLTouch probing settings M98 P"config_probe.g" ; ensure probe is using most recent configuration values M280 P0 S10 ; deploy probe M280 P0 S60 ; set touch switch mode if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; If the printer hasn't been homed, home it M98 P"0:/sys/homeall.g" M400 M280 P0 S60 I1 ; clear any probe errors G29 S2 ; cancel mesh bed compensation M290 R0 S0 ; cancel baby stepping G90 ; absolute moves G1 Z15 F99999 ; insure Z starting position is high enough to avoid probing errors G1 X{move.axes[0].min+2} Y{move.axes[1].min+2} F6000 ; move to front left G30 ; do single probe which sets Z to trigger height of Z probe ; --- level bed --- M280 P0 S10 ; deploy probe M280 P0 S60 ; set touch switch mode G30 P0 X{move.axes[0].min + sensors.probes[0].offsets[0] + 2} Y{move.axes[1].min + sensors.probes[0].offsets[1] + 2} Z-99999 ; Probe near front left leadscrew M280 P0 S10 ; deploy probe M280 P0 S60 ; set touch switch mode G30 P1 X{move.axes[0].max + sensors.probes[0].offsets[0] - 2} Y{move.axes[1].min + sensors.probes[0].offsets[1] + 2} Z-99999 ; Probe near front right leadscrew M280 P0 S10 ; deploy probe M280 P0 S60 ; set touch switch mode G30 P2 X{move.axes[0].max + sensors.probes[0].offsets[0] - 2} Y{move.axes[1].max + sensors.probes[0].offsets[1] - 2} Z-99999 ; Probe near rear right leadscrew M280 P0 S10 ; deploy probe M280 P0 S60 ; set touch switch mode G30 P3 X{move.axes[0].min + sensors.probes[0].offsets[0] + 2} Y{move.axes[1].max + sensors.probes[0].offsets[1] - 2} Z-99999 S4 ; Probe near rear left leadscrew G1 X{move.axes[0].min+2} Y{move.axes[1].min+2} Z10 F6000 ; move to front left M558 H3 M98 P"config_probe.g" ; insure probe is using most recent configuration values G30 ; do single probe which sets Z to trigger height of Z probe M280 P0 S90 ; deploy probe M18 XY ; release XY stepper motors
M98 P"config_probe.g" ; insure probe is using most recent configuration values if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; If the printer hasn't been homed, home it M280 P0 S60 I1 ; clear any probe errors G29 S2 ; cancel mesh bed compensation G91 ; relative positioning M913 X50 ; X axis 50% power G1 H2 Z5 F200 ; lift Z relative to current position G1 H1 X{(move.axes[0].max+5)*-1} Y{move.axes[1].max+5} F3000 ; move quickly to X and Y axis endstops and stop there (first pass) G1 H2 X5 Y-5 F600 ; go back a few mm G1 H1 X{(move.axes[0].max+5)*-1} Y{move.axes[1].max+5} F600 ; move slowly to X and Y axis endstops once more (second pass) M913 X100 ; X axis 100% power G90 ; absolute positioning G1 X{move.axes[0].min+5} Y{move.axes[1].min+5} F6000 ; move to front left G1 F600 ; reduce speed G30 ; home Z by probing the bed G29 S2 ; cancel mesh bed compensation M290 R0 S0 ; cancel baby stepping G90 ; absolute moves G1 Z5 F99999 ; insure Z starting position is high enough to avoid probing errors G1 X{move.axes[0].min+2} Y{move.axes[1].min+2} F6000 ; move to front left G30 ; do single probe which sets Z to trigger height of Z probe G29 S0 ; probe bed and create height map G28 ; home all
Please excuse the absolute mess that is in these files. These are from modix, and they didn't work from the get go, so we've been trying to fix the issues step by step, but I'm almost to the point of just making a new config with rrf configurator and removing this mess that is in here.
-
@Design said in G29 with BLTouch:
G31 P500 X-25.5 Y26.9
Your G31 is missing a Z offset. Is it called anywhere else? I can't see it in the other files.
If you send G31 by itself in the gcode console, what does it respond with?
@Design said in G29 with BLTouch:
Yes, M401 and M402 work as expected.
Ok that means the deploy and retract macros are correct. Don't use M280 to deploy or retract anywhere in your config files. Just use M401 and M402 if absolutely needed to do it manually. G30 and G29 should deploy and retract automatically as needed.
@Design said in G29 with BLTouch:
I'm almost to the point of just making a new config with rrf configurator
Not a bad idea for troubleshooting purposes.
@Design said in G29 with BLTouch:
These are from modix, and they didn't work from the get go
Have you contacted Modix support?
@Phaedrux said in G29 with BLTouch:
You can also see here for testing a Z probe safely: https://docs.duet3d.com/en/User_manual/Connecting_hardware/Z_probe_testing
Try doing the probe tests here. That should give us an idea of where to look next.
-
@Phaedrux said in G29 with BLTouch:
Your G31 is missing a Z offset. Is it called anywhere else? I can't see it in the other files.
If you send G31 by itself in the gcode console, what does it respond with?The Z offset for the probe is set in another file.
ABL with 4 point leveling works, and the probe deploys correctly.@Phaedrux said in G29 with BLTouch:
Have you contacted Modix support?
This has been pretty fruitless, and looking through the files they have on their github, it is a mess. There are deprecated commands in macros and config files. After the experience we have had assembling it, and with the quality of their wiring harnesses, I do not trust anything that they have made.
@Phaedrux said in G29 with BLTouch:
Try doing the probe tests here. That should give us an idea of where to look next.
I will try that when I get to the office tomorrow. I think I'm just going to wipe the machine and put a fresh config on it and fresh macros. I have two custom built duet machines at home that I've never had issues with, so I know it's something that they've done with their files.