[3.3rc3] G28 inside bed.g blocks the macro
-
Hi Duet team and fellow readers,
I've made a whole new setup with the config tool for my Delta printer.
Something weird happens, when I want to calibrate the printer. 'bed.g' stops after 'G28' without any notification.
I also ran it through M98 p"bed.g", but got no errors or warnings. It just stops...
So I commented the line in the macro and send a G28 from console before G32 et voila it works?!My bed.g
; bed.g ; called to perform automatic delta calibration via G32 M561 ; clear any bed transform ;G28 ; home all towers <<<=== had to comment out to make it work G1 z10 f6000 ; Probe the bed at 3 peripheral and 3 halfway points, and perform 6-factor auto compensation ; Before running this, you should have set up your Z-probe trigger height to suit your build, in the G31 command in config.g. G30 P0 X0 Y79.9 H0 Z-99999 G30 P1 X69.2 Y-39.95 H0 Z-99999 G30 P2 X-69.2 Y-39.95 H0 Z-99999 G30 P3 X0 Y39.9 H0 Z-99999 G30 P4 X34.55 Y-19.95 H0 Z-99999 G30 P5 X-34.55 Y-19.95 H0 Z-99999 G30 P6 X0 Y0 H0 Z-99999 S6
...and homedelta FWIW
; homedelta.g G91 ; relative positioning G1 H1 X545 Y545 Z545 F6000 ; move all towers to the high end stopping at the endstops (first pass) G1 H2 X-5 Y-5 Z-5 F1800 ; go down a few mm G1 H1 X10 Y10 Z10 F500 ; move all towers up once more (second pass) G1 Z-10 F6000 ; move down a few mm so that the nozzle can be centred G90 ; absolute positioning G1 X0 Y0 F6000 ; move X+Y to the centre
-
@o_lampe please try the firmware at https://www.dropbox.com/sh/nmpsl9a3jfsumm5/AAA6adSjEcd1AM_j5_tVberGa?dl=0. This firmware may provide an additional diagnostic.
FWIW, homing in bed.g works for me. My bed.g file is this:
; Auto calibration routine for large delta printer M561 ; clear any bed transform ; If the printer hasn't been homed, home it if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed G28 ; Probe the bed and do auto calibration G1 X0 Y140 Z10 F12000 ; go to just above the first probe point while true if iterations = 5 abort "too many auto calibration attempts" G30 P0 X0.00 Y140.00 Z-99999 if result != 0 continue G30 P1 X70.00 Y121.24 Z-99999 if result != 0 continue G30 P2 X121.24 Y70.00 Z-99999 if result != 0 continue G30 P3 X140.00 Y0.00 Z-99999 if result != 0 continue G30 P4 X121.24 Y-70.00 Z-99999 if result != 0 continue G30 P5 X70.00 Y-121.24 Z-99999 if result != 0 continue G30 P6 X0.00 Y-134.85 Z-99999 if result != 0 continue G30 P7 X-65.57 Y-113.57 Z-99999 if result != 0 continue G30 P8 X-112.29 Y-64.83 Z-99999 if result != 0 continue G30 P9 X-130.59 Y-0.00 Z-99999 if result != 0 continue G30 P10 X-115.90 Y66.91 Z-99999 if result != 0 continue G30 P11 X-69.45 Y120.29 Z-99999 if result != 0 continue G30 P12 X0.00 Y70.00 Z-99999 if result != 0 continue G30 P13 X60.62 Y-35.00 Z-99999 if result != 0 continue G30 P14 X-52.28 Y-30.19 Z-99999 if result != 0 continue G30 P15 X0 Y0 Z-99999 S8 if result != 0 continue if move.calibration.final.deviation <= 0.033 break echo "Repeating calibration because deviation is too high (" ^ move.calibration.final.deviation ^ "mm)" ; end loop echo "Auto calibration successful, deviation", move.calibration.final.deviation ^ "mm" G1 X0 Y0 Z150 F10000 ; get the head out of the way
-
@dc42
thanks for the cool macro.
Do you think it would be useful to make it 'universal' by calculating the probe points, based on the "B" parameter in M665? -
The rc3+6 update made it!
-
@o_lampe said in [3.3rc3] G28 inside bed.g blocks the macro:
Do you think it would be useful to make it 'universal' by calculating the probe points, based on the "B" parameter in M665?
Probably, assuming that the entire bed within the B radius is reachable by the nozzle, and that you don't want to probe outside it.