slic3r / Slic3r

Open Source toolpath generator for 3D printers
https://slic3r.org/
GNU Affero General Public License v3.0
3.35k stars 1.29k forks source link

Advanced temperature control. #551

Open ahmetcemturan opened 12 years ago

ahmetcemturan commented 12 years ago

There is a feature called autotemp in Marlin. I played around with it and got very good results, especially with high speed prints. What it does is to check the buffer and see wheteher there is a big flow of filament coming up and increase the temperature...

The disadvantage of having it controlled by the FW is that it only sees whats in the buffer and that can be very little.. :)

The slic3r could do this much better... If You know how fast your extruder reacts to temperature changes (as in if you increase temperature 5c how many cc's of plastik do you extrude in that time..)

You could then place temperatur commands to into the Gcode depending on upcoming flowrate and your nozzle behaviour...

eras commented 12 years ago

I think direct temperature adjustment commands would require a lot of information in Slic3r and would likely mess with the current PID controller operation in Marlin.

One alternative solution would be to have some commands in Marlin that would allow Slic3r to tell more information about the print to it. Such as "within next y seconds (or millimeters?) x mm of filament will be extruded". These kind of commands could be inserted during the creation of g-code or possibly during post processing and Marlin would be able to use those predictions to adjust the flow similarly as it does now with autotemp.

StavrosD commented 12 years ago

It's not difficult to implement an algorithm for required temp prediction.

I suggest a simple solution. You need at least five new parameters:

  1. Specific heat of the filament
  2. Specific weight of the filament
  3. Delay - the response delay of the heat transfer from the time you set the resistor voltage until the filament goes to the hot-end .
  4. power efficiency - the percentage of the resistor heat absorbed by the filament.
  5. Ambient temperature. An extra thermometer may be needed, but I think it is safe to use the start-up temp as the ambient temperature.

Then you need to calculate the feed_per_second.

The required wattage needed to heat the filament at the requirement temperature is (specific weight * feed_per_second/1second) x Specific Heat x Temperature rise x 1second.

There is no need for a new PID controller.

jfpion commented 12 years ago

may be it could be easier to see with the marlin dev team to increase the marlin buffer ?

alranel commented 10 years ago

This can be implemented as a post-processing script, since all needed information can be easily extracted from the file itself or comes from user anyway.

lordofhyphens commented 8 years ago

Going to close this, as it is fixable with a post-process script. If someone wants to write one and share it I'll add it, but I don't think this needs to go into the main slic3r UI either.

lordofhyphens commented 8 years ago

Reopening issue to make it easily visible to someone looking at the PR milestone.

mirage335 commented 8 years ago

Slic3r, knowing the layer time, has more knowledge about temperature requirements than does firmware. Just as the fan cooling is adjusted by layer time, it would be great to adjust temperature as well. Best process would be to vary cooling, extrusion temperature, and bed temperature from calculations of thermal mass and total energy deposition.

Ideally, the entire model should remain at a constant temperature throughout printing.