Use of G30 Z0 and precision nozzle probing for perfect first layer!



  • Okay so recent issues getting my corexy printing a consistent first layer with new re-arm board and learning smoothieware for the first time (full details here http://forums.reprap.org/read.php?13,735351,749662,page=2#msg-749662)) and it was suggested to me (by sdavi - genius) to do grid levelling and then go to bed centre (although assuming levelling grid is working it doesn't matter where on the bed) and then do G30 Z0. This sets the nozzle (since I am using a piezo hotend probe which is nozzle based and very accurate) at exactly z=0. Then just print with correct first layer height i.e. actually 0.3mm for a 0.3mm first layer rather than 0.3mm+thickness of paper etc.. You will get exactly a 0.3mm first layer. It is the equivalent of doing a grid probe and then homing z afterwards, which I did not assume was possible as this would clear reset the grid.

    All I can say is this is a really clever way of doing away with all that messing around trying to get a good first layer, you know - paper tests, feeler gauges, raising and lowering the head and calculating the distance, nozzle offsets (there is no probe offset) etc… This renders babystepping pointless and since not all firmwares have it this is a good thing. I accept it is only possible with a probe that uses the nozzle and is so sensitive that z=0 is z=0 rather than compliance in the probing method generating an offset. But it seems to work, I can print an even first layer at any point on the bed (which is not very flat or level) and its all automatic.

    This seems to work with RRF as well, but I haven't tried it with Marlin/repetier.

    Does everyone know about this already or did I just miss z-probing 101? Or has it previously not been that useful as a very precise nozzle based probe wasn't available?


  • administrators

    There is no need to do G30 Z0, it just tells the firmware that the nozzle height error is 0 at that point in preparation for 3, 4 or 5-point levelling, which you are not using. So in your context, it does nothing.

    Homing Z does not reset the grid. However, it will reset the Z=0 height. The only time this should make a difference is if you are homing using the Z probe and the XY point you choose for Z homing does not correspond with one of the points on the grid. Then the height at that point calculated from interpolating the nearest grid point may not be quite the same as the height measured at that point by the probe, resulting in a small shift. To avoid this, choose your XY homing position to coincide with one of the points on the grid.

    The only time I mess around with paper under the nozzle is when I have changed something about the hot end and I need to re-measure the Z probe trigger height. I never allow for the thickness of the paper, I assume the elasticity in the print head mechanism more or less cancels it out.



  • Okay, I tried this:
    homed and autocalibrated my delta. Sent nozzle to z=5 at bed centre. Then sent G92 Z6 to simulate a nozzle 1mm higher than it ought to be. Then I sent G30 Z0, the nozzle touched the bed the probe triggered and the coordinate read Z=0.01.

    So what's happening there if not the effect I describe? I know you understand this better than anyone, but it has the practical effect I describe and it's very useful used this way.

    I tried it with the nozzle short so moved the nozzle to z=10 then send G92 Z8, then G30 Z0, once the probe triggers on contact the coordinates are reset to z=0.01.

    I'm not saying that on a very precise machine it has much application, on my kossel XL its not needed. But on a lot of other machines like one I have, where after each grid level the precise nozzle to bed gap varies compared to the last probing, or as you change nozzle temps and get variation due to thermal expansion, its a much easier and fully automatic way of resetting the z level (like homing to z-min, but it works on deltas too) after calibration/levelling and then printing a perfect first layer. No babystepping, no paper tests, no cancelling the print that isn't sticking or over-squashing the first layer. It will however only work universally with a precise nozzle contact probe.


  • administrators

    I was wrong about G30 Z0 in my previous message. I just checked the code, and if there is no P parameter then any XYZ parameters are ignored. Only the H parameter is used, if it is present. So G30 Z0 does exactly the same as G30 - and G30 is the command used to home Z if you are homing using a Z probe. My previous comment applies: make sure you do the G30 at an XY position that corresponds to a grid point, or the G30 command may cause a small shift in the Z=0 position.

    Unless a user wants to run G29 to re-probe the bed every time, I recommend using G29 S1 to load the existing bed map, followed by home Z or G30 to establish the Z=0 position - preferably with the nozzle and bed up to temperature.

    I am implementing babystepping in firmware 1.18 because a number of users have asked for it, not because I have any need for it.



  • I was one of the people who asked for it and one of its greatest proponents, until earlier today, now I couldn't honestly see a purpose for it personally, though it is still the fastest way to set the nozzle to bed gap when commissioning/tuning a machine or where your machine is mechanically sub-optimal.

    The idea that with a precise nozzle based probe and working grid levelling (or plane correction and a perfectly flat bed) all it takes is one simple g-code to get exactly the right nozzle to bed gap every time, is very satisfying.

    "Unless a user wants to run G29 to re-probe the bed every time, I recommend using G29 S1 to load the existing bed map, followed by home Z or G30 to establish the Z=0 position - preferably with the nozzle and bed up to temperature." DC42

    +1 for loading the grid, unless you have changed something related to the mechanics of the machine that works. Though I would say if using the piezo probe system get the bed to operating temp, and nozzle to as close to below ooze-temperature as you can i.e. 160 for ABS etc.. then probe. This is to avoid filament being on the nozzle tip. The thermal expansion effect from say 160 to 235 is very small, even if we assumed the entire hot end was heated, an e3d v6 would go from 62.40345mm @ 160 deg C to 62.46092mm @ 235 deg C so only 0.06mm and that's if the whole thing was hot. In reality the heaterblock and heatbreak up to the heatsink is 19.5mm, so the change is only 0.02mm. If you probed with hotend cold you would be expecting 0.06mm change in dimension from 20-235 deg C.


  • administrators

    That all sounds good to me. Probing the bed with the nozzle at full operating temperature would be too hot for some bed materials.

    Are you really able to use a G31 Z parameter of zero? I would have thought you would need a negative trigger height of a few tens of microns at least, especially when probing a bed with a soft surface such as PEI.



  • I haven't tried it on PEI but yes that's certainly likely, with printbite I'm using -0.1 but doing it in slic3r as 0.1mm z offset, but that's a "measure once and set" thing to do. I suspect onto glass it would be as near to 0 as it was possible to be.



  • Hi DJ and Congrats on getting it working - you are obviously excited about it. I seem to be missing something though. Why is it important to you that the trigger height is 0? It's a set once and forget thing thing with any sensor, especially if ones bed is flat and
    level, so as long as it's repeatable, so why does why does it matter that it's zero rather than 0.1 or even 2mm? Cheers. Ian



  • Thanks Ian, no nozzle z offset, doesn't matter once its set for a surface it's set. it's just this idea of using G30 means you always get the first layer right automatically rather than when setting up/tuning having to trial and error your way there. Also if your machine is less reproducible than is ideal you lose the headaches with first layer height.

    It's one of these things that for some is not an issue for others it's the bane of their lives. I see it like auto delta calibration, if you could manually calibrate a delta before it was as skill, you enjoyed it, you can't see the point of auto calibration, if you couldn't figure it out or it took hours, then it's vital and is the difference between it working and not.

    To make a consumer 3d printer cheap there has to be a way to always have a perfect first layer automatically. This along with many other small ideas is a step in the right direction.



  • Ahhh, got you. Yes it really is satisfying when you can just "Home and Go" by whatever route you take to get there.



  • just makes me wonder how a piezo sensor could be implemented with a titan extruder and hotend combo in the direct feed stup instead of bowden. because being able to home and go is a big goal for my setup since i have small children.


  • administrators

    I have been doing "Home and go" on my Duet-powered Ormerod ever since I fitted it with a good IR sensor and levelled the bed mechanically nearly three years ago. And "Autocalibrate and go" on my delta. You can do both using any good Z probe.

    As I see I, the advantage of nozzle-based probing that is being discussed here is primarily applicable to delta printers. Unless you get most aspects of the geometry perfect, you will have some varying effector tilt, and that will change the effective trigger height of any Z probe that is displaced from the nozzle. For auto calibration purposes you can correct for this in the bed.g file, although measuring the trigger height at every probe point is tedious. But you can't easily correct for variation in trigger height if you need to use mesh bed compensation to iron out residual height errors.

    I had been wanting to incorporate a FSR into the hot end mount for some time, but I hadn't worked out a way of doing it that didn't involve hinging the hot end. Using a piezo plate instead and drilling a hole in it for the Bowden tube is a really innovative step that solves the basic mechanical problem.



  • @Sniffle:

    just makes me wonder how a piezo sensor could be implemented with a titan extruder and hotend combo in the direct feed stup instead of bowden. because being able to home and go is a big goal for my setup since i have small children.

    Okay so this isn't too tricky. All you need is to incorporate a titan bracket which positions the titan above the piezo sensor assembly and use a ptfe filament guide tube (so you have a bowden tube essentially but its only 5cm) down into the hotend. It doesn't matter if its not secured to a bowden coupler on the hotend as its too short to matter but if you do secure it it will work even better.

    What we are going to do next is try smaller piezo's see it if works with a smaller unit, and design one for i3 style printers etc…



  • @dc42:

    I have been doing "Home and go" on my Duet-powered Ormerod ever since I fitted it with a good IR sensor and levelled the bed mechanically nearly three years ago. And "Autocalibrate and go" on my delta. You can do both using any good Z probe.

    As I see I, the advantage of nozzle-based probing that is being discussed here is primarily applicable to delta printers. Unless you get most aspects of the geometry perfect, you will have some varying effector tilt, and that will change the effective trigger height of any Z probe that is displaced from the nozzle. For auto calibration purposes you can correct for this in the bed.g file, although measuring the trigger height at every probe point is tedious. But you can't easily correct for variation in trigger height if you need to use mesh bed compensation to iron out residual height errors.

    I had been wanting to incorporate a FSR into the hot end mount for some time, but I hadn't worked out a way of doing it that didn't involve hinging the hot end. Using a piezo plate instead and drilling a hole in it for the Bowden tube is a really innovative step that solves the basic mechanical problem.

    Like you, I do "Home and Go" (have I just coined another phrase?) without any form of bed compensation because my bed is flat and level and I'm not using Delta geometry. However, I can see another situation where nozzle based probing might be advantageous. That is where the bed isn't completely flat or level, and it isn't possible to get an IR probe close to the nozzle. I'm thinking of the Diamond hot end and similar, with it's great big lump of brass and 3 heat sinks sticking out at 28 degrees.

    Also, because I choose to use 3dlac, the surface reflectivity can change so I home the Z axis over a piece of black paper stuck to one corner of the bed. That's fine as long as the bed stays flat and level but on a 400mm x 400mm bed, I'm homing a long way away from where I'm printing so the engineer in me is screaming that it's not a good idea. However I have a plan B….........



  • Offset probes are pretty good for delta calibration as long as they can be close enough to the nozzle to be able to reach almost to the edges of the bed and reduce effect of tilt. But not perfect, especially for levelling as they cannot reach everywhere (unless your printer is really under-utilising it's potential build volume and has axes much bigger than the bed). Surfaces are always an issue, either reflectivity or conductivity depending on the probe etc… They only surface that nozzle contact probes might struggle with is a very soft surface, I will test a few soft materials and see what happens.



  • Yes, blue painters tape is quite common and I'd have thought a bit "squishy".



  • Okay so I did a few tests.
    Jeweller's scales on the bed G30 - 15g required to trigger the piezo probe. So not a heavy hit.

    I don't have blue painters tape but I have got some white masking tape and I read there is no real difference except blue tape can be removed after it has been attached for longer than white/cream masking tape. It was the first time I have ever printed onto tape, or onto a cold bed! I've always had machines with heated beds.

    I had to add 0.2mm z offset in slic3r (so thats G31 Z-0.2 in duet config.g if you prefer to do it that way) to get a perfect first layer with the tape. But I had to use the same offset without the tape printing onto relatively hard print bite.

    I used G30 after autocalibration, with the bed at 0 with the tape and 80 deg C with printbite. The nozzle was at 130 deg C for probing both times.

    So either the bed temperature change is having the effect of compensating for the thickness of the tape or the tape isn't really making much difference to the probing.
    I measured the thickness of the brim in both models I set a 0.36mm first layer height its was 0.35mm for tape, and 0.35mm for no tape.


Locked
 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.