Направете своя 3D принтер автономен – с автоматично изваждане, опашка за печат и непрекъснат цикъл!

Направете своя 3D принтер автономен – с автоматично изваждане, опашка за печат и непрекъснат цикъл!

Да започваме директно! Ако разполагате с Klipper-принтер, всичко това е супер лесно – защото тези функции са вградени директно във фърмуера на Klipper. Въпреки това често биват пренебрегвани.

За това ръководство използваме Orca Slicer, но същото важи и за всеки друг Slicer по ваш избор.


‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️

Следващото ръководство включва редактиране на G-Code и фърмуер. Ако допуснете грешка тук, можете да повредите принтера си. Оттук нататък действате на собствена отговорност!

‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️ ПРЕДУПРЕЖДЕНИЕ ‼️


Настройка на опашка за печат

Отворете Orca Slicer и преминете към настройките на устройството. След това в страничното меню отидете на „опции на машината“ (в Mainsail) или на „конфигурация“ (в Fluidd). Там отворете файла moonraker.conf и добавете следното:

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

Уверете се също, че е включено и следното:

[file_manager]
queue_gcode_uploads: True
enable_object_processing: False

Запазете файла и рестартирайте системата си.

Това ще активира опашката – една задача за печат ще започва автоматично след предишната. Първите два реда отговарят за това. Забавянето между задачите е 10 секунди, но може да го промените. Така нареченият Transition-G-Code се изпълнява между две задачи – тук трябва да зададете изваждане на готовия модел, преди да започне следващият.

Сега се върнете към machine и отворете файла gcode_macro.cfg. Там добавете следното:

[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

Това макро почиства печатното легло между задачите. Първата команда изчаква охлаждане до 30°C – за нас това работи добре с PEI-плоча от 3DJake. При други повърхности или филаменти, може да се наложи тестване. Ние използвахме само 3DJake ecoPLA.

G91 активира относително позициониране – всички движения се отнасят спрямо текущата позиция. G1 вдига и отдалечава главата от модела. G90 връща към абсолютни координати. Следващият G1 я позиционира в центъра по X и назад, със скорост 3000 mm/min. После главата слиза на 1 мм и с последния G1 избутва модела напред.

Това е всичко! Подгответе файл за печат и го стартирайте – следващият ще тръгне автоматично. На страницата на устройството ще видите активирана опашка. След като първият печат приключи, ще се изпълни макрото CLEAR_BED, леглото ще се охлади до 30°C, моделът ще бъде изваден – и започва следващият печат. Без ваша намеса!


Повтаряне на печат в безкраен цикъл

Добре, с опашката приключихме. Но какво ако искате да отпечатвате един и същ файл отново и отново? За това служи командата SD_LOOP.

Просто отворете файла printer.cfg и добавете някъде секцията [sdcard_loop] – точната позиция няма значение. Това активира възможността за цикличен печат. След това трябва само да добавите съответната G-Code команда за стартиране. Най-добре е да го направите директно в Slicer-а – препоръчваме да създадете отделен профил за печат, така че лесно да превключвате между „нормален“ и „цикличен“ печат.

В профила на принтера отидете на Машинен G-Code и в началото на Start-G-Code въведете следното: SDCARD_LOOP_BEGIN COUNT=5. В този пример печатът ще се повтори 5 пъти. Можете да промените стойността – ако желаете безкраен цикъл, задайте COUNT=0.

Ние не използваме опашка за печат, но същото макро за почистване на леглото можете да използвате и тук. Имате два варианта: копирайте съдържанието на макрото директно в End-G-Code на Slicer-а, или просто напишете командата CLEAR_BED – при условие, че макрото вече е дефинирано в macro.cfg.

Много важно: в края на End-G-Code трябва да има командата SDCARD_LOOP_END. Тя показва на принтера, че тук завършва цикълът. Всичко между SDCARD_LOOP_BEGIN COUNT=5 и SDCARD_LOOP_END ще се повтаря съответния брой пъти.

Сега запазете – и просто стартирайте печата. Цикълът вече ще се изпълнява автоматично!

Когато печатът приключи, индикаторът за прогрес ще остане на 99%, докато леглото се охлади до 30 °C. След това моделът ще бъде автоматично премахнат – и започва следващият цикъл.

Ако искате да прекъснете цикъла след текущия печат, просто въведете SDCARD_LOOP_DESIST в конзолата. Следващият цикъл няма да започне.


Marlin-принтер

А какво ако нямате Klipper-принтер? Няма проблем – можете да постигнете почти същото, както показахме. Нужно е само да промените End-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

Тези команди работят с почти всеки принтер – но внимавайте: G1-командите за X и Y (ред 5 и 8) са подходящи за K1 или подобни CoreXY-принтери с еднакъв обем.

Трябва да знаете размера на своя обем за печат. Например: ако леглото е широко 250 mm, ред 5 трябва да изглежда така:

G1 X125 Y248 F3000 #Move printhead to middle and back

Това позиционира главата в средата по X (125 mm от ръба) и почти до задния край по Y.

Ред 8 трябва да е:

G1 X125 Y1 Z1 F2400 #Push Print off

Ако желаете да използвате порталната рамка за избутване, просто променете X-координатата така, че главата да се отмести встрани. За легло с ширина 250 mm, редовете може да изглеждат така:

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

А как стои въпросът с looping при Marlin? Ако имате Marlin-принтер, може да приложите същия подход, както с Klipper – но използвайки командата M808. Принципът е същият: настройвате цикъл чрез Start- и End-G-Code в Slicer-а. Повече информация и примери ще намерите на официалния сайт на Marlin.


Looping за не-Klipper принтери

Ако нямате Klipper-принтер, пак можете да създадете цикличен печат – като просто свържете няколко G-Code файла един след друг и ги пуснете от SD картата. Алтернативно можете да експортирате всичко като .3mf файл – това по същество е компресирана папка.

Ето как става с Orca Slicer:

Слайснете модела си както обикновено и го експортирайте като „Plate Sliced File“. Отворете този файл с WinRAR – в папката metadata ще намерите G-Code-а. Отворете файла с текстов редактор. Сега можете да копирате целия му код. Ако искате да отпечатате един и същ модел няколко пъти, просто го поставете многократно един след друг. Ако искате опашка с различни модели, слайснете и тях поотделно, експортирайте G-Code-ите им и ги поставете след първия.

Запазете редактирания текстов файл и го затворете. WinRAR ще ви попита дали да актуализира архива с промените – натиснете „Да“ и промените ще бъдат записани. Отворете .3mf файла отново в Orca Slicer. В предварителния преглед ще видите, че моделите се застъпват и времето за печат се е променило – точно това искаме!

Сега просто изпратете файла към принтера – и той ще отпечатва модела толкова пъти, колкото сте вмъкнали G-Code-а, и ще ги изхвърля автоматично.

► Ако правите това с Bambu Lab принтер – например модел от серията A, P или X – процесът е почти същият. Но: силно ви препоръчваме да изгледате видеата на Factorian Design. Той обяснява всичко в детайли и е вложил много усилия да нагоди G-Code-а за Bambu-принтери. Ако искате да го направите както трябва, това си струва!



Няколко неща, които трябва да имате предвид:

Редактиране на End-G-Code

Възможно е да получите съобщение за грешка, че принтерът трябва да се хомева по всички оси, преди да изпълни макрото CLEAR_BED. При нас това се дължеше на командата M84 в макрото END_PRINT. Това може да се случи и при вас – много принтери използват макроси вместо отделни G-Code редове в края на печата.

Какво да направите? Проверете във файла macro.cfg съответното макро (например END_PRINT) и го редактирайте директно там. Ако целият End-G-Code е в едно поле, редактирайте го направо там.

► Пълна замяна на End-G-Code

При някои принтери – особено ако нямате достъп до макро файловете – може да се наложи напълно да замените End-G-Code-а. В такива случаи често е достатъчен и съвсем базов код, например:

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

Ако принтерът ви има почистващ елемент (nozzle wiper), можете да добавите няколко G1-команди, за да почистите дюзата след печат.

► Съобразете се с нужното пространство

За да може главата да избута модела от леглото, трябва да се позиционира правилно – т.е. да има достатъчно пространство да се доближи и изблъсне модела напред.

В нашия тест позиционирахме главата в задната част на леглото. При K1 това означава, че последните 55 mm от леглото са неизползваеми заради размера на главата. Измерете свободното пространство около дюзата и се уверете, че моделът ви не попада в тази зона.

Също важно: размерът на самия модел. Много малки или плоски модели с голяма контактна площ залепват силно – трудно се избутват. Много големи модели също залепват здраво. В такива случаи е по-добре да използвате цялата портална рамка за избутване – тя има повече сила от печатната глава.

► Залепване към леглото

Слабото и прекалено силното залепване са проблем: при слаба адхезия е трудно да отпечатате няколко пъти на точно същото място – моделът може да се размести. При прекалено силно залепване, главата не може да го отдели – което може дори да повреди принтера.

Решението? Качествено легло (напр. PEI плоча) и добре настроен Z-Offset – задължителни за надеждна Auto-Ejection функция.

► Подходящи филаменти

Филаменти, които изискват затворена камера, не са подходящи – защото вратата на принтера трябва да остане отворена за изхвърлянето. Това означава, че ABS, Nylon, ASA и подобни не стават. Дори PETG може да е проблематичен заради силната адхезия.

► Purge Lines

Ако принтерът ви начертава Purge Line преди печат, трябва да я замените. При нас на K1 беше активирана KAMP Purge Line. Ако при всеки цикъл се добавя нова линия, без да се премахва, може да доведе до проблеми.

Но: принтерът трябва да подава материал преди началото на печат. Затова ви препоръчваме да замените purge линията с малък брим (напр. 2 mm) – той ще се изхвърля заедно с модела.

► Горещ хотенд = риск от изтичане

Уверете се, че хотендът се изключва по време на охлаждането на леглото – иначе може да продължи да капе материал и да съсипе първия слой. Това се случва, ако премахнете макрото END_PRINT и така не се изпълнява командата за изключване на хотенда.

Добавете команда M104 S0 в края на End-G-Code-а – това изключва нагревателя. Важно: поставете я преди SDCARD_LOOP_END, иначе няма да се изпълни.

► Използвайте гравитацията!

Ако моделът не пада от леглото след избутване, използвайте гравитацията! Наклонете леко принтера – както е показано във видеото на Factorian Design – така Auto-Ejection ще е по-надеждно.

Но внимавайте: наклонявайте принтера стабилно и сигурно – и задължително направете нова Input Shaping калибрация след това, за да запазите качеството на печат.

► Да се търкулне – но правилно!

Ако имате Bedslinger, възможно е изхвърленият модел да се заклещи между леглото и корпуса. Поставете парче хартия или картон под леглото – така моделът ще се търкулне плавно, без да заседне.

► Pusher Plate – помощ за изхвърляне

Ако искате още по-надеждно изхвърляне, можете да си отпечатате малка „pusher plate“ – закрепваща се плочка за главата, която избутва по-добре. Но внимавайте: плочката не трябва да се удря никъде – в противен случай ще последва сблъсък.