How-to Print Queue and Automated Print Cycle
Machine: Prusa-Style machines with heat bed, using Duet Controller is convenient e.g. Prusa MK3, Cetus MK3, MakerGear M2
Bed Surface: Clean Glass using Isopropyl alcohol (I use Ikea LOTS mirror because of the quality and availability)
Filament: Tested working with typical PLA, PETG but should works with any materials which can be print on the glass surface and removed easily.
Model Size: Base 10x10cm (Width x Length) or bigger, Height: 2-3cm shorter than the maximum height of the machine.
The important aspect for the removal process is to lift the model up vertically instead of pushing horizontally. There's some strong force, that I feel like the vacuum, which prevented the model to move if push from the sides even if it was once removed. From my tests, I can only remove small models if push horizontally which also stress the gantry a bit.
Leveling the bed Manually level the bed or using manual/auto mesh bed compensation and make sure you get a good first layer adhesion, while it is not too squished or too high.
Add sprue Add 1mm cylinder in the model to an area that can be cleanly cut or easily broken off when the print finished. It can be added within your slicer software without modifying the original model. The sprue height should be 10-20mm higher so the model doesn't touch the heat block when ejecting. The tip of sprue is the area where the nozzle will be stopped.
Test print We will simulate some ejection steps first. The test model should be around the same footprint of your target model, with at least 1-3 mm thick so it is not flexible. e.g. 15cm x 15cm x 3mm rectangular plate. Test printing your model using the right temperature for heat bed, which doesn't warp your model or make it too sticky to the glass, then wait for the model to cool down after finished printing. Try pulling the model up vertically from the sprue, which should take only a little hand force to do if the first layer height is correct. Pay attention to the waiting time and the temperature that the model can be removed successfully because this is the value that you will be used in your ending script of the print. e.g. printing PLA at 60c heated bed, and the model can be successfully removed when the heat bed go down to 32c (which takes 5 minutes from 40c ... Duet's M190 command monitor the bed only when it is over 40c ).
Create End.g Macro This is the end script which will be called at the end of your model gcode, the essential steps are:
; ###Cool down###
; Wait 120 Seconds for nozzle to cool down to under the Glass Temperature of material e.g. My PLA is 60 Celsius
; Wait for Heated Bed to Cool down to 40 celsius
; Wait 600 Seconds for the heat bed to cool down to 32 celsius e.g. My PLA can be removed easily from the heat bed when it reach 32 celsius
;Set relative positioning
;Move Z up 20mm, the nozzle will pull up the model effortlessly
G1 Z+20 F1000
###Drop the model###
;Move X,Y to edge of print bed, choose the suitable X,Y values for your printer
G1 Y-999 X999 F1000
;Heat the extruder to 200 celsius, so the PLA at the nozzle tip melts and the model drops from it around the corner of the heat bed. The model should fall to the table by gravity if placed the sprue at the other corner (Adjusted the location to suited your machine)
;Extruder heater off
###Push the model outside printing area###
; Slowly push the model out of printing area, this should be carefully planned if the model has an irregular shape. It can be easier if you have a mechanical push part on X/Y and set up the printing area to facilitate the ejection process.
G1 Y900 F1000
G28 X999 Y999 Z999
Test End.g Macro Test your macro and refined it before use is a good idea. You will actually see how thing works at this time.
Create trigger2.g Go to System directory using System editor in your Duet Web Control and create trigger2.g (2-9 will do) and add this:
; Switch off trigger2.g
M581 Z S-1 T2 C
;Wait for current moves to finish
;Wait 10 Seconds (can be omitted or changes)
; Print a.gcode, this is your xxx.gcode in your SD card to be printed
- Create CallTrigger2.g Macro
; Set up trigger2.g
M581 Z S0 T2 C0
; Execute trigger2.g
Test CallTrigger2.g Macro Test run your macro, it should start printing a.gcode now.
Putting them together Go to your slicer, loaded your model, add sprue, finish settings and put End.g and CallTrigger2.g in the ending script by adding this 2 lines:
; Run end.g macro
; Run CallTrigger2.g macro
Save the file The file name should be the same as one in CallTrigger2.g, in this example is a.gcode
Print them Congratulation! Now your printer should print a.gcode repeatedly without manual removal process .. with glass-like finishing at the bottom side
You can continuously print only one or many sets of model by using more triggerX.g files e.g. a.gcode call trigger2.g which print b.gcode, b.gcode call trigger3.g which print c.gcode and so on. Named the folder and copy that trigger set to /sys when you want to print them. This way, you could have many print sets with a limited number of triggerX.g.
Also, triggerX.g can be changed, modified without stop printing until the filament run out. You can print set A two times, then set B four times and so on with some planning, a webcam and come back a few times to delete, copy/paste trigger sets in Duet Web Control.
- The process was simplified, to make it easier to understand.
- Now you get the idea, So, you should customize/modify and test your processes e.g. nozzle priming, heat bed temperature, removal, ejection that suitable for your machine before you begin your production run.
- I think the process is not restricted to Duet only. With some more researches and knowledges, other controllers and firmwares should be able to do it too.
- I'll add more videos, photos and details later on..
- I'm curious what is the biggest footprint area that this method works because I don't have big printer. Please post it, if you tried it succesfully with big prints.
Sanjay Mortimer, RepRap Auto Printing - Ejection of print and starting of new print.
P&U, 3d printer: auto removing of printed object