gradually decrease bed temp after printing ends
-
I wonder if someone has a solution to gradually decrease heated bed temperature over a given lapse of time without creating a new ending script for each material and taking into account maybe the ambient temp when the print started as target temp.
Some background on the problem. I am running a large Custom printer (500 X 500 X 500) with a 220V AC heated bed on a SSR and a mirror laid over a 6mm aluminum bed as a printer surface to grant a complete even and level surface. printed parts stick impresively well, but due to the large format of the bed (and so the mirror) the heat expansion and cold temperature outside the enclosed chamber, my mirror has cracked twice this winter. (this used not to happen on summer with 30 C° ambient temp, but now at 0 C° at night, the cool down happens too fast and the part puts so much stress on the mirror that it cracks as it seems to cool faster than the plastic does. for reference, to avoid issues when I start a new big print, i set the bed temp to 75° and wait 30 minutes till I expect no further expansion of the bed and the chamber has also absorved some of the heat)
I can edit the ending script on simplify reducing the temp on steps (reduce 5 degrees, wait till temperature is reached, wait 5 minutes and repeat) but i think there should be a better way to reduce temp on a more linear way (maybe running a custom macro on end using Programming constructs. also, I should consider the season to set the final temp I want to reach, becuase for summer there is actually no way to command the printer to "heat" to 0 degrees as the ambiente temperature is higher.
my overall idea is so declare a variable when the printer starts with the ambient temp and last bed temp (to account for diffent material settings) , and then create a loop command reducing the temp by 1 degree from the "last target temp" each minute until the saved initial temp is reached (this is due to the lack of an existing gcode command to support relative temp changes). should this work? Is it actually feasible or there is any other recomendation?
this should also help people experiencing part warping on extreme harsh environments apart from saving some mirrors.
-
@gefidalgo recording ambient temperature in start.g keying off a cold bed:
[...] ; other start.g commands ; create ambient temperature global if it does not exist from ; previous runs; set to current bed temperature if !exists(global.ambient) global ambient = heat.heaters[0].current else set global.ambient = heat.heaters[0].current M190 S75 ; this temperature may be filament specific G4 S1800 ; wait 30 minutes for bed to stabilize and preheat chamber [...] ; other start.g commands
reducing temperature i stop.g stepwise:
[...] ; other stop.g commands while heat.heater[0].current > global.ambient M116 H0 S{heat.heater[0].current-5} ; reduce bed temp by 5C G4 S300 ; pause 5 min M116 H0 S-273.1 ; finally turn off bed [....] ; other stop.g commands
Please note this bit from the documentation Note: M116 will not wait for temperatures below 40c because in many cases they may never be reached due to ambient temps. So if you want to wait for a bed to cool, use 41c or higher.. There is a change in RRF 3.5 pertaining to peltier coolers that may render this comment obsolete in the future.
Also, you will need to add M0 at the end of your gcode to trigger stop.g
-
I use daemon.g to control heaters after printing is finished.
I have global variables that contain the needed values.
The daemon runs every 10 seconds so you can control the timing of the cooldown by how often the code in the daemon file makes a change.
Frederick
-
@gefidalgo I always favour fixing the root cause wherever possible, but I appreciate that having already built the machine, you might not want to go down this route. But I'll put it out there anyway.
I too use a large aluminium plate with removable glass surface and never had the problems that you have experienced. Admittedly it's somewhat smaller in X and Y than yours being 400mm x 400mm but it's twice as thick at 12mm. So I have a slightly higher volume of material but more importantly, the ratio between surface area and thickness for my bed is 3 times higher than yours. Also, my bed has 12mm of semi-rigid insulation on the underside which speed up the warm up time slightly but significantly lengthens the cool down time. So a thicker aluminium plate with insulation might help.
The other thing which might help is simply changing the mirror for float glass. You haven't said what thickness the mirror is but I use 6mm float glass and have never had any problems in the 6+ years that I've been using it. Even if I take it out of the chamber and let it cool fairly rapidly in ambient air which might be 60 degrees cooler than the plate. In fact, that's the main reason I use a removable glass build surface - so that I can swap plates and start printing again with the minimum delay. If you do try this, don't make the mistake of getting the glass toughened - that toughening process will distort it (as I found out).
-
-
@oliof thanks a lot, I have tested and works perfect for my use case.
-
@deckingman thanks for your time and dedication on the repply. I am planning to add some cork sheets on the underside and probably a heater for the chamber in the future for more complex materials. my mirror bed was 4mm as it was only supposed to "flatten" the bed (I was unable to find a good aluminium tooling plate on my country, ended up using a regular aluminim plate) and was actually reused from my home. this printer is only for large projects so I dont mind giving a full hour of cooling down after a 3 or 5 days print. for smaller projects I use a 200X200 printer.