M564 ignored by G29!
I have a CR10 with a bl touch mounted to the left of the hotend. For the probe to reach the screws on the right side of the build plate, the nozzle needs to be able to travel outside the axis maximums. I have the axis maximums set to the the size of the build plate so I don't risk doing something dumb with my slicer later on. But when probing for mesh leveling, I cannot reach that point without pushing the nozzle a little farther than the glass.
I have enough gantry left to move it on, and sending an M564 S0 lets me travel outside that zone with G1 commands, but it doesn't apply to the subsequent G29 command. The probeable area is confined to what the nozzle is permitted to travel.
Is this something I can fix?
@Mentaluproar sounds like you have not set up the probe offset from the nozzle correctly. Doing this should position the probe at the right point over the bed. See https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe#Section_Measuring_Probe_X_Y_Offset
Otherwise, please post your config.g, and firmware version by sending M115 to the Duet and posting the response. Also see guide for asking for help, so that we can more quickly and easily help you: https://forum.duet3d.com/topic/5909/guide-for-posting-requests-for-help
Be careful with this particular trap ...
The probe location pays no attention to any offsets - if you want to probe X10 Y10 then YOU must calculate where X and Y values are such that the the probe will be above X10 Y10.
I fell into this particular trap - I don't agree with the behaviour but that's a different topic. The probing disregards any limits in my experience (I'm using RRF 3) so you need to take care of that or the probing will happily crash into the XY physical boundaries
I have calculated that, and I've even tried giving it extra room on the X max but it just refuses to reach beyond the axis maximum. Here's the config.g:
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Wed Feb 26 2020 15:22:01 GMT-0500 (Eastern Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"foamboard forge" ; set printer name ; Network M552 S1 ; enable network 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 backwards M569 P5 S1 ; physical drive 5 goes forwards M569 P6 S1 ; physical drive 6 goes forwards M584 X0 Y1 Z2 E5:6 ; set drive mapping M350 X16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E824.00:824.00 ; set steps per mm M566 X900.00 Y900.00 Z12.00 E120.00:120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z1800.00 E1200.00:1200.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E250.00:250.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X300 Y300 Z350 S0 ; set axis maxima ; Endstops M574 X1 S0 P"xstop" ; configure active-low endstop for low end on X via pin xstop M574 Y1 S0 P"ystop" ; configure active-low endstop for low end on Y via pin ystop M574 Z1 S0 P"zstop" ; configure active-low endstop for low end on Z via pin zstop ; Z-Probe M558 P9 C"^duex.e2stop" H5 F120 T6000 M950 S0 C"duex.e3heat" ; create servo pin 0 for BLTouch G31 P25 X-40 Y-10 Z3.08 ; set Z probe trigger value, offset and trigger height M557 X29:270 Y27:267 S24:24 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"e0heat" T0 ; create bed heater output on e0heat and map it to sensor 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M308 S1 P"duex.e2temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin duex.e2temp M950 H1 C"duex.e2heat" T1 ; create nozzle heater output on duex.e2heat and map it to sensor 1 M143 H1 S280 ; set temperature limit for heater 1 to 280C M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans M950 F0 C"duex.fan5" Q500 ; create fan 0 on pin duex.fan5 and set its frequency M106 P0 C"part cooler" S0 H-1 ; set fan 0 name and value. Thermostatic control is turned off M950 F1 C"duex.fan4" Q100 ; create fan 1 on pin duex.fan4 and set its frequency M106 P1 C"hotend" S0 H1:1 T30 ; set fan 1 name and value. Thermostatic control is turned on M950 F2 C"duex.fan3" Q500 ; create fan 2 on pin duex.fan3 and set its frequency M106 P2 C"mcu" S0 H-1 ; set fan 2 name and value. Thermostatic control is turned off M950 F3 C"duex.fan6" Q500 ; create fan 3 on pin duex.fan6 and set its frequency M106 P3 C"lighting" S1 H-1 ; set fan 3 name and value. Thermostatic control is turned off ; Tools M563 P0 S"hotend" 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 M563 P1 S"hotend" D1 H1 F0 ; define tool 1 G10 P1 X0 Y0 Z0 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ; Custom settings M308 S2 P"duex.e3temp" Y"thermistor" A"chamber temp" T100000 B3988 C0 R2200 ; chamber temperature sensor M307 H0 A77.5 C296.9 D3.8 C24.1 B0 ; calibrate bed heater M307 H1 A348.9 C165.7 D3.7 C24.2 B0 ; calibrate hotend heater ; M558 P9 C"^duex.gp1" H5 F120 T2000 ; config UI does not allow gpio/endstop assignments to zprobe input but rrf3 does. Put it in manually. ^duex.e2stop or ^duex.gp1 ; TODO ; When a seperate lighting control method is found, break lighting out from fan controls
Is your probe to the left or right of the nozzle when viewed from the front ?
It's hard to say for sure but I think your M557 X29:270 Y27:267 S24:24 may be your problem.
Your code indicates a 300x300 you are only probing from X = 29 to 270 - but you show an offset of X-40 Y-10 - to put the probe over the nozzle X0 Y0 that would make the first probe co-ordinates X40 Y10 - or are you deliberately probing outside the print area ?
I'm probing within the screws on the build plate. I can revert to the previous method of go closer to the edges if you think hat would help though. I want to probe within the printable area but I need to move the nozzle outside of the printable area for the probe to reach the edge.
Would a picture help? I'm not trying to be mocking, I just don't think I'm explaining myself well.
This whole thing can be confusing for sure - if the offset was considered in the probing automatically it would be a lot less so. Alas it isn't and you need to account for it yourself.
Consider your print area based on the nozzle tip is X0:300 Y0:300 ... that is the print area for the nozzle. The probe however is located at X-40:260 Y-10:290 (based on your offsets) when the nozzle moves within its boundary.
To move the probe such that it covers the nozzles co-ordinates your M557 would need to be X40:340 Y10:310 - the nozzle would be outside the print area at X340 Y310 .
Beware the physical boundaries - if X340 Y310 would exceed your mechanical capabilities the nozzle / extruder will be mechanically restricted - then wierdness happens and potentially mechanical nastiness.
nope. It's still skipping the last rightmost probe points.
Just out of interest what is the maximum X and Y probe point listed in your height map ? - how does this equate to your M557 command ?
If the values are short of expectations by how much ?
Other than that I'm really not sure what the answer is, need to verify some basics.
Put a piece of masking tape on your bed where the nozzle is homed, make sure X and Y are both homed and showing zero (G92 X0 Y0) - put an X directly under the nozzle (may help to jog the Z axis such that the nozzle leaves a tiny impression).
Drive X and Y such that the probe tip is centred over the place marked, confirm the X and Y values, if your offset is what you think then you should see X40 Y10 (this is based on your offsets that place the probe to the left of the nozzle and slightly toward you as viewed from the front).
Do the same thing for the rear right hand corner (I'm assuming here that you have the origin X0 Y0 at the front left corner).
You should now have workable limits for probing, use these in M557, M29 should generate a grid within these co-ordinates based on the number of probe points that you set.
The best way to maximize the mesh grid is to take your M208 as the bed surface, then add/subtract your probe offsets. That will give you the area for M577 that the probe can reach. Adjust it slightly so that you can get a whole number of points within it. Tip, if you send an M577 with a unreasonably high number of probing points it will suggest the actual maximum to you.
Now if your print head can move the nozzle outside of the printable area so that you can reach the probe further you could temporarily increase your axis limits with a larger M208 command, probe the bed with G29, and then return the limits back to only the printable area with M208 again.