<p>After watching every possible YouTube video on the subject and reading any source available, and although I'm a PhD and quite computer savvy, I still can't make my Anet A6 (no probe) behave in terms of Z offset. I upgraded to silicone bed buffers instead of the stock springs; now my bed is ~5 mm raised, and I don't know how to proceed. Some observations:</p>
<ul>
<li><p><strong>G28</strong> makes the nozzle go to the center of the bed. Display says X 111 and Y 111. Is it preferable to set the home to the bottom-left corner, or is the center just fine?</p>
</li>
<li><p><strong>G28</strong> makes the nozzle squish the bed ~5 mm deep.</p>
</li>
<li><p>I've tried the <strong>G92</strong> approach and the <strong>M428</strong> approach. I can't quite understand what's the difference between them. Can anyone explain why sometimes the former is used and sometimes the latter?</p>
</li>
<li><p>I had high hopes for <strong>M428</strong>. What could be simpler? You physically guide the nozzle to where you want it to be, send the command, and that's your new 0,0,0. But I guess not. Since my &quot;home&quot; is at 111,111 and apparently M428 can only be used at a maximum of 20 mm from 0, I get a &quot;too far from reference&quot; error message.</p>
</li>
<li><p>At any rate, both approaches (also <strong>M206</strong>) haven't helped. When I <strong>G28</strong>, the nozzle still squishes the bed. The display either says Z 5 or Z -5 or whatever I've played with, but the nozzle still squishes the poor bed.</p>
</li>
<li><p>In my LCD menu (Marlin 1.1.9), I don't have Control -&gt; Motion -&gt; Z offset. Since many videos recommend using this, this is quite sad. Can anyone tell me why this option is absent?</p>
</li>
<li><p>On a very conceptual level, I can't quite understand why in all the video guides the bed screws are completely ignored when discussing Z offset. One guy showed how he's correcting his Z offset 0.3 mm using G-code. But he could've easily done it by adjusting his screws... They all say &quot;Z offset means the distance between your nozzle and bed, and here is how to adjust it&quot;. Now comes G-code, or LCD menu, etc. But why is everyone forgetting that you can adjust the distance between your bed and nozzle using the screws?! I can't seem to wrap my head around this. In my case, of course, I can't use the screws -- they've reached their limit, so I need to add extra using G-code. But nobody seems to really explain this nicely...</p>
</li>
</ul>
<p><strong>Summary:</strong> I urgently need a walkthrough for 6-year-olds. Make that 4-year-olds.</p>

[{'answer_id': 15353, 'author': 'octopus8', 'author_id': 26170, 'author_profile': 'https://3dprinting.stackexchange.com/users/26170', 'pm_score': 0, 'selected': False, 'text': '<p>Setting any offset will move the whole print (&quot;effectively shifts the coordinate space&quot;) - so you can set up for printing above or below bed, or shifting several cm to the right, for example - and then your print may not actually fit the printing space. For example: my frame is blocking X moves at the top, I can set the 20\xa0mm X offset to avoid accident when printing high (so shift the print). Or when setting the new print on top of another print, thus shifting the position, etc. If you call <code>M428</code> in any position, then current position will become the new offset. Current offset settings is reported by <code>M503</code> (or <code>M206</code> without parameters).</p>\n<p>Also <code>G92</code> is used as ad-hoc operation when relative positioning is used. It makes sense for extruder movements, but is not used for moving the printing head in practice. I would say that any such calls for X,Y,Z sound like some hacking, and you should know exactly what you are doing for tricking printer\'s logic this way. I would avoid this at all.</p>\n<p>Normally (0,0,0) for cartesian printers is nearest-bottom-left point of the bed.  If properly zero the printer is what you are trying to achieve, then you should:</p>\n<ul>\n<li>zero any X,Y,Z offsets: <code>M206 X0 Y0 Z0</code> (unless some is justified like in the frame example)</li>\n<li>save this setting for future: <code>M500</code></li>\n<li>home the printer - it zero the position, and then automiaticall backoff to some &quot;safe distance&quot; (programmed in firmware)</li>\n<li>use LCD to move carriage back to zero: at least for the Z axis</li>\n<li>regulate bed screws to fit the zero position of printing head</li>\n</ul>\n<p>There are settings in <a href="https://marlinfw.org/docs/configuration/configuration.html#homing" rel="nofollow noreferrer">Marlin\'s file Configuration_adv.h</a>:</p>\n<ul>\n<li><p>Marlin 1.1:</p>\n<pre><code>#define X_HOME_BUMP_MM 5\n#define Y_HOME_BUMP_MM 5\n#define Z_HOME_BUMP_MM 2\n</code></pre>\n</li>\n<li><p>Marlin 2.x:</p>\n<pre><code>#define HOMING_BUMP_MM      { 5, 5, 2 }       // (mm) Backoff from endstops after first bump\n</code></pre>\n</li>\n</ul>\n<p>They do not change the zero (do not set offset), but force the carriage to move away from zero during homing operation and (Marlin 1.1) after homing, becuse usually it is convenient. Marlin 2.x offers separate parameter for final backoff:</p>\n<pre><code>//#define HOMING_BACKOFF_MM { 2, 2, 2 }\n</code></pre>\n<p>If you would like to center the head after homing, I would suggest to use these settings.</p>\n'}, {'answer_id': 15354, 'author': '0scar', 'author_id': 5740, 'author_profile': 'https://3dprinting.stackexchange.com/users/5740', 'pm_score': 3, 'selected': True, 'text': '<p>So the new silicone buffers raised the bed by 5\xa0mm? When this happens, you should raise the endstop also with 5\xa0mm. Else the printer will go down to the Z endstop that is effectively 5\xa0mm below the level of the bed. I guess the buffers cannot be compressed by 5\xa0mm, so you need to move the endstop up to the level your buffer compression is in reach of.</p>\n<p>No software offset will work (for your current setup: homing on the bed surface does not work as the switch need to be triggered prior to having any offset in play) other than a hardware change or compression of the buffers of 5\xa0mm. It would only be possible to use a software offset when the nozzle homes off the bed surface (next to the bed). The only thing you would have had to do is add in your start G-code:</p>\n<pre><code>G0 Z5   ; Move the head to 5 mm \nG92 Z0  ; Call this Z = 0 \n</code></pre>\n<p>If <code>#define Z_SAFE_HOMING</code> is enabled, you should comment the line in the configuration file to make it home Z at the homed X, Y position.</p>\n<p>I will not go into all G-codes, details are read on the <a href="https://reprap.org/wiki/G-code" rel="nofollow noreferrer">G-codes Wiki pages</a> and <a href="https://marlinfw.org/docs/gcode/" rel="nofollow noreferrer">Marlin firmware G-codes</a>, these won\'t be able to help you out unless you fix the homing on the bed surface. Currently, you need to do a hardware fix, your endstop is below the surface level of the bed. Alternative is to remove homing Z above the bed surface and redefine the Z offset. A hardware fix is a better solution, and if you manage to print a fancy Z endstop holder and counterpart with a screw you will be able to level the bed more easily.</p>\n<p>E.g. <a href="https://marlinfw.org/docs/gcode/M428.html" rel="nofollow noreferrer"><code>M428</code></a> can set an offset, yes, but, it needs a reference; that reference is the homing reference or the current position. The current position of a printer that is just turn on is meaningless, it can be everywhere in the print volume. So you need to trigger the endstops first, that is not possible when it is not reachable (without compressing the bed).</p>\n'}]
['https://3dprinting.stackexchange.com/questions/15350', 'https://3dprinting.stackexchange.com', 'https://3dprinting.stackexchange.com/users/26360/']