Adjusting z-offset

  • Is there any way to adjust the z-offset once the print has been started? I really need to buy a new printer with more stable mechanics but in the meantime, I am constantly having to adjust the z-offset prior to printing, especially for the first print of the day. Often times, I get it a little off and with a not so flat bed, end up having to cancel the print, clean up the mess, etc. If there were some way to adjust the z-height on the fly, I could save the print and continue…that would be quite nice.

  • administrators

  • I'd just chime in here that whilst that method works(ish) it has never been very convincing to me. And it only works if your first layer is always the same, and you have no offset in the gcode.

    I look forward to having proper babystepping, and I hope that, like in the later Marlin RC builds, there is either a readout of the amount baby-stepped so it can be used later, or some means of saving this amount as a persistent offset for subsequent prints.

  • Plus one here, I have macros for it but it depends on first layer thickness and is not too convenient.
    There are many situations when you are printing with different materials on different surfaces or the print just doesn't stick and adjusting Z height on the fly would do the trick.
    I wondered if there were a simple expression language for config g-code operations, eg while printing first layer we could check Z height and react to that…
    This is a far wish but a simple spinner to adjust Z value would be great, especially for end customers 🙂

  • administrators

    It's occurred to me that there is already another way to adjust the Z height during printing, although I haven't tried using it for babystepping. Use the G10 command with the Z parameter to adjust the tool offset. For example, assuming you are using tool 0 and you don't specify a Z offset in your G10 P0 command in config.g, you should be able to send G10 P0 Z0.05 to drop the nozzle by 0.05mm. This isn't cumulative, so if you do that and decide that it isn't enough, send e.g. G10 P0 Z0.10 next time. Sending just G10 P0 will tell you what the current offset is.

  • I tried G10 Z -5 to check if it changes Z position after homing when there is offset in config.g. but dropped the idea. Will check it today with a macro thanks.

  • It kind of works but changes the offset after finishing a layer so it's hard to use for this particular idea.

  • administrators

    Are you saying that you want the Z offset to take effect for the first layer only, and Z=0 to revert to where it was originally at the end of the first later?

  • The problem is sometimes when the first layer is being printed it would be great to heve the ability to lower or move the head up a bit just to make it stick more or smear less.
    You start the print and it's ok, but hmm, it does look like it won't stick because of whatever reason.
    Then there could be this macro to just move the head up or down by some value to make tiny corrections.
    At the moment I have a macro with : G91 \ G1 Z0.05 \ G90 but it's a fake and as far as I remember the next layer digs in the first.

  • Okay, I'm confused.

    If you use the G10 command, it will "adjust" the nozzle height while the print is in progress. If the amount in the G10 command was insufficient, you need to send another G10 command. I get that part.

    So say your layer height is 0.2mm and the first layer prints with the nozzle at 0.15mm above the bed, based on your offset in config.g. If it's not sticking, you'd send a G10 P0 Z0.05 and the nozzle should be 0.1mm above the bed now. Is this correct so far?

    So now the nozzle is theoretically 0.1mm above the bed for the first layer. When the second layer prints, will the nozzle now be 0.3mm above the bed?

    What exactly is babystepping?


  • Babystepping as marlin implement it sends a specified number of extra step pulses to the z motor driver per turn of the encoder wheel. So it's coordinate-system independent, instant and in the latest versions theres a readout on the Lcd to say how many millimeters you moved, which you can use to set a permanent z offset in firmware or your slicer.

    This is what we need really, it's tried and tested. If reprap firmware wants to steal a march on marlin then and option to save the offset for the next print would be a wonderful addition. Perhaps into the new configuration override file.

    I accept that if you have a really precise, reproducible printer and you don't change it much then you set the z offset once and then just use it. But if your printer isn't that tight, or you're testing things or change nozzles a lot, or hot ends this can save you hours and lots of filament.

Log in to reply