Z-Offset depending on Hotend Temp setting



  • Hi

    I have noticed that my hotend Z-offset is quite dependent on the temp setting.
    I also have searched the forum for a solution on this...but no success, so sorry if this has already been taken care of.

    Is there a way to have an adaptive Z-Offset setting that is triggered by the Temp Setting?
    Or maybe kind of a variable Z0 point?

    Cheers


  • administrators

    The usual solution is to do a single G30 probe at the centre of the bed after the bed and hot end are up to temperature. This assumes that the Z prove trigger height relative to the nozzle doesn't change significantly with temperature.

    The Z prove trigger height can be compensated for bed temperature, but not for extruder temperature.



  • hmm

    Am I on the right path by assuming that the Z probe trigger is in most cases totally independent from the true nozzle position?
    Meaning the hot-end has a fix point at the extruder and considering the extruder as a fix-point where Hotend/nozzle and z-Probe are connected (same dimensional origin) the length difference of the distance "Extruder to Nozzle" is independent from the distance "extruder to probe".
    Therefore thermal elongation of the hot-end will not be compensated by Z-Probe measurement. G30 is kind of useless in this case as it is only linked to the probe position relative to the bed/extruder.

    Considering the far longer distance of the "Extruder to nozzle" compared to the heated bed thickness the thermal influence (elongation) to the nozzle will be bigger then to the bed, right?
    Well, at least not considering height differences of the bed due to in-homogeneity of the bed itself, but this would be covered by the probe.

    I think this could then be covered in two/three ways.

    1. Mechanical design: "Extruder to Nozzle" with minimal thermal elongation
    2. Firmware/Software: compensation in firmware by determining an thermal elongation factor as a variable
    3. "true" compensation by using the nozzle point as active reference for the system
      f.e. by using a reference point on bed (metal) and triggering a signal "nozzle-reference point" in combination with the Z-Probe and then using this as a new Z0 and then applying 2. to have the compensation over temp.

    What do you think...?


  • administrators

    Thermal coefficient of aluminium is around 22e-6. Stainless steel is a bit lower. Say 20e-6 on average for the hot end. So if the hot end is is 50mm long (E3DV6), changing the printing temperature by 50C will change the nozzle height by 50 * 20e-6 * 50 = 50um. Is that the sort of change you are seeing?



  • I know it might sound crazy 🙂

    But we use paper between heated hot-end and bed to setup Z0....already a spot for trouble...for me at least

    E3D is special and I assume the real elongation is very small as the Mechanical Setup is good to reduce the length and the thermal influence (fan close to heat-sink at hot-end).

    I have an extruder (BQ Hepehstos) where the cooling (heat sink) of the Hot-End is in the Gearhousing, so this is probably quite long.
    Considering your calculations setting up the Z0 @200° and printing @225° would result on a delta of 25um (0.025mm) closer to the bed. And then you already are hitting the bed...or?

    Well, I am at this point not considering the positioning tolerances of the printer...

    Or am I just overcritical?



  • @hornetrider I think you might be getting confused about the Z offset for the probe. It is basically the distance between the Z position when the probe triggers, and the nozzle position. So for example if the probe triggers when the bed is 2.5mm below the nozzle tip, then the offset is 2.5mm. If the hot end expands by 0.025mm, then the offset ought to be (2.5-0.025=) 2.475mm. But if you left the offset at 2.5 mm, then all it means is that your first later will be "squashed" by 0.025 mm. So for example if you set the first layer height to 0.3mm it would actually get printed with nozzle at 0.275 mm above the bed.

    Does that help?



  • @deckingman
    Thanks for you input, but this was clear to me. And that is the point.

    I would love to have that compensated by a variable, so that you only once have to "calibrate" the delta between Z-Probe and Nozzle in relation to the bed distance f.e. @200°C.
    Then you could print at any temp without need of resetting Z0 or probe distance for different temp profiles/materials.

    At this point this would have to be done in config.g it would need reboot of DUET...
    Time wasting process...kind of.



  • @hornetrider said in Z-Offset depending on Hotend Temp setting:

    @deckingman
    Thanks for you input, but this was clear to me. And that is the point.

    I would love to have that compensated by a variable, so that you only once have to "calibrate" the delta between Z-Probe and Nozzle in relation to the bed distance f.e. @200°C.
    Then you could print at any temp without need of resetting Z0 or probe distance for different temp profiles/materials.

    At this point this would have to be done in config.g it would need reboot of DUET...
    Time wasting process...kind of.

    If you think it's that critical then one option might be to have macros for each temperature. You'd need to know in advance what temperature you were going to print at before homing but the macros could just have a simple command to change the offset. A bit of pain I know but at least it would save editing config.g and re-booting.



  • ok, and how should that workaround work?
    Can the offset be defined outside config.g?

    I thought If..Then is not possible...

    I will give it a try but uncertain how that should work as the temp depends on the print, then it would be better to have it in start.g, or?
    Is config.g only loaded at reboot?

    Can the G31 with Z parameter be used outside config.g?



  • @dc42 said in Z-Offset depending on Hotend Temp setting:

    Thermal coefficient of aluminium is around 22e-6. Stainless steel is a bit lower. Say 20e-6 on average for the hot end. So if the hot end is is 50mm long (E3DV6), changing the printing temperature by 50C will change the nozzle height by 50 * 20e-6 * 50 = 50um. Is that the sort of change you are seeing?

    I think logic is right but numbers are little bit off. Because if you change printing temp by 50C then maybe lower 2 cm (hotend) only change temp by that much, "cold end" last ~3 cm of heat break and heatsink will increase just by fraction. So 50C can make change maybe by 25um.
    Isn't bigger problem heat bed which can warp much more due to temperature?



  • @hornetrider said in Z-Offset depending on Hotend Temp setting:

    ok, and how should that workaround work?
    Can the offset be defined outside config.g?

    I thought If..Then is not possible...

    I will give it a try but uncertain how that should work as the temp depends on the print, then it would be better to have it in start.g, or?
    Is config.g only loaded at reboot?

    Can the G31 with Z parameter be used outside config.g?

    Yes - I'm 99% certain. You aren't changing anything fundamental to the machine operation. So you could use G31 Znnn pretty much anywhere. Even as a stand alone command through the console. It's only used when you home the printer so you'd need to enter it before you home Z. Or to be more precise, if you've already homed Z, then you'd need to enter the new G31 Znnn and re-home Z.

    You could possible automate it by putting it in the start gcode of your slicer. It would look something like:

    Set hot end temp
    Change G31 offset to suit
    Home Z
    Print......

    HTH



  • @deckingman
    ok fair enough.
    But how to handle the change in an automated way, so that you can use different G31 Znn for different hot end temp...?

    I would love to have a variable, as the Temp effect is linear...
    And it would be perfect if integrated into the machine and not the slicer...



  • @hornetrider I'm just an end user like you. To get the firmware changed, you'll have to ask DC42. But you'll need to build a case for the request because thus far, nobody else has asked for this, (probably because there are vary many other variables that will affect the first layer height and baby stepping can deal with these on a per print basis). So I'd say that it is a very low priority thing compared to some other feature requests. But ask DC42, you never know..........



  • @hornetrider I use macros to define the G31 Z offset for each filament I use.



  • @hornetrider I think you're barking up the wrong tree. If you measure the G31 Z trigger height with the nozzle and bed both set to your printing temp range, the trigger value should be valid through the whole range of printing temperatures you'd use since the majority of the elongation will have already taken place at say 200c/60c.

    Are you having actual issues with first layer height?



  • @Phaedrux
    sometimes I have trouble. It really depends on the temp setting.
    I have noticed, that while setting everything (Z0 etc) @215°C for prints at that temp everything is fine.
    As soon as I switch to 225°C with the previous settings, I have to run a Z0 set
    to achieve a good first layer height. In most cases the nozzle is too close to the bed and the print won't work as extruder can't press that much...

    ok, this might also be linked to the paper used...but if this is so critical, I don't know. Spending 5-10min setup before printing is kind of annoying...


  • administrators

    @cecil said in Z-Offset depending on Hotend Temp setting:

    @dc42 said in Z-Offset depending on Hotend Temp setting:

    Thermal coefficient of aluminium is around 22e-6. Stainless steel is a bit lower. Say 20e-6 on average for the hot end. So if the hot end is is 50mm long (E3DV6), changing the printing temperature by 50C will change the nozzle height by 50 * 20e-6 * 50 = 50um. Is that the sort of change you are seeing?

    I think logic is right but numbers are little bit off. Because if you change printing temp by 50C then maybe lower 2 cm (hotend) only change temp by that much, "cold end" last ~3 cm of heat break and heatsink will increase just by fraction. So 50C can make change maybe by 25um.
    Isn't bigger problem heat bed which can warp much more due to temperature?

    Correct, it's only the last 2cm or so that would see the full 50C temperature change, so the difference in trigger height would only be about 20um. I suspect that the difference in Z probe trigger height that the OP finds he needs is not due to expansion of the hot end, but is caused by other factors. For example, some filaments benefit from being squished on to the bed when printing the first layer, other filaments don't.

    @Hornetrider, have you tried measuring the Z probe trigger height at different hot end temperatures, and at different bed temperatures?



  • @dc42
    that is on my todo list.

    What should the effect on the Z Probe Trigger height be, with different Hot-End temp? There is no thermal connection between Z probe and nozzle...
    On the bed temp I can see a correlation as differences on height would trigger the Z Probe, but probably the drive tolerances will easily eat that up...

    I will think of a method and come back...


Log in to reply