zprobe cannot reach
Good evening all... Still working on my printer, trying to get it tuned up so I can get some successful bed level prints going (5 squares).
But I've run into a few problems and not sure how to fix/compensate.
Details about printer:
- Creality Ender 5 Plus - 350x by 350y by 400z
- TH3D Flexible plate with magnetic base
- Microswiss Hotend
- TH3D EZABL Pro
- Board: Duet 2 WiFi (2WiFi)
- Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.2.2
- Duet Web Control 3.3.0
Problem at hand:
I followed this test and calibrate article for my EZABL and set it's offsets with the G31 command and that was successful.
G31 P500 X-47 Y-10 Z3.919
And I've defined my mesh grid and limits as:
; Axis Limits M208 X15 Y15 Z-10 S1 ; set axis minima M208 X315 Y335 Z400 S0 ; set axis maxima G31 P500 X-47 Y-10 Z3.919 ; set Z probe trigger value, offset and trigger height
And my zprobe set as
; Z-Probe M558 P5 C"!zprobe.in" H3 F900 T12000 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X-47 Y-10 Z3.919 ; set Z probe trigger value, offset and trigger height M557 X15:315 Y15:335 S50 ; define mesh grid
But what happens now is when I run the G29 command, the console tells me the probe cannot reach points:
G29 Warning: Skipping grid point (315.0, 15.0) because Z probe cannot reach it Warning: Skipping grid point (315.0, 65.0) because Z probe cannot reach it
So I'm not sure why when I've defined my offsets, bed grid, and probe grid, it tells me that it can't find points.
I checked my bed.g file and didn't see any grid settings in here, this was all I found:
M561 ; clear any bed transform G29 ; probe the bed and enable compensation
Is there something I'm missing?
Thanks in advance for any help and sorry so long... just wanted to make sure all the details were here
And just in case.. here's config.g:
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:12 GMT+1000 (Australian Eastern Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Oneill" ; 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 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E138.00 ; set steps per mm M566 X900.00 Y900.00 Z300.00 E2000.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z600.00 E6000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z200.00 E3000.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X15 Y15 Z-10 S1 ; set axis minima M208 X315 Y335 Z400 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop" ; configure active-high endstop for low end on X via pin xstop M574 Y1 S1 P"ystop" ; configure active-high endstop for low end on Y via pin ystop M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe ;M558 P1 C"zprobe.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds M558 P5 C"!zprobe.in" H3 F900 T12000 G31 P500 X-47 Y-10 Z3.919 ; set Z probe trigger value, offset and trigger height M557 X15:315 Y15:335 S50 ; define mesh grid ; 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 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S280 ; set temperature limit for heater 1 to 280C ; 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"fan1" 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 ; Tools M563 P0 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 ; Custom settings are not defined ; Filament Runout Sensor M591 D0 P1 C"e0stop" S1 ; TFT Display Config M575 P1 S1 B57600 ; Miscellaneous M501 ; load saved parameters from non-volatile memory M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.3.0 on Sun Aug 08 2021 21:27:12 GMT+1000 (Australian Eastern Standard Time) G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-355 Y-355 F6000 ; move quickly to X and Y axis endstops and stop there (first pass) G1 H2 X5 Y5 F6000 ; go back a few mm G1 H1 X-355 Y-355 F1800 ; move slowly to X and Y axis endstops once more (second pass) G90 ; absolute positioning G1 X175 Y175 F6000 ; go to first bed probe point and home Z M558 F900 ; Home EZABL Fast 15mm/s G30 ; home Z by probing the bed M558 F450 ; Home EZABL Slow 7.5mm/s G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z5 F100 ; lift Z relative to current position ;G90 ; absolute positioning
engikeneer last edited by engikeneer
@infidelprops it's saying that it can't reach the points. X=315 is your x axis limits, but your probe offset is -47mm so your nozzle would have to move to x=
359362mm to probe that point (which is past the axis limit)
edit: got my maths wrong...
@engikeneer thanks! And I think that's where I'm getting confused.
I have a printable bed size of 350x350
My EZABL sticks out to the left, so from the centre of the probe to the nozzle is 47mm
According to the link, my x offset is -47mm and y offset is -10mm and I set that...
But it seems like when I set the G31 with my offsets, I always get missing prob points
But when I set G31 to X0 and Y0, I don't miss any probe points, but then I get a stupid crazy height map, as seen below and it's doing my head in
@infidelprops sounds like you've set your probe offsets correctly with -47 and -10mm for x & y.
Now, for the sensor to be able probe point 315,15 on the bed that means that the nozzle will be at 362,25. However, you have set you axis limits (M208) to be xmax=315), so the nozzle can't get there. Can your print head physically move far enough for the probe to be over the point 315,15 (i.e can it move so the nozzle is at 362,25?
When you set the probe offsets to 0,0 like for that heightmap, you are telling the firmware that the probe is at the nozzle. Most likely for some of the probe points, the probe wasn't actually over the printable part of the bed, hence the odd map!
@engikeneer thanks again mate for the response.
I've been tweaking the M208 & M557 commands and I can't seem t get consistent thresholds.
I've got my M208 as:
; Axis Limits M208 X15 Y15 Z-10 S1 ; set axis minima M208 X362 Y370 Z400 S0 ; set axis maxima
And my Z-Probe as:
; Z-Probe M558 P5 C"!zprobe.in" H3 F900 T12000 G31 P500 X-47 Y-10 Z3.919 ; set Z probe trigger value, offset and trigger height M557 X35:328 Y25:370 S20 ; define mesh grid
But when I move my x-axis, 328 is as far as it will go before the probe starts to go off the build plate.
And I keep struggling to get proper mesh size and min/max size to get a proper heightmap reading.
I'm sure it's something simple, on Marlin I could get it all setup very easily, but I feel pretty dumb for not being able to figure this out on RepRap.
I think what I'm trying to figure out, is whta's the calculation for bed/mesh size when there's a z-probe offset
As my bed size is 350 x 350 - do I keep this always as 350 x 350?
And do I only change the M557 mesh size?
@infidelprops okay, lets just go over this from the beginning.
Look at you printer with 0,0 in the front left corner, xmax to the right and ymax to the back. Where is the probe relative to the nozzle? Your config has it 47mm to the left and 10mm to the front of the nozzle. If that photo you posted is with the carriage at x=328mm, something here is wrong and we need to fix it.
Where are you endstops located physically? Your config has them at the low end (i.e. near 0,0, which should be the front, left of your printer)
@engikeneer That's interesting indeed if 328 is the wrong location for my x-position in the previous photo.
Here's a phot of my printer and the endstop locations, relative to me facing the printer.
Here's my axis limits
; Axis Limits M208 X15 Y15 Z-10 S1 ; set axis minima M208 X350 Y350 Z400 S0 ; set axis maxima
So X15 and Y15 is here:
And this is X328 and Y350:
engikeneer last edited by engikeneer
@infidelprops all right, that makes more sense now. So, if you stand at the 'front left' of the printer (i.e. 0,0, i.e. sit on the arm of your sofa!), the probe has a +ve x and a +ve y offset, so you need to update your G31 offsets to match.
G31 P500 X47 Y10 Z3.919
Now for your mesh grid. In x, the lowest position your probe can reach is x=47+15 = 62mm, and it can get right to the bed maximum (362mm?). In y, your probe can reach y=15+10=25mm up to the bed max (370mm?). Personally, I'd measure 1-2mm inside these limits just to be safe. I would also suggest you use the P parameter instead of the S parameter. This just splits it into 'P' points, rather than a bunch of points as spacing 'S'. For a detailed mesh you could go up to P20 (though it will take a while to probe!)
So based on all that and with your corrected G31 offsets, and proper M208 limits I'd suggest your mesh grid could be:
; Axis Limits M208 X15 Y15 Z-10 S1 ; set axis minima M208 X362 Y370 Z400 S0 ; set axis maxima ;Mesh Grid M557 X63:361 Y26:369 P20 ; define mesh grid
@engikeneer Thanks man, not sure why I have my axis's flipped, but that helps and make a lot more sense. and I just kicked off a print on my other printer and noticed that it does report 0,0 on the front-left, not like I have it configured here...
So I ran a mesh grid and I didn't lose any probe points, but my mesh and height map is allllll over the place. Really weird as before I put on this ABL, I had a BLT on the same bed and I dubbed this one my best printer because it always put down better layers. But looking at this heightmap, I just don't know what's going on here.
I've levelled the bed, use the paper on the springs and put a leveller on it to make sure, but is there something else I should be doing to help improve this height map? (Should I start a new thread with this question or just keep it here?)
Thanks again, big help!
DIY-O-Sphere last edited by DIY-O-Sphere
Is that a magnetic printing plate?
It is....Check the mounting. Inductive probs are sensible to magnetic irregularities
@diy-o-sphere Thanks mate, I have read it can cause problems... But how do I check the mounting? Is it the magnetic plate or the ABL mount?
I did some work on my springs and manual z-axis movement and getting better results... Going to keep trying working on these spring knobs and z-axis manual movements, re-measure z, probe and repeat
Ok... so this is a bit confusing when I set my axis min/max
I want my X/Y Max to be here:
Now, when I have M208 X0 Y0 Z-10 S1, the position of the above photo is X313 and Y355. When I jog my X and Y axis's, it stops here, which is perfect.
But then I went to set my X/Y minimum, and this is where it gets weird and I'm sure I'm just not understanding how the coordinates are set. This is the position where I want my prints to be at minimum, which is X15 and Y15.
So I set M208 X15 Y15 Z-10 S1 and restart the printer.... BUT, now when I homeall, the printer reports X15 and Y15 as if it's 0,0 and it hits my end stops.
Is there a way to keep my board settings as X0,Y0 but my min printing area as X15,Y15?
And is there a way that I can flip the coordinates so that X0,Y0 is my front left as I'm not sure how I flipped that.
@infidelprops with low-end enstops (like you currently have configured), they simply set the x/y position to the axis minima from M208 when they are triggered. If they trigger when the head is off the bed, you can simply set the minima to be -ve (then 0,0 ends up at the corner of the bed). No matter what you do, you can always set up your slicer so that it 'thinks' the printer can't go outside a certain area, even though it can.
If you want to swap the coordinate system round, then the thinghs you would need to change are:
- endstops need to be set to high end (M574 X2 / Y2)
- update the Z-probe offsets (as the directions will be reversed)
- update all your homing files (homex, homey & homeall) so that the xy movement commands go in the opposite direction
- finally, update your M208 numbers so that you get 0,0 to be the front left corner of the bed (by changing the maxima values) and the min travel position (by changing the minima values). This may take a little trial & error
For an example, part of your homeall would change from:
G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X-355 Y-355 F6000 ; move quickly to X and Y axis endstops and stop there (first pass) G1 H2 X5 Y5 F6000 ; go back a few mm G1 H1 X-355 Y-355 F1800 ; move slowly to X and Y axis endstops once more (second pass) G90 ; absolute positioning
G91 ; relative positioning G1 H2 Z5 F6000 ; lift Z relative to current position G1 H1 X500 Y500 F6000 ; move quickly to X and Y axis endstops and stop there (first pass) ; note: I changed the value to 500 to make sure it will always get to the endstop, but you can drop it a bit to a more sensible value when you're set up G1 H2 X-5 Y-5 F6000 ; go back a few mm G1 H1 X355 Y355 F1800 ; move slowly to X and Y axis endstops once more (second pass) G90 ; absolute positioning
Hope that makes sense...
I've re-ran the mesh and while it's not a ski slope anymore, I still have some pretty big dips... Any thoughts on how best to get this more flat? I have a bed with 4 spring screws to tighten/loosen and I ran that
On the positive side... I've finally been able to print a bed levelling test and adjust the babysteps... Squares are coming out not bad, but not amazing. Will continue to test it all
@infidelprops one thing to bear in mind that is the heightmap of the bed measured from the nozzle at certain locations - i.e. the bumps & dips could come either from the bed not being flat, the x-gantry sagging, the two y-rails not being level, or any other thing with your frame/motion system.
Looking at it, I'd discount the massive dip in the front right. Quite likely thats come from the sensor going off the print surface a bit and giving some odd readings. I'd probably start your mesh from a bit further in. Same might go for the very left edge where it's quite high
In the y-direction your bed is raised in the middle - this kinda makes sense given that it's a flat plate supported in the middle at either side.
In the x-direction, the bed sags in the middle for the same reason. FYI, My heightmap is raised in the middle because the gantry is floppy and sags down.
The ridges running in the y-direction are interesting. Often ridges/ripples are due to backlash in the motion system (they'd go left to right as the print head changes direction for each pass across the bed when creatingthe map. However, in this case it can't be as they're going the wrong way. It could be some interference bwteeen the sensor and the magnetic plate like @DIY-O-Sphere suggested, or it could just be a distortion in the x-gantry rail where the wheels roll, or something completely different. Hard to tell.
Probably the easiest way to tell how good the heightmap is is to try printing things. If there's obvious issues with the first layer in certain parts of the bed, then you know which areas you're having problems with. You can always download the heightmap as a csv and manually tweak it in excel, then re-upload to DWC. I did this a bit when I was having troubles with my old piezo probe giving me odd readings. However, if your heightmap shows a dip in the middle, you might well have a dip in the middle!
Overall, most of your bed seems to be within +/-0.1mm which isn't too bad (mine is probably worse and gets good prints!). In an ideal world your bed would be mirror flat, your motion system perfectly rigid and you wouldn't even need a heightmap. But then again, if you wanted that you'd need 10x the budget and wouldn't be starting with an Ender5!
@engikeneer thanks mate, that's a really good download of knowledge! I have started to print the bed square level test with the 5 squares, and those print pretty well and as expected, a few better than others.
I did do quite a bit more tweaking and adjust the mesh grid as you suggested and I got a much better height map.
Just finished a level test and the center square was perfect... couldn't ask for a better first layer