Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: Thermal expansion compensation #1047

Closed
dbenoy opened this issue Aug 25, 2014 · 10 comments
Closed

Feature request: Thermal expansion compensation #1047

dbenoy opened this issue Aug 25, 2014 · 10 comments

Comments

@dbenoy
Copy link

dbenoy commented Aug 25, 2014

I'd like to see the z axis compensate for the temperature of the bed and of the nozzle. When either heats up, they will expand and shrink the z position by however many microns, and this can seriously disrupt prints if I have a significant temperature change between layer 1 and subsequent layers.

Also it could potentially reduce the need to constantly tweak the z axis zero point when using different nozzle temperatures.

Since the firmware has access to the temperatures, with a little calibration, it should be able to eliminate the thermal expansion error.

@nicolas-rambaud
Copy link
Contributor

The easiest way for you to avoid that issue is to preheat your bed/head a
few minutes before printing.

That way you are sure your heating elements are already expended and no
compensation are required.

Plus I guess compensating for heating elements might require some kind of
expansion coefficient that will change on your head/bed materials.
Estimating this coefficient might add extra complexity to the configuration
I guess. (keep it simple principle). But this is just my own opinion.

To me pre-heating is just the easiest way to avoid that.

De : Daniel Benoy [mailto:notifications@github.com]
Envoyé : lundi 25 août 2014 20:06
À : ErikZalm/Marlin
Objet : [Marlin] Feature request: Thermal expansion compensation (#1047)

I'd like to see the z axis compensate for the temperature of the bed and of
the nozzle. When either heats up, they will expand and shrink the z
position by however many microns, and this can seriously disrupt prints if
I have a significant temperature change between layer 1 and subsequent
layers.

Also it could potentially reduce the need to constantly tweak the z axis
zero point when using different nozzle temperatures.

Since the firmware has access to the temperatures, with a little
calibration, it should be able to eliminate the thermal expansion error.


Reply to this email directly or view it on GitHub
https://github.com/ErikZalm/Marlin/issues/1047.[image: Image supprimée
par l'expéditeur.]

@dbenoy
Copy link
Author

dbenoy commented Aug 26, 2014

Yeah that's good advice. Setting the zero position for the Z axis when it's cold will result in a scraped bed.

I've found that, at least with my nozzle and aluminium bed, even a change in temperature of 10 degrees is enough to ruin a print, or scrape the nozzle on the bed, unless I go back and redo Z=0, which isn't a big deal. Keeping it simple is indeed the motto of the day, there.

But, it means I can't use a 'hotter first layer' (or any other kind of mid-print temperature change) of more than 5 degrees. For that, the printer would have to be compensating for temperature as it goes. It could potentially be handled in the g-code, but it's preferable not to have a 'stop and change temperature' command while it's trucking along and printing because the nozzle will ooze while it's waiting, so it's better to just let the nozzle cool while printing. It'll even cool faster that way too, because the filament cools down the nozzle as it passes through. But then, how is the g-code to know when to adjust the z axis? Better that it be done in the firmware.

I don't know much about thermal expansion. Maybe all the materials that would be used in a nozzle expand linearly, or quadraticly, or something, and would only need two or three data points to complete the calibration.

Or maybe it's super complicated. Dunno.

@nicolas-rambaud
Copy link
Contributor

You’ve got a good point when you say that this will impact the print when
you change the temperature during the print based on layer height.

On my side I prepare my bed at 70°C and then at layer 1 I set it to 60°C.

I never saw that much of issues on my prints.

On your side did you see any issues when doing this? Or print quality
issues?

I’m interested by your feedback

De : Daniel Benoy [mailto:notifications@github.com]
Envoyé : mardi 26 août 2014 16:39
À : ErikZalm/Marlin
Cc : Nicolas Rambaud
Objet : Re: [Marlin] Feature request: Thermal expansion compensation
(#1047)

Yeah that's good advice. Setting the zero position for the Z axis when it's
cold will result in a scraped bed.

I've found that, at least with my nozzle and aluminium bed, even a change
in temperature of 10 degrees is enough to ruin a print, or scrape the
nozzle on the bed, unless I go back and redo Z=0, which isn't a big deal.
Keeping it simple is indeed the motto of the day, there.

But, it means I can't use a 'hotter first layer' (or any other kind of
mid-print temperature change) of more than 5 degrees. For that, the printer
would have to be compensating for temperature as it goes. It could
potentially be handled in the g-code, but it's preferable not to have a
'stop and change temperature' command while it's trucking along and
printing because the nozzle will ooze while it's waiting, so it's better to
just let the nozzle cool while printing. It'll even cool faster that way
too, because the filament cools down the nozzle as it passes through. But
then, how is the g-code to know when to adjust the z axis? Better that it
be done in the firmware.

I don't know much about thermal expansion. Maybe all the materials that
would be used in a nozzle expand linearly, or quadraticly, or something,
and would only need two or three data points to complete the calibration.

Or maybe it's super complicated. Dunno.


Reply to this email directly or view it on GitHub
https://github.com/ErikZalm/Marlin/issues/1047#issuecomment-53430460.[image:
Image supprimée par l'expéditeur.]

@dbenoy
Copy link
Author

dbenoy commented Aug 26, 2014

I use ABS, and I tried doing the first layer at 240 and subsequent layers at 230, and the second layer consistently refuses to adhere after a few seconds, but if I do the first layer at 230, the problem goes away. I'm sure I could mitigate it by tweaking my z axis so that the first layer is intentionally squished.

My alu heated bed is even more significant. If I zero the Z axis at 100 degrees, then the nozzle is scraping 0.3 - 0.5mm deep by 110 degrees. I never tried altering the bed temperature mid print but I suspect it would have really bad results.

I'm using a mendel-parts hot end v3. I'm planning on upgrading to a j-head some time soon, I'll let you know if that eliminates the problem.

@nophead
Copy link
Contributor

nophead commented Aug 26, 2014

Thermal expansion is pretty linear for most materials I think. Plastics
expand about an order of magnitude more than metals and
i get about 0.2mm for a 200C change with a J-head. The expansion of an
aluminium bed should be negligible over 10C.

How is your bed mounted? If it is constrained lengthwise the linear
expansion along its length might make it dome leading to a much bigger
vertical displacement than the expansion in thickness would give.

On 26 August 2014 15:50, Nicolas Rambaud notifications@github.com wrote:

You've got a good point when you say that this will impact the print when
you change the temperature during the print based on layer height.

On my side I prepare my bed at 70°C and then at layer 1 I set it to 60°C.

I never saw that much of issues on my prints.

On your side did you see any issues when doing this? Or print quality
issues?

I'm interested by your feedback

De : Daniel Benoy [mailto:notifications@github.com]
Envoyé : mardi 26 août 2014 16:39
À : ErikZalm/Marlin
Cc : Nicolas Rambaud
Objet : Re: [Marlin] Feature request: Thermal expansion compensation
(#1047)

Yeah that's good advice. Setting the zero position for the Z axis when
it's
cold will result in a scraped bed.

I've found that, at least with my nozzle and aluminium bed, even a change
in temperature of 10 degrees is enough to ruin a print, or scrape the
nozzle on the bed, unless I go back and redo Z=0, which isn't a big deal.
Keeping it simple is indeed the motto of the day, there.

But, it means I can't use a 'hotter first layer' (or any other kind of
mid-print temperature change) of more than 5 degrees. For that, the
printer
would have to be compensating for temperature as it goes. It could
potentially be handled in the g-code, but it's preferable not to have a
'stop and change temperature' command while it's trucking along and
printing because the nozzle will ooze while it's waiting, so it's better
to
just let the nozzle cool while printing. It'll even cool faster that way
too, because the filament cools down the nozzle as it passes through. But
then, how is the g-code to know when to adjust the z axis? Better that it
be done in the firmware.

I don't know much about thermal expansion. Maybe all the materials that
would be used in a nozzle expand linearly, or quadraticly, or something,
and would only need two or three data points to complete the calibration.

Or maybe it's super complicated. Dunno.

Reply to this email directly or view it on GitHub
https://github.com/ErikZalm/Marlin/issues/1047#issuecomment-53430460.[image:

Image supprimée par l'expéditeur.]

Reply to this email directly or view it on GitHub
https://github.com/ErikZalm/Marlin/issues/1047#issuecomment-53432801.

@galexander1
Copy link
Contributor

My two cents... if this happened to my printer, and I couldn't resolve
it by futzing with the heat bed mounting or whatever, then this is what I
would do. I hope you don't mind the unsolicited programming advice..

First, start a diary. Second, measure the distortion of your printer.
Personally, I get Marlin open in a terminal window and use G0 to move
around, with a piece of paper as a feeler. Third, make up bull**** math
to explain it -- use something like gnuplot or a spreadsheet to visualize
the data if it's not immediately obvious, it'll be "close enough" to a
line or a parabola probably. Fourth, implement it as a minimal hack to
Marlin -- one-off code just for your printer. If it works well for you,
report it here and maybe someone will want to integrate it. My guess is
that it is not the best solution, but if you write in your diary you will
see how your own ideas evolve over time.

YMMV!

Cheers,

  • Greg

@boelle
Copy link
Contributor

boelle commented Dec 19, 2014

is this still an issue for the initial poster?

@boelle boelle added the T: Feature Request Features requested by users. label Dec 19, 2014
@dbenoy
Copy link
Author

dbenoy commented Dec 19, 2014

No. I modified my bed as nophead suggested, and reduced the amount of the temperature change, and the problem isn't noticeable anymore on my particular hardware.

@boelle
Copy link
Contributor

boelle commented Dec 19, 2014

ok, then i'm closing this one... never heard anyone else having the issue

@github-actions
Copy link

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked and limited conversation to collaborators Apr 19, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants