Jump to content

Кольоровий друк Klipper-ом - тонкощі макросів.


Recommended Posts

З нагоди Нового року надумався надрукувати ялинковий ліс для друзів

image.thumb.png.700da5e164e4248e193e5e519b9492f4.png

і тут я стикнувся з проблемами паузи та відновленням друку. Ці перші дві ялинки я надрукував використовуючи стандартні функції октопринту, про що колись питався тут

Треба встигнути натиснути паузу, замінити пруток, натиснути відновлення і друк продовжиться там де зупинився. Наче нічого складного, але треба контролювати друк і не прогавити момент заміни кольору прутка. Щоб цього позбавитись існує чудовий плагин до Октопринту - Multi Colors   Цей плагин вставляє у готовий G-code файл, на зазначеному шарі друку, потрібну команду. У нашому випадку, універсальну команду заміни філаменту - М600 Ця команда, при певних налаштуваннях, також працює і в Марлін.

Встановлюємо плагін https://github.com/MoonshineSG/Octoprint-MultiColors/archive/master.zip  після перезавантаження октопринту відкриваємо вкладку Multi Colors

image.thumb.png.0a17eed756ffbc4de001944ea03cd795.png

На зображені мої налаштування. У полі Find line я написав регулярний вираз який шукає співпадіння у зазначеному файлі з Г-кодом, згенерованим слайсером Simplify3d. У моєму випадку шукається рядок з написом  ; layer 6 та після нього вставляє все, що написане у полі inject GCODE  тоб-то М600 Нижче зображення як це буде вставлено у коді

image.thumb.png.4b87b3b5c457a66c703b2dba3f02ce2d.png

Щоб згенерувати змінений код бажано поставити позначку Duplicate file та натиснути Process У такому випадку згенерується новий файл з вставленими командами. У кінці файлу буде допис _multi  

Тепер нам треба сконфігурувати правильно Кліппер. На час написання цієї статті версія кліппера - FIRMWARE_VERSION:v0.9.1-104-g39a04eac FIRMWARE_NAME:Klipper

 

1. Додаємо секцію паузи. Там вказуєм бажану швидкість переміщеня сопла. За замовчуванням стоїть 50мм/с

 

[pause_resume]
recover_velocity: 210.

2. Пишемо макроси виходячи з алгоритму заміни прутка на іньший кольор:

  • зупинити друк;
  • запаркувати сопло у зазначену та зручну, для заміни прутка, позицію;
  • вийняти відпрацьований пруток та подати звуковий сигнал;
  • завантажити новий пруток;
  • при необхідності продавити ще пруток;
  • відновити друк.

Далі макроси з інтуітивно зрозумілими назвами.

[gcode_macro PARKING]
default_parameter_x = 50
default_parameter_y = -2
default_parameter_z = 10
gcode:
 G91
 G1 E-2 F2400
 G1 Z{Z}
 G90
 G1 X{X} Y{Y} F12000

Паркінг: Задаємо дефолтні координати куди повинно приїхати сопло на заміну філаменту

Робимо ретракт 2мм на швидкості 40мм/с

Піднімаємо вісь Z на 10мм від існуючої кординати

переміщуємо сопло у координати X50 Y-2 на швидкосты 200мм/с

[gcode_macro UNLOAD]
gcode:
 G91
 G1 E10 F2400
 G1 E-60 F7000
 G90

Вивантаження прутка:

Видавити 10мм прутка для прогріву кінчика філаменту

Вивантажити на відстань 60мм.

У моєму випадку, для директу, це відстань де пруток буде за межами зони розплаву, але не пройде подаючу шестерню. Чому так? Коли пруток, з м'яким кінчиком, вийде за межи подаючої шестерні - м'яка частина прутка буде деформована тією самою шестерню і потім буде складно вийняти філамент з екструдеру!!!

[gcode_macro PAUSE_MACRO]
gcode:
 PAUSE
 PARKING
[gcode_macro M600]
gcode:
 SAVE_GCODE_STATE NAME=M600_state
 PAUSE_MACRO
 UNLOAD
 # signal about the replacement of the filament
 M300 S880 P800
 RESTORE_GCODE_STATE NAME=M600_state

М600: Як бачимо тут ми фіксуємо координати сопла, перед всіма маніпуляціями з заміною пластику, і перераховуємо написані макроси згідно нашого алгоритма.

[gcode_macro LOAD_FILAMENT]
gcode:
 G91
 G1 E150 F600
 G1 E10 F1000
 G1 E10 F1000
 G90

Завантаження філаменту: тут ми продавлюємо необхідну довжину і два "контрольніх постріла" по 10мм. Не завжди виходить завантажити зразу пруток, є конструкції прижиму, та розташування його, не дуже зручними для ручної заміни. Тому тут принцип завантаження наступний: вставляємо пруток до упору, трохи тиснемо на ньго в сторону подаючих шестерен і натискаємо кнопку завантаження пластику - про це буде трохи далі.

[gcode_macro LOAD_FILAMENT_20]
gcode:
 G91
 G1 E20 F600
 G1 E-1.6 F2500
 G90

Тут я створив додатковий макрос для продавлювання ще 20мм прутка і відразу ретракт 1.2мм. Для повної заміни кольору треба продавлювати пруток на більші відстані. Як що кольори радикально різні - треба набагато більше прогнати прутка з новим кольором, а з ретрактами ми не тільки проганяємо пруток, но і, нібито, вичищаемо сопло як щіткою. Це буде відображатись на кольорі у місці ретракту.

Ну а друга причина, чому я використав у цьому макросі ретракт - це прибирання пластику з сопла для "чистого" переміщеня сопла у зону продовження друку. Таким чином ми позбавляємося від соплі, або павутини через всю модель.

[gcode_macro RESUME_MACRO]
gcode: RESUME

Ну і фінішний аккорд - макрос на відновлення друку. 

Як я писав вище, нам потрібно у ручному режимі активувати макроси завантаження філаменту, додаткового продавлювання, відновлення друку. Ще нам, у повсякденні, може знадобитись макрос вивантаження філаменту. Так як же нам бути? А дуже просто. На вкладці кліппера є можливість прописати свої макроси і відображати їх, за бажанням, на вкладці з'єднання принтера, або кліппера, або і там і там.

image.thumb.png.0dd2dc41e57ae73109e3553b419e9ad2.png

Як це зробити - дуже просто. Відкриваємо налаштування плагина OctoKlipper та прописуємо необхідні нам макроси та назви:

image.thumb.png.a8a3b22ca64c983a6a0c3540bd535126.png

Сподіваюсь на це зображення не треба робити пояснення. 🙂 Як бачимо, ці макроси нам стануть у нагоді.

Ось тепер можно спокійно друкувати ялинковий ліс, тощо. 

П.С. До речі, ці макроси можливо використати при використанні датчика кінця філаменту :classic_biggrin:

Гарних, красивих, цікавих, Вам, кольорових роздруківок і моделей!!!

  • Like 2
  • Thanks 1
Link to post
Share on other sites
  • 2 months later...

що я роблю не так ? :classic_huh:

Error loading template 'gcode_macro CANCEL_PRINT:gcode': UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)

Once the underlying issue is corrected, use the "RESTART"
command to reload the config and restart the host software.
Printer is halted
Link to post
Share on other sites

@Maks А можно більш детально, що поставив і після чого почалось? По опису, щось трапилось  у секції gcode_macro CANCEL_PRINT

 

Link to post
Share on other sites

скопіював макроси звідси а воно почало матюкатися при збереженні конфігу

Link to post
Share on other sites
1 хвилину тому, Maks сказав:

скопіював макроси звідси а воно почало матюкатися при збереженні конфігу

Перевіряй секцію gcode_macro CANCEL_PRINT

Link to post
Share on other sites

Шось нічого не розумію , раніше все було ок , тепер спробував обновити moonraker і все потухло ХD , бачу треба по новому все ставити (хоч конфіг залишився...)

Link to post
Share on other sites

@Maks явно діло не у макросах, співпадіння. 😁 

 

Link to post
Share on other sites

Это может быть из-за того,  что что-то добавлял в конфигурацию копипастом с виндового нотепада. Удали секцию и рулями впиши с консольки с редактора nano или vi/vim

Link to post
Share on other sites

Копіпастив з сайту , потім пробував через нотепад++ , треба буде вручну спробувати , дякую

Link to post
Share on other sites

@Maks так помилка взагалі не з копіпасту, а у твоїй секції, яка була раніше, або скопійована з іньшого ресурсу 🙂

 

Link to post
Share on other sites

Та дивно , скопіював з іншого макросу і все норм (може шось від версії кліппер залежить...) що буває коли копіюєш і толком не розумієш що :classic_biggrin:

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...