Welcome! Log In Create A New Profile

Advanced

Z Height Setting

Posted by simono71 
Z Height Setting
November 09, 2015 11:29PM
So I have had a Mendel Max kit I built for over 3 years. Stopped using it as I was always frustrated with the prints I got. Half the time they would fail, then it would work flawlessly for a while, and then fail again. Finally decided to get it out and have a go at really getting it working properly. Replaced my t2.5 belts with gt2. I'm n the process of replacing my igus pillow blocks with lm8uu (though I wasn't able to find much info on whether this is actually a positive move). Though my main upgrade was to replace my fixed standoffs with strong leveling springs.

This last change led me to ponder the advice I read every where about setting the bed level. Namely pretty much everything I read says to bring the z head down to the bed and calibrate using a shim (typically some paper of stiff card), and to tweak all the springs till it is a constant height. Fine with that. However the issue I have is that this will then leave the printer head at the height above the bed equal to the thickness of the shim when the firmware thinks it is at zero z.

When you use a slicing software, and you set the first layer height, the gcode sets that move based from a zero height, e.g. a layer height of 0.35 will translate into a gcode move of 0.35 in z. Therefore if you have your head set to the shim distance of the bed (say 0.2mm), and your first layer is 0.25mm, the actual print head will move to 0.45mm in z which will be too high.

This can be fixed in slic3r, at least, by adding a negative offset equal to the distance the head is shimmed off the bed. However this step is never mentioned that I have seen in guides, and I wonder why the head is not zeroed to the glass bed in the first place? In addition adding an offset then risks that you would not be on a whole number of z steps for your lead screw depending on the offset, which I have read can contribute to random z wobble as opposed to straight lead screw induced wobble.

So as I still struggle getting that perfect first layer, I am basically wondering what the point of the shim really is and why the head is just not set to the glass in the first place. It seems it would actually be easier to level the bed with a bigger shim using perhaps a machinig 1 2 3 block, and keep raising the head till it slides under, and then setting the z stop so the head just touches the glass.

Anyway, been thinking about this way too much! Interested to see people's opinion and whether I have missed something important.
Re: Z Height Setting
November 10, 2015 12:54AM
I use a paper shim and adjust things until it always reads 0.1mm wherever I test on the bed. This seems to give pretty good results. I agree, with a shim in place you shouldn't be able to get to 0 Z position.

Not sure if this helps.
Re: Z Height Setting
November 10, 2015 06:28AM
Well in a sense you could set your nozzle to the glass then add 0.1mm in your slicing software, but you have to assume that your glass is both flat (really very flat) and level (both are tricky to achieve to a very high degree of precision in any real world situation) so you risk your nozzle scraping the glass in any areas which are slightly too high relative to it, due to an unlevel bed or an uneven bed at z=0mm, which in this example is actually z=0mm rather than z=0.1mm. Extruded filament can cope with a small variation in nozzle to bed height such as +/- 0.1mm especially if you print your first layer thicker, whereas the nozzle touching the bed cannot. It is worth checking that your leadscrews or whatever device you are using to move your z carriage are not worn and do not have excessive backlash. This will give poor reproducibility in z positioning which will result in good first layers one print and maybe bad the next.

If you want true nozzle to bed accuracy then I believe it will only be possible with either a perfectly flat and level bed (unlikely) or using auto levelling as implemented on deltas. My kossel mini uses Force Sensing Resistors under the bed, to achieve auto levelling/compensation, so its the nozzle contacting the bed that is the z-min endstop this is inherently less complex and more accurate than using any type of offset sensor. After autolevel (g29) position the nozzle precisely in contact with the glass at any given z=0 coordinate anywhere on the bed, so I add usually +0.15mm in slic3r and print. You can do this on a delta with Rich Cattell's Marlin as it builds a bed surface map and applies the corrections to any z coordinate, rather than just applying a correction plane to the bed which works if the bed is flat, but not level, but is only partially successful if the bed is level but not flat (i.e. your 0.1mm clearance allows the nozzle to avoid crashing the bed in places where it is slightly closer).

My i3 has a capacitative sensor with a largish 43mm x-offset, and has z=0 set to 0.1mm above the bed as in your example above and is much more complicated and difficult to setup. I would love to see a full bed level map implemented in Marlin for cartesian printers rather than applying a plane. This would work much better with nozzle based z-min endstop i.e. some type of switches/fsr's under the bed, or a sensor on the nozzle/voltage on the nozzle or whatever, rather than a sensor, which is less reroducible, and is offset by a large enough distance that you cannot probe the entire bed, without moving the carriages well beyond their current physical travel limits (at least on an i3).

To those who say auto-levelling is unnecessary and makes uneven parts, I say they either have perfectly flat bed's and are experts at levelling precisely and have amazingly precise printers, or consider a part with a +/- 0.05mm inaccuracy to be a problem, Personally I don't have a perfectly flat bed, or a perfectly level bed or care much about minuscule inaccuracies in a part. Auto-levelling is one of the key technologies that brings 3d printing to more people, without it it remains a technical engineering activity, you do not want to have to calibrate your inkjet printer before printing.
Re: Z Height Setting
November 10, 2015 10:30AM
@djdemond A bit confused about the 0.1mm offset. If your zero point was at the glass, and your first layer height was 0.25, then your z axis would be raised to 0.25 before printing (at least using slic3r). Are you saying adding the 0.1mm positive offset is to account for any unevenness in the bed surface? That seems to be what you are implying.

However in your example of auto-leveling, you say the software compensates for surface variation and z=0 will accurately be the bed height across the surface. Therefore wouldn't the 0.15mm offset you give for the delta printer be unnecessary as the software would be able to move z to a pre-determined layer height above the bed that incorporates any flatness error? Therefore the layer height would always be 0.15mm higher than the intended height?

Sorry if I am not getting this.
Re: Z Height Setting
November 10, 2015 11:11AM
When I auto calibrated and auto levelled my kossel, I asked it to print the obligatory 2x2x1cm cube and it was way too tight /squashed/nothing coming out with z offset in slic3r set to 0. So I add 0.1mm and print again, still a little too squashed, so I add 0.15 and print again and its perfect.

I see what you mean, and it makes sense. I might be wrong here but I think if you do not set a z offset the printer beings printing your first layer at z=0. Its only when you move up to layer 2 does the z axis lift. I'll check this evening in the workshop and get back to you.

Edited 1 time(s). Last edit at 11/10/2015 11:13AM by DjDemonD.
Re: Z Height Setting
November 10, 2015 11:24AM
Quote
DjDemonD
I see what you mean, and it makes sense. I might be wrong here but I think if you do not set a z offset the printer beings printing your first layer at z=0. Its only when you move up to layer 2 does the z axis lift. I'll check this evening in the workshop and get back to you.

Not so. Printing starts at z=first_layer_height. You can easily see this by looking at the gcode.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Z Height Setting
November 10, 2015 11:33AM
I know for certain that for example when I print a 2x2x1 cm cube it is not usually showing z=10 on the LCD when it finishes, despite this the part is 10mm thick (+/-0.05).
Re: Z Height Setting
November 10, 2015 11:37AM
DC42 okay so why do we need to add the thickness of a piece of paper offset to the nozzle either physically or electronically when we print. Simono71 would be right we should put the clean nozzle on the bed, call this z=0 then ask for a 0.25mm first layer, the z axis lifts 0.25mm and it begins to print.
Re: Z Height Setting
November 10, 2015 11:43AM
Quote
DjDemonD
DC42 okay so why do we need to add the thickness of a piece of paper offset to the nozzle either physically or electronically when we print. Simono71 would be right we should put the clean nozzle on the bed, call this z=0 then ask for a 0.25mm first layer, the z axis lifts 0.25mm and it begins to print.

In practice there is some elasticity in the head and the bed, so when the nozzle grips a piece of paper it is less than the thickness of the paper above the bed. In fact the paper test is not very reliable, I have found that the result it gives varies a lot with the bed surface friction. For example, if the bed is coated with PVA glue then it will grip at a greater height than it will if the surface is clean glass. For accurate measurement, I use feeler gauges. However, for a given bed surface, you can get to learn how much grip on a piece of paper gives you a Z=0 setting that yields a good first layer.

Edited 1 time(s). Last edit at 11/10/2015 11:44AM by dc42.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Z Height Setting
November 10, 2015 10:06PM
Quote
DjDemonD
I know for certain that for example when I print a 2x2x1 cm cube it is not usually showing z=10 on the LCD when it finishes, despite this the part is 10mm thick (+/-0.05).
So what DOES your LCD show?

My Marlin firmware shows the Z-height to 0.1 mm precision (truncated, not rounded) on the LCD display; Pronterface on the laptop shows the G-Code print height to 0.01 mm.

If I print with a 0.35 mm first layer, and 0.25 mm second and subsequent layers, my successive Z heights are 0.35, 0.60, 0.85, 1.10, ....
When I monitor the print job using Pronterface on my laptop (which displays Z-height to 0.01 mm), these are the exact heights that I see, but on the LCD display, I see 0.3, 0.6, 0.8, 1.1 ...

If I slice a 10.00 mm high part using Slic3r and 0.35 / 0.25 mm thick layers, the last layer will be created at a Z-height of 10.10 mm (because the second last layer at Z = 9.85 mm is slightly too low); Pronterface will show 10.10 mm, while the LCD will show 10.1 mm. When that last layer is being printed, the print-head is 10.10 mm above the print-bed (within the accuracy that I have calibrated the machine), so that is pretty much the level where the top of the part is finished off.

The printed part is at higher than ambient temperature, though - the bottom is at about 60 degrees Celsius (the heat-bed temperature that I use for PLA), the middle of the part has probably cooled down a bit (but may still be getting some radiated and / or conducted heat from above and below), while the top is generally hotter than 60 degrees Celsius, as it has only recently been placed. (The top few layers will be close to my printing temperature of 200 Celsius for PLA.) Actual temperatures will depend on many factors (size of the part, print duration, print-bed temperature, extruder temperature, use of cooling fan, use of enclosure, etc.)

Let's assume the overall average temperature of the part is about 60 degrees, say (I haven't tested this). As the part cools to ambient overall, it will shrink, so will end up a little bit smaller than at the end of the print job.

The coefficient of thermal expansion for PLA is about 80E-6 mm/mm/K (eg Ref: [www.polylanema.pt] ), so if the part cools by an average of 40 degrees to an ambient of 20 Celsius, a 10 mm tall part will shrink by about 0.03 mm, so my 10.10 mm tall part should shrink to about 10.07 mm high, which is pretty close to +/- 0.05 mm. A 100 mm tall part might shrink by about 0.32 mm, so should still stay within a few tenths of a mm of the intended height.


Follow my Mendel Prusa build here: [julianh72.blogspot.com]
Re: Z Height Setting
November 12, 2015 12:15PM
julianh72 - I still havent found the time to go print a cube and see what it says yet but I will.
DC42 - I use feeler gauges too. After changing something I autolevel, then measure the nozzle height above the bed centre, then add 0.1mm and then either set this as z-offset in slic3r or flash it as probe z-offset in Marlin. I print a cube and if I get really nice 1st layer adhesion use this setting until something changes, if not then its either add 0.1 or subtract 0.1 depending on whether its squashed or not adhering, I might instead try +/-0.05 if its subtle.
I take your point that adhesive occupies space, but recently I am printing onto printbite - which I can heartily recommend, and using no adhesive even with ABS. Yet I am still finding that if my first layer is exactly the layer height with no positive offset then It is squashed.
Re: Z Height Setting
March 09, 2016 06:22AM
I think that bed levelling works like this: The paper test is used to have some clearence between the noozle and the bed. Other way, in real world, there are no real flat surface, or at least I have not found one (and beleive me, I have searched a lot, at least I bought 10 different glass pieces, and finally ended with an aluminium bed, wich is the more flat thing I found). Glass will bend in some degree: Im talking of a 0.1 or less measured in a corner and in the center. So if you do the paper test, you will be ok in a corner, but the noozle will almost touch the bed in the center, so, lets say you set an initial layer of 0.3, when printing starts you will have a space of 0.4 in the corners and 0.3 in the center. That is why you should set your firs layer to have and extra extrusion. In this example 0.4 is like 30% of 0.3, so I would set the initial layer to have an overextrusion os 130/140%.
In my case I dont use paper for the levelling calibration, I use metal feeler gauges and I used to choose the 0.15 gauge when useing glass, and now that I have a nice aluminium bed (wich is really more flat than the glss and seems to ben much much less when it is hot) I use the 0.1/0.05 gauge for levelling.
Personally I dont like automatic bed levelling, I have seen a lot of cases where there is some failure and the noozle end crashing against the bed with catastrophic results.
Re: Z Height Setting
March 09, 2016 07:51PM
i use the shim to get me close i would rather be to high than to low put that in firmware. then i print a test piece(actually i usually measure skirt i print around test piece) then and take it of and measure it make the adjustment in slic3r try again until it comes out to whatever my set layer height is. after that i put slic3r back to 0 and adjust firmware again. you can do the same to level the bed once you get it close.

i dont think slic3r has an over extrusion setting just extrusion width setting which i dont think puts out extra plastic just puts a wider width.
Sorry, only registered users may post in this forum.

Click here to login