Gör din 3D-skrivare till en självgående maskin - med automatisk utmatning, utskriftsköer och ändlösa loopar!

Gör din 3D-skrivare till en självgående maskin - med automatisk utmatning, utskriftsköer och ändlösa loopar!

Låt oss komma igång direkt! Om du har en Klipper-skrivare är det hela superenkelt - eftersom dessa funktioner är integrerade direkt i Klipper-firmware. Ändå förbises de ofta.

Vi använder Orca-slicern i den här guiden, men det hela fungerar också med vilken annan slicer du vill.


‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️

Följande instruktioner avser redigering av G-kod och firmware. Om du gör misstag här kan du skada din skrivare. Från och med nu agerar du på egen risk!

‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️ VARNING ‼️


Upprätta en utskriftskö

Öppna Orca Slicer och gå till enhetsinställningarna. Gå sedan till maskinalternativ (för Mainsail) eller konfiguration (för Fluidd) i det vänstra verktygsfältet. Öppna filen moonraker.conf där och lägg till följande:

[job_queue]
load_on_startup: True
automatic_transition: True
job_transition_delay: 10
job_transition_gcode: CLEAR_BED

Se också till att följande också ingår:

[file_manager]
queue_gcode_uploads: True
enable_object_processing: False

Spara filen och starta om systemet.

Detta ställer in kön - ett utskriftsjobb följer automatiskt efter nästa. Det är precis vad de två första raderna gör. Transition delay ser till att det blir 10 sekunders paus mellan utskriftsjobben - du kan naturligtvis justera detta värde efter behov. Den s.k. övergångs-G-koden är den G-kod som körs mellan två utskriftsjobb. Här måste du alltså ange att skrivaren automatiskt ska mata ut den färdiga utskriften innan nästa utskrift påbörjas.

Gå nu tillbaka till maskinen och öppna filen gcode_macro.cfg. Infoga följande där:

[gcode_macro CLEAR_BED]

G-kod:

M190 S30 #wait for bed temp to be 30
G91 #relative positioning
G1 Z10 #Raise Z10
G90 #absolute positioning
G1 X110 Y218 F3000 #Move printhead to middle and back
G1 Z1 #Move printhead down
G90 #absolute positioning
G1 X110 Y1 Z1 F2400 #Push Print off

Detta makro rensar byggplattan mellan två utskriftsjobb. Det första kommandot väntar tills byggplattan har svalnat till 30 °C. 30 °C fungerade bra för oss - vi använde en texturerad PEI-platta från 3DJake. Om du använder en annan platta eller ett annat filament kan du behöva experimentera lite här. För våra tester använde vi bara vår 3DJake ecoPLA.

G91 aktiverar relativ positionering - det innebär att alla efterföljande förflyttningskommandon refererar till skrivhuvudets aktuella position. Med G1 rör sig skrivhuvudet lite uppåt och bort från den utskrivna delen. G90 växlar sedan tillbaka till absolut positionering - skrivhuvudet flyttas nu till fasta XY-koordinater i utskriftsområdet, oavsett var det befinner sig för närvarande. Nästa G1-kommando flyttar skrivhuvudet exakt till mitten av X-axeln och längst bak i skrivbädden med en hastighet på 3000 mm/min. Sedan flyttas skrivhuvudet ner till 1 mm ovanför bädden med G1, och med det sista G90-kommandot skjuts den färdiga modellen framåt.

Det är i princip allt! Nu behöver du bara förbereda och skriva ut en fil - och sedan skicka nästa direkt. På enhetssidan ser du att en kö har startats. Så snart den första utskriften är klar utlöses CLEAR_BED-makrot automatiskt. Skrivaren väntar sedan tills bädden har svalnat till 30 °C och rensar sedan modellen. Utan någon åtgärd från din sida!


Upprepa en utskrift i en ändlös slinga

Okej, nu har vi koll på det här med köer. Men vad händer om du vill skriva ut samma fil om och om igen? Det finns kommandot SD_LOOP för det.

För att göra detta går du helt enkelt till din printer.cfg och lägger till avsnittet [sdcard_loop] någonstans - den exakta platsen spelar egentligen ingen roll. Detta aktiverar i princip alternativet att köra utskrifter i en loop. Nu behöver du bara ett lämpligt G-code-kommando för att starta det hela. Det bästa sättet att göra detta är direkt i skärmaskinen - jag skulle rekommendera att du skapar en separat utskriftsprofil för detta. På så sätt kan du enkelt växla fram och tillbaka mellan "normal utskrift" och "looputskrift".

I din skrivarprofil går du till maskinens G-koder och anger följande i start-G-koden: SDCARD_LOOP_BEGIN COUNT=5. I det här fallet upprepas utskriften 5 gånger. Du kan naturligtvis justera värdet - och om du vill att utskriften ska upprepas ett oändligt antal gånger, ställer du helt enkelt in COUNT=0.

Vi använder inte någon utskriftskö, men du kan ändå använda samma G-kodsmakro för att rensa byggplattan. Här har du två alternativ: Antingen kopierar du innehållet i det makro som vi skapade tidigare direkt till G-koden i slutet av din skärmaskin - eller så skriver du helt enkelt kommandot CLEAR_BED i G-koden i slutet, förutsatt att du redan har skapat makrot i din macro.cfg.

Mycket viktigt: SDCARD_LOOP_END måste stå i slutet av din End-G-kod. Detta är signalen till skrivaren att loopen slutar här. Allt mellan SDCARD_LOOP_BEGIN COUNT=5 och SDCARD_LOOP_END upprepas på motsvarande sätt.

Och nu spara - och sedan är det bara att börja skriva ut. Din loop kommer att köras automatiskt!

När utskriften är klar ligger förloppsindikatorn helt enkelt kvar på 99 % tills temperaturen på skrivarbädden har sjunkit till 30 °C. Först då tas modellen bort automatiskt. Först då tas modellen bort automatiskt - och sedan startar nästa körning.

Om du vill stoppa slingan efter den aktuella utskriften kan du helt enkelt ange SDCARD_LOOP_DESIST i konsolen. Nästa utskrift kommer då inte längre att startas.


Marlin-skrivare

Och om du inte har en Klipper-skrivare? Inga problem - du kan göra något som liknar det vi just har visat. Du behöver bara anpassa End-G-koden så att din skrivare automatiskt matar ut den färdiga utskriften. Grundidén är densamma, men värdena kan skilja sig åt beroende på skrivarmodell.

Låt oss ta en närmare titt:

M190 S30 #wait for bed temp to be 30
G91 #relative positioning
G1 Z10 #Raise Z10
G90 #absolute positioning
G1 X110 Y218 F3000 #Move printhead to middle and back
G1 Z1 #Move printhead down
G90 #absolute positioning
G1 X110 Y1 Z1 F2400 #Push Print off

Du kan i princip använda de kommandon som visas här för alla skrivare - men se upp: G1-kommandona för X och Y (rad 5 och 8) är endast lämpliga för K1-skrivaren eller liknande CoreXY-skrivare med identiskt installationsutrymme.

Du måste veta hur stort ditt byggutrymme är. Om din byggplatta till exempel är 250 mm bred bör rad 5 se ut så här:

G1 X125 Y248 F3000 #Move printhead to middle and back

Detta flyttar skrivhuvudet till mitten av X-axeln (dvs. 125 mm från kanten) och hela vägen bakåt på Y-axeln, bara 2 mm från bakkanten.

Linje 8 bör då se ut så här:

G1 X125 Y1 Z1 F2400 #Push Print off

Detta håller skrivhuvudet i mitten av X-axeln, men flyttar det hela vägen till framsidan, bara 1 mm från framkanten, för att trycka av utskriften från bädden.

Tänk på: Den här metoden är avsedd för att skjuta med skrivhuvudet. Du behöver dock inte nödvändigtvis använda skrivhuvudet för detta - ofta är det till och med bättre att använda hela portalramen för att skjuta.

Detta är dock problematiskt med K1 eftersom remmarna är i vägen. Av denna anledning bör så lite kraft som möjligt appliceras på portalen - vilket är anledningen till att vi rekommenderar att du använder skrivhuvudet för att skjuta på K1.

Om du vill skjuta med gantry behöver du bara ändra skrivarhuvudets position på X-axeln. Flytta det helt enkelt åt sidan. För en skrivarbädd med en bredd på 250 mm kan raderna 5 och 8 se ut så här:

Rad 5: G1 X1 Y248 F3000 #Move printhead to middle and back
Rad 8: G1 X1 Y1 Z1 F2400 #Push Print off

Och hur är det med looping med Marlin? Om du har en Marlin-skrivare kan du i princip göra exakt samma sak som med looping under Klipper - bara med kommandot M808. Principen förblir densamma: du ställer in loopen med hjälp av start- och slut-G-koden i din slicer. Du kan också hitta mer detaljerad information och exempel på Marlins webbplats - det är värt en titt om du vill fördjupa dig.


Looping för skrivare som inte är Klipper

Om du inte har en Klipper-skrivare kan du ändå skapa en loop - helt enkelt genom att bifoga flera G-kodfiler och skriva ut dem via SD-kortet. Alternativt kan du också exportera det hela som en .3mf-fil - det är i princip bara en komprimerad mapp.

Så här fungerar det med Orca Slicer:

Slice ditt tryck som vanligt och exportera det sedan som en "Plate Sliced File". Du kan öppna den här filen med en uppackare som WinRAR - du hittar sedan G-koden i metadatamappen. Öppna filen i en textredigerare. Nu kan du kopiera hela innehållet. Om du vill skriva ut samma fil flera gånger klistrar du helt enkelt in den kopierade koden flera gånger i följd. Om du vill skapa en utskriftskö med olika modeller måste du även skära ut de andra modellerna, exportera deras G-kod och sedan klistra in den efter den första G-koden.

Spara nu helt enkelt den redigerade textfilen och stäng den. WINRAR kommer att fråga dig om du vill uppdatera arkivet med ändringarna - klicka på "Ja" så kommer dina ändringar att tillämpas. Öppna sedan .3mf-filen igen i Orca Slicer. I förhandsgranskningen ser du nu att modellerna överlappar varandra och att utskriftstiden också har ändrats - vilket är precis vad vi vill!

Nu behöver du bara skicka filen till din skrivare - och den kommer att skriva ut och automatiskt mata ut modellen så många gånger som du har infogat G-koden.

► Om du gör det hela med en Bambu Lab-skrivare - dvs. en modell från A-, P- eller X-serien - är processen i princip densamma. Men: Vi kan bara varmt rekommendera att du tittar på videorna från Factorian Design. Han går in på allt i extrem detalj och har verkligen lagt ner mycket arbete på att göra nödvändiga G-kodjusteringar för att perfekt matcha Bambu-skrivarna. Det är definitivt värt det om du vill göra det rätt!



Några saker att tänka på:

Redigera End-G-kod

Du kan få ett felmeddelande som säger att skrivaren måste hämta alla axlar innan CLEAR_BED-makrot kan köras. I vårt fall berodde detta på att det fanns ett M84-kommando i END_PRINT-makrot i End-G-koden. Och det här kan hända dig också - många skrivare använder makron i End G-koden i stället för att skriva varje G-kodsrad individuellt.

Vad ska man då göra? Leta i din macro.cfg efter motsvarande makro (t.ex. END_PRINT) och redigera det direkt där. Om den fullständiga G-koden finns i fältet End G-code kan du helt enkelt justera den där.

► Ersätt hela G-koden i slutet

För vissa skrivare - särskilt de där du inte har tillgång till makrofilerna - kan det vara nödvändigt att helt ersätta den avslutande G-koden. I sådana fall räcker det ofta med en mycket enkel kod, t.ex:

M104 S0 ; extruder heater off
M140 S0 ; heated bed heater off (if you have it)
G91 ; relative positioning
G1 E-1 F300 ; retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F9000 ; move Z up a bit and retract filament even more
G28 X0 Y0 ; move X/Y to min endstops, so the head is out of the way
M84 ; steppers off
G90 ; absolute positioning

Om din skrivare har en munstyckstorkare kan du helt enkelt infoga några G1-kommandon för att flytta munstycket över den efter utskrift och rengöra den.

► Observera utrymmeskravet

För att skrivarhuvudet ska kunna trycka av modellen från byggplattan måste det positionera sig korrekt i förväg - med andra ord behöver det tillräckligt med utrymme för att komma tillräckligt nära bädden innan det rör sig framåt och trycker av modellen.

I vårt test placerade vi skrivhuvudet längst bak på bädden. När det gäller K1 innebär detta att de bakre 55 mm av byggutrymmet inte kan användas på grund av skrivhuvudets storlek. Se därför till att mäta avståndet till skrivhuvudet innan du provar - och se till att din modell inte befinner sig i denna riskzon.

Också viktigt: själva modellstorleken. Mycket små eller platta modeller med stor kontaktyta fäster ofta för hårt - det är nästan omöjligt att trycka ut dem. Mycket stora modeller fäster också extremt starkt och är svåra att skjuta bort. I sådana fall är det oftast bättre att använda hela portalramen för att trycka - detta ger betydligt mer kraft och är mer effektivt för stora modeller än enbart skrivhuvudet.

► Vidhäftning till byggplattan

Både dålig och för bra vidhäftning kan bli ett problem: Om vidhäftningen är för svag blir det svårt att göra flera utskrifter i följd på exakt samma ställe - modellen kan lossna eller glida vid andra genomgången. Om vidhäftningen är för stark kommer skrivhuvudet inte att kunna lossa delen - och i värsta fall kan detta till och med skada din skrivare.

Lösningen på problemet? En bra byggplattan (t.ex. en högkvalitativ PEI-platta) och en perfekt justerad Z-offset är helt avgörande om du vill använda den här metoden för automatisk utmatning på ett tillförlitligt sätt.

► Lämpliga filament

Filament som kräver ett slutet hölje är inte lämpliga för denna metod - eftersom skrivarens dörr måste vara öppen för att modellen ska kunna matas ut. Det innebär att ABS, nylon, ASA och liknande material inte är lämpliga. Även PETG kan vara problematiskt eftersom det ofta fäster extremt bra och är svårt att ta bort från bädden.

► Rensningslinjer

Om din skrivare drar en rensningslinje före varje utskriftsstart bör du byta ut den mot något annat. Vi hade t.ex. en KAMP-renslinje aktiverad på vår K1. Om denna skrivs ut igen vid varje loop utan att tas bort kan det leda till problem.

Men: Skrivaren MÅSTE mata fram material före varje utskrift för att förbereda munstycket. Därför vårt tips: Byt ut rensningsledningen mot en liten bård (t.ex. 2 mm) - denna kastas sedan ut tillsammans med modellen.

► Varm hotend = risk för utflöde

Se till att den heta änden stängs av när byggplattan svalnar - annars kan material fortsätta att läcka ut (osa) och ditt första lager kan bli förstört. Detta kan hända om du tar bort END_PRINT-makrot helt och hållet. I detta fall körs kommandot för att stänga av hotend inte längre automatiskt.

Infoga ett M104 S0-kommando i din End-G-kod - detta kommando stänger av värmeblocket. Viktigt: Det måste placeras före SDCARD_LOOP_END, annars kommer det inte att utföras korrekt.

► Använd gravitationen!

Om din modell inte faller helt av bädden under utmatningen kan du helt enkelt använda dig av tyngdkraften! En liten vinkel på skrivaren - som visas i videon från Factorian Design - kan öka tillförlitligheten hos den automatiska utmatningen avsevärt.

Men var försiktig: Om du lutar din skrivare ska du göra det stabilt och säkert - och se till att utföra en ny kalibrering av inmatningsformningen efteråt för att fortsätta få rena utskriftsresultat!

► Rulla ner - men gör det på rätt sätt!

Om du har en bedlinger kan det hända att den utmatade delen fastnar mellan sängen och skrivarhuset. Lägg då en bit papper eller kartong stadigt under skrivarbädden - då kan modellen rulla ner rent utan att fastna någonstans.

► Byggplatta - förstärkning av utmatningen

Om du vill ha ännu mer tillförlitlig utmatning kan du trycka en liten pusherplate - en skruvbar platta för skrivhuvudet som kan skjuta utskriften från bädden bättre. Men: Se till att du är uppmärksam på skrivarens maximala rörelseområde! Plåten får inte slå i eller kollidera någonstans - annars blir det snabbt en krasch.