Automated Print Farm
LeckieTech last edited by
Hi all! Looking for programming ideas for my new automated print farm build of custom printers running the new Duet 3 boards.
My current print farm of 20 modified Anycubic i3 printers pretty much run around the clock (dont worry, its not in my basement! its a commercial space with multiple fire safety measures implemented and new marlin FW!). I am trying to up our efficiency and introduce automation into our formula, especially because electricity where I live is 50% cheaper at night! Currently, I would put many parts on a build plate for overnight printing before we leave the shop for the day and sometime in the middle of the night they would be finished. We come in in the morning and clear the beds to start the next round. Its not very efficient because for at least 6-8 hours a day the printers are doing nothing at all and it actually does take a fair bit of time just to load the files to each printer even with octoprint on each printer and a 4k 42in monitor with all the print windows always open ready for drag and drop.
I have built a specialized test printer just for a very specific printing application, the Z actually rides along with the X with only 40mm of travel! I cant say what the parts are that we print are because I have an NDA contract with the company who keeps my lights on.. But I can say that parts I print are very similar in size but have many different shapes. There are about 6000 unique part files that we print for this company. This custom machine, I have it tuned absolutely perfectly. It NEVER fails to lay down the perfect first layer and when I say never, I mean this machine will start 15 prints a day and never fail a single print (many thanks to Hiwin rails!). We just have to keep our Kapton covered bed clean with alcohol at least once a week and I give it a hotend rebuild once every other month or so.. For bed clearing I have an arduino controlled mechanism that clears the bed. It is triggered by M300 at the end of a print. The arduino will turn on a blower fan over the part to rapidly cool, wait for the bed temp to reach 30c and then eject the part which is actually a very complicated process with many moving parts which is the reason for the arduino to handle it. The part is then moved off the bed and dropped into a bucket where an IR beam confirms the part has indeed been fully ejected.
So where I am kinda stuck is actually print queueing. Right now, I slice all my files with S3D with the M300 to eject the part at the end of the file. Then I copy and paste each part gcode file into one single file so they will all run as one. I use G4 to wait in between prints while the arduino is doing its thing. How can I make this easier!? Id like to use M32 somehow and I know I can trigger it with duet using my part clearing IR sensor. But how can I load the NEXT file and not just a file with a specific name so that exact name does not need to be edited each time?
@LeckieTech Perhaps make a macro that calls each file, followed by M300 when it returns. eg
M23 file1.g ; select file M24 ; print file M300 ; clear bed G4 S600 ; Wait for bed to clear M23 file2.g ; select file M24 ; print file M400 ; make sure queue is empty G4 S600 ; Wait for bed to clear etc...
However, you may be able to use the new conditional gcode features in RRF 3.01 to loop through a directory of files, or generate a file name with sequential numbering. I haven't looked into this, but others may be able to guide you.
Danal last edited by Danal
Duet printers web interface is HTTP for RepRap 2 firmware, and a websocket for RepRap 3.
If you can write the code for an arduino to clear the bed, you should very easily be able to write a script that will print every file dropped in a certain directory, or similar. This could run on a PC, or a Raspberry Pi, or whatever.
Which version of firmware are you running, 2 or 3?
One possibility is to use a PC to upload jobs to farm printers controlled by Duet 2 boards, via HTTP/Ethernet. The jobs are stored on the SD cards of the individual Duets and run from there. The PC also interrogates the printers via HTTP to determine when a job is complete; then it removes the printed object (using commands sent to the Duet, or a separate system) and uploads a new job.
I know we have at least one industrial customer using this or a similar method. If you go this route then it's best to use industrial grade SD cards, not consumer grade.