This is a series of cards with numbers cut out of them to make z-tuning a dead simple process that will be perfect EVERY SINGLE TIME!
If you can, please start with the .3mf files, as your experience will be much simpler. Also - Prusaslicer (Cura may be doable, but I don't use it, so don't know how). Lastly, Klipper is required for this.
Nice to have: flat, preferably glossy surface. This isn't a priority, but I find that looking at the backs of glossy prints gives me the best visual representation of the perfect Z offset. Plastic razor scrapers. I recommend this set from Amazon: https://www.amazon.com/gp/product/B09Y5WQFP4/ . Unless you're on a glass or borosilicate surface, DO NOT USE METAL SCRAPERS.
Step 1: Start the Z-Offset tuning however you're used to, use paper, or a metal shim, or whatever else. Get it close, but you don't need to be perfect You could even just eye it in to get close, but you don't want it to touch or push into the plate. For simplicity's sake, go ahead and edit the printer.cfg (or whatever cfg file the z offset is saved in) with this value.
Step 2: Take the coarse file (or recreate it by using the -.10 -.05 0.0 +.10 +.05 cards and align them in a line left to right in that order - try to keep them relatively in the same line - perhaps even change the Y axis to be the same for all of them), then Select your base settings for whatever filament you intend to use - use one that is cheap and that you have a lot of. Now, in PrusaSlicer, go to the “Printer Settings" tab and select Custom G-code on the left (second option). Scroll down to Between objects G-code (for sequential printing) and add this line:
SET_GCODE_OFFSET Z_ADJUST=+0.05
Step 3: Go to the “Print Settings” tab at the top, then select “Output Options” on the left. Now make sure there is a check mark in “Complete individual objects:” then change both the Radius and the Height below that (beside “Extruder clearance:”) to 1mm or thereabouts. Go back to Plater, and make sure you have layer height as .20mm, the Filament and Printer set correctly, and no supports, infill, or brim (this is a single layer print - none is needed here). Now Slice Now, and Export G-code. Call this something like “Coarse Z-Offset tuning”.
Step 4: This is step 2 over again, but instead of the Coarse 3mf file, use the Fine 3mf file (or instead of the -.10 -.05, etc. cards, you'll use the ones that are in increments of .01. so -.04 to +.04. Again, arrange them, left to right from lowest to highest number.) Go back to "Printer Settings", “Custom G-code”, then “Between objects G-code (for sequential printing)” and change the line to +0.01 at the end.
Step 5: Go to the "Plater" tab, click “Slice now” then “Export G-code” and save this as something like "Fine Z-Offset tuning.
Step 6: You need to edit both of the gcode files, but it's VERY simple. Open the first one - “Coarse” and search for “M107”. The VERY first time this occurs is the beginning of the first card. Add this line ABOVE M107:
SET_GCODE_OFFSET Z_ADJUST=-0.10
Save and close the file. Open the second one - “Fine” and search for “M107”. Again the first time this occurs is the beginning of the first card. Add this line ABOVE M107 in this file:
SET_GCODE_OFFSET Z_ADJUST=-0.04
Save and close the file.
Now the magic begins.
Step 7: Print the coarse file at the z offset you previously found using whatever original method you did. This will take around 9 minutes on an Ender 3 under stock settings. Working from the right, peel off and recycle any cards that you can visibly see gaps between the lines. The very first one that doesn't have gaps is probably not quite right, but compare it to the second one to the left of that. If you either don't have one without gaps, or don't have another one past the first without, then you should reset the z offset in the config file, taking .10mm off of whatever figure is there (or if you're like me, add to it - I still have no clue why - comment below if you do?). Then reprint this. Now that you have two cards to compare from this latest print. Peel them off, and look at the underside. The underside will show you which is better. Go with that setting, and change the Z Offset with this new number.
Step 8: Ultra fine tuning. Print the fine file. You won't have to print this more than once. But this CAN be a bit tricky. There are 9 different cards on this, and it will take roughly 15 minutes on an Ender 3 under stock settings. Look at the tops of the cards and see if you can see a clearly smoother, cleaner surface. Great! Use that figure (your eyes are better than mine). If not (and this is where that smooth and/or glossy surface comes into play), peel the best ones off the bed, and look at the bottoms - the bottom will almost definitely show you the best z-offset number to use. At this point - print a test print (OR NOT!). You (COULD) go crazy and try to do .005 layer height adjustments (or better if your printer supports it), but I honestly can't tell the difference between the 3 layers at that level.
Enjoy PERFECT first layers every time (assuming you have a BL or CR-Touch set up, or a well trammed very flat bed).
Epilogue: I made this because I've never been good at live z-off set tuning which is what so many people suggest. I took to creating a large full plate single layer print, and after about 5% of the print was done, adjust the z offset. When I had done 5 of the coarse ones, I chose the best, and did the same for the Fine ones. Only problem is, using that method, the fine details are MUCH harder to see the difference of, and if you lose track of how many adjustments you may select the wrong Z Offset to work with. Those prints were also taking 30+ minutes each time.
And I had to do this after EVERY time I changed the nozzle, or unclogged the nozzle, or really did anything but remove the fans and put them back on the hot end (that doesn't affect the z offset at all on my setup). I've been trying to print more gritty and problematic filaments, like silk, or petg with particles in it (to give it a galaxy look), and it would often break in the hot end, making it impossible to remove to go to the next filament. I'd have to take it apart, then clean out everything, and shove some filament through the hot end quickly to get it clear enough to reassemble, then I was faced with at least another 2 hours of the previous z offset work.
Now? Perfect. Every. Single. Time.
I set the license to Creative Commons - Attribution. I don't care what you do with the files and instructions, even sell them, just please say where you got them from. I really love the Public Domain license. I just want SOME recognition for this bit of work :)
The author marked this model as their own original creation.