Fă-ți imprimanta 3D să lucreze singură – cu Auto-Ejection, cozi de imprimare și bucle infinite!

Hai să începem direct! Dacă ai un imprimantă cu Klipper, totul e super simplu – pentru că aceste funcții sunt integrate direct în firmware-ul Klipper. Totuși, sunt adesea trecute cu vederea.

Pentru acest ghid folosim Orca Slicer, dar funcționează la fel și cu orice alt slicer preferi.


‼️ AVERTISMENT ‼️ AVERTISMENT ‼️ AVERTISMENT ‼️ AVERTISMENT ‼️ AVERTISMENT ‼️

Instrucțiunile următoare se referă la editarea G-Code-ului și a firmware-ului. Dacă greșești aici, îți poți deteriora imprimanta. De acum înainte acționezi pe propria răspundere!

‼️ AVERTISMENT ‼️ AVERTISMENT ‼️ AVERTISMENT ‼️ AVERTISMENT ‼️ AVERTISMENT ‼️


Configurarea unei cozi de imprimare

Deschide Orca Slicer și mergi la setările dispozitivului. Apoi, în bara laterală din stânga, intră la opțiunile pentru mașină (în Mainsail) sau la Configurare (în Fluidd). Deschide acolo fișierul moonraker.conf și adaugă următoarele:

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

Asigură-te, de asemenea, că ai și:

[file_manager]
queue_gcode_uploads: True
enable_object_processing: False

Salvează fișierul și repornește sistemul.

Astfel configurezi coada – un job de imprimare urmează automat după celălalt. Exact asta fac primele două linii. Întârzierea de tranziție asigură o pauză de 10 secunde între joburi – bineînțeles, poți ajusta această valoare cum dorești. Așa-numitul „Transition G-Code” este G-Code-ul executat între două lucrări. Așadar, aici trebuie să specifici ca imprimanta să ejecteze automat printul finalizat înainte de a porni următorul.

Acum întoarce-te la machine și deschide fișierul gcode_macro.cfg. Acolo inserează:

[gcode_macro CLEAR_BED]

G-Code:

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

Acest macro eliberează patul între două lucrări. Prima comandă așteaptă ca patul să se răcească la 30 °C. 30 °C a funcționat bine pentru noi – am folosit o placă PEI texturată de la 3DJake. Dacă folosești o altă placă sau alt filament, e posibil să fie nevoie de puțină experimentare. Pentru testele noastre am folosit exclusiv 3DJake ecoPLA.

G91 activează poziționarea relativă – adică toate mișcările următoare se raportează la poziția curentă a capului. Cu G1, capul urcă puțin și se îndepărtează de piesă. Apoi G90 revine la poziționarea absolută – capul se mișcă acum către coordonate XY fixe în aria de imprimare, indiferent unde se află. Următoarea comandă G1 duce capul exact la mijloc pe axa X și complet în spate pe axa Y, cu o viteză de 3000 mm/min. După aceea, capul coboară la 1 mm deasupra patului, iar cu ultimul G90 capul împinge modelul finalizat în față și îl dă jos.

Asta e, în mare! Acum trebuie doar să pregătești un fișier și să-l printezi – apoi să trimiți imediat următorul. Pe pagina dispozitivului vei vedea că a fost pornită o coadă. De îndată ce primul print se termină, macro-ul CLEAR_BED este declanșat automat. Imprimanta așteaptă până când patul ajunge la 30 °C, apoi dă modelul jos. Fără intervenția ta!


Repetarea unui print în buclă infinită

Ok, am rezolvat partea cu cozile. Dar dacă vrei să printezi același fișier iar și iar? Pentru asta există comanda SD_LOOP.

Trebuie doar să intri în printer.cfg și să adaugi undeva secțiunea [sdcard_loop] – locul exact nu contează prea mult. Astfel activezi în principiu posibilitatea de a rula printuri în buclă. Acum îți mai trebuie doar o comandă G-Code potrivită pentru a porni totul. Cel mai bine e să o faci direct în slicer – îți recomand să creezi un profil de imprimare separat. Astfel poți comuta comod între „print normal” și „print în buclă”.

În profilul imprimantei mergi la G-Code-urile pentru mașină și, în Start G-Code, introdu: SDCARD_LOOP_BEGIN COUNT=5. În acest exemplu, printul se repetă de 5 ori. Poți ajusta valoarea – iar dacă vrei repetare nelimitată, setezi pur și simplu COUNT=0.

Chiar dacă nu folosim o coadă de imprimare, poți utiliza același macro G-Code pentru eliberarea patului. Ai două opțiuni: Fie copiezi conținutul macro-ului creat mai devreme direct în End G-Code-ul slicerului, fie scrii pur și simplu comanda CLEAR_BED în End G-Code, cu condiția să fi definit deja macro-ul în macro.cfg.

Foarte important: La finalul End G-Code-ului trebuie să se afle SDCARD_LOOP_END. Acesta este semnalul pentru imprimantă că aici se încheie bucla. Tot ce se află între SDCARD_LOOP_BEGIN COUNT=5 și SDCARD_LOOP_END va fi repetat de atâtea ori cât ai setat.

Acum salvează – și pornește imprimarea. Bucla rulează automat!

După finalizarea printului, bara de progres va rămâne la 99 % până când temperatura patului scade la 30 °C. Abia apoi modelul este îndepărtat automat – și pornește următoarea rulare.

Dacă vrei să oprești bucla după runda curentă, poți introduce în consolă SDCARD_LOOP_DESIST. Următorul print nu va mai porni.


Imprimante cu Marlin

Și dacă nu ai imprimantă cu Klipper? Nicio problemă – poți face ceva foarte asemănător cu ce am arătat mai sus. Trebuie doar să ajustezi End G-Code-ul astfel încât imprimanta să ejecteze automat printul finalizat. Ideea de bază este aceeași, însă valorile pot diferi în funcție de model.

Să reluăm pe scurt:

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

Comenzile de mai sus pot fi folosite, în principiu, pe orice imprimantă – dar atenție: Comenzile G1 pentru X și Y (linia 5 și 8) sunt potrivite doar pentru imprimanta K1 sau alte CoreXY cu volum identic.

Trebuie să știi cât de mare este volumul tău de imprimare. Dacă, de exemplu, patul are 250 mm lățime, linia 5 ar trebui să arate astfel:

G1 X125 Y248 F3000 #Move printhead to middle and back

Astfel, capul se duce la mijloc pe axa X (adică la 125 mm de margine) și complet în spate pe axa Y, la doar 2 mm de marginea din spate.

Apoi linia 8 ar trebui să fie:

G1 X125 Y1 Z1 F2400 #Push Print off

Astfel, capul rămâne la mijloc pe axa X, dar se mișcă complet în față, la 1 mm de marginea frontală, pentru a împinge piesa de pe pat.

Ține minte: Această metodă este gândită pentru împingerea cu capul de imprimare. Nu e obligatoriu să folosești capul – adesea e chiar mai bine să folosești întregul portal (gantry) pentru împingere.

La K1 este însă problematic, deoarece curelele stau în cale. De aceea, acolo ar trebui aplicată o forță cât mai mică pe portal – recomandăm, pentru K1, să împingi cu capul.

Dacă vrei să împingi cu gantry-ul, trebuie doar să schimbi poziția capului pe axa X. Mută-l într-o parte. Pentru un pat de 250 mm lățime, liniile 5 și 8 ar putea arăta așa:

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

Și cum rămâne cu „looping”-ul în Marlin? Dacă ai o imprimantă cu Marlin, poți face practic același lucru ca la Klipper – doar că folosești comanda M808. Principiul rămâne același: configurezi bucla prin Start și End G-Code în slicer. Informații și exemple găsești și pe site-ul Marlin – merită aruncat un ochi dacă vrei să intri în detalii.


Looping pentru imprimante non-Klipper

Chiar dacă nu ai Klipper, poți totuși seta o buclă – foarte simplu, concatenând mai multe fișiere G-Code și imprimându-le de pe cardul SD. Alternativ, poți exporta totul ca fișier .3mf – practic este doar un folder comprimat.

Iată cum faci în Orca Slicer:

„Slice”-uiește modelul ca de obicei și exportă-l ca „Plate Sliced File”. Poți deschide acest fișier cu un arhivator precum WinRAR – în folderul metadata vei găsi G-Code-ul. Deschide fișierul într-un editor de text. Acum poți copia întregul conținut. Dacă vrei să printezi același fișier de mai multe ori, lipește codul copiat de mai multe ori, unul după altul. Dacă vrei să faci o coadă cu modele diferite, trebuie să „slice”-uiești și celelalte modele, să le exporți G-Code-ul și apoi să-l inserezi după primul G-Code.

Salvează fișierul text editat și închide-l. WINRAR te va întreba dacă vrei să actualizezi arhiva cu modificările – apasă „Da”, iar schimbările vor fi preluate. Deschide apoi din nou fișierul .3mf în Orca Slicer. În previzualizare vei vedea că modelele se suprapun și timpul de imprimare s-a schimbat – exact asta ne dorim!

Acum nu-ți rămâne decât să trimiți fișierul la imprimantă – iar aceasta va printa modelul de câte ori ai inserat G-Code-ul, ejectându-l automat de fiecare dată.

► Dacă faci asta cu un Bambu Lab – adică din seriile A, P sau X – principiul e același. Însă: Îți recomandăm cu tărie să vezi videoclipurile lui Factorian Design. Intră extrem de detaliat în subiect și a depus multă muncă pentru a adapta perfect modificările de G-Code la imprimantele Bambu. Merită cu siguranță dacă vrei să iasă ca la carte!



Câteva lucruri de avut în vedere:

Editarea End G-Code

Poate primești un mesaj de eroare care îți spune că imprimanta trebuie să facă homing pe toate axele înainte ca macro-ul CLEAR_BED să poată fi executat. La noi s-a întâmplat din cauză că în macro-ul END_PRINT, din End G-Code, exista o comandă M84. Ți se poate întâmpla și ție – multe imprimante folosesc macro-uri în End G-Code, în loc să scrie fiecare linie de G-Code separat.

Ce e de făcut? Caută în macro.cfg macro-ul în cauză (de ex. END_PRINT) și editează-l direct acolo. Dacă întregul G-Code se află în câmpul End G-Code, îl poți ajusta direct acolo.

► Înlocuirea completă a End G-Code

La unele imprimante – mai ales la cele la care nu ai acces la fișierele macro – poate fi necesar să înlocuiești complet End G-Code-ul. În astfel de cazuri, adesea este suficient un cod foarte simplu, de exemplu:

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

Dacă imprimanta are un nozzle wiper, poți pur și simplu să adaugi câteva comenzi G1 pentru a deplasa duza peste acesta și a o curăța după imprimare.

► Ține cont de spațiul necesar

Pentru ca capul să poată împinge modelul de pe pat, trebuie mai întâi să se poziționeze corect – adică are nevoie de suficientă libertate de mișcare pentru a se apropia suficient de pat înainte de a avansa și a împinge piesa.

În testul nostru am poziționat capul în spatele patului. La K1 asta înseamnă concret: ultimii 55 mm ai volumului sunt inutilizabili din cauza dimensiunii capului. Măsoară neapărat spațiul liber al capului înainte să încerci – și asigură-te că modelul tău nu se află în această zonă de risc.

La fel de importantă: dimensiunea modelului. Modelele foarte mici sau foarte plate, cu suprafață mare de contact, aderă adesea prea puternic – împingerea reușește greu. Modelele foarte mari aderă, de asemenea, extrem de puternic și se desprind cu dificultate. În astfel de cazuri, de obicei e mai bine să împingi cu întregul portal – obții mult mai multă forță și este mai eficient pentru modele mari decât capul singur.

► Aderența pe pat

Aderența prea slabă și cea prea puternică pot fi ambele problematice: dacă aderența e slabă, va fi dificil să rulezi mai multe printuri la exact același loc – modelul se poate desprinde sau deplasa deja la a doua rulare. Dacă aderența e prea puternică, capul nu reușește să desprindă piesa – și, în cel mai rău caz, poți chiar avaria imprimanta.

Soluția? Un pat bun (de ex. o placă PEI de calitate) și un Z-Offset reglat perfect sunt absolut esențiale ca această metodă de auto-ejectare să fie fiabilă.

► Filamente potrivite

Filamentele care necesită carcasă închisă nu sunt potrivite pentru această metodă – deoarece ușa imprimantei trebuie să rămână deschisă pentru ca modelul să poată fi ejectat. Asta înseamnă: ABS, Nylon, ASA și materiale similare ies din discuție. Chiar și PETG poate fi problematic, deoarece adesea aderă foarte puternic și se desprinde greu de pe pat.

► Purge Lines

Dacă imprimanta trasează o „purge line” înainte de fiecare start, ar trebui să o înlocuiești cu altceva. La K1, de exemplu, am avut activă o KAMP Purge Line. Dacă e imprimată la fiecare buclă, fără a fi îndepărtată, poate crea probleme.

Totuși, imprimanta TREBUIE să extrudă material înainte de fiecare print pentru a pregăti duza. De aceea, recomandarea noastră: înlocuiește purge line-ul cu un mic brim (de ex. 2 mm) – acesta va fi apoi ejectat împreună cu modelul.

► Hotend fierbinte = risc de oozing

Ai grijă ca hotend-ul să se oprească în timp ce patul se răcește – altfel poate continua să curgă material (oozing) și să strice primul strat. Se poate întâmpla dacă elimini complet macro-ul END_PRINT. În acest caz, comanda de oprire a hotend-ului nu mai este executată automat.

Adaugă în End G-Code o comandă M104 S0 – aceasta oprește blocul de încălzire. Important: poziționeaz-o neapărat înainte de SDCARD_LOOP_END, altfel nu va fi executată corect.

► Profită de gravitație!

Dacă modelul nu cade complet de pe pat la ejectare, poți apela pur și simplu la gravitație! O ușoară înclinare a imprimantei – așa cum arată Factorian Design în video – poate crește mult fiabilitatea auto-ejectării.

Dar atenție: Dacă înclini imprimanta, fă-o stabil și în siguranță – și efectuează apoi neapărat o nouă calibrare pentru Input Shaping, ca să obții în continuare rezultate curate!

► Rulare în jos – dar corect!

Dacă ai un bedslinger, se poate întâmpla ca piesa ejectată să rămână prinsă între pat și carcasa imprimantei. Pune pur și simplu o bucată de hârtie sau carton fix sub pat – astfel modelul va rula curat în jos, fără să se blocheze.

► Pusher Plate – „booster”-ul de ejectare

Dacă vrei și mai multă fiabilitate la ejectare, poți printa o mică „Pusher Plate” – adică o plăcuță de montat pe cap, care împinge mai eficient piesa de pe pat. Însă: Ai mare grijă la cursa maximă a imprimantei! Plăcuța nu trebuie să agațe sau să lovească nimic – altfel riști un crash.