کد شروع جی کد G-Code در حوزه چاپ سه‌بعدی، مجموعه‌ای از دستورات به فرمت جی کد G-Code است که پس از شروع یک کار چاپ و پرینت سه بعدی و قبل از شروع واقعی چاپ، اجرا می‌شوند. هدف از این دستورات، آماده‌سازی و کالیبره کردن چاپگر برای پرینت سه بعدی است.

به طور معمول، کد شروع جی کد G-Code یک فیلد است که در پروفایل یا تنظیمات چاپگر در نرم‌افزار اسلایسر قرار دارد و در ابتدای فایل .gcode ایجاد شده، گنجانده می‌شود. این برای یک چاپگری که با سیستم عامل Marlin کار می‌کند، منطقی است. اما اگر با Klipper کار می‌کنید، چیزها کمی متفاوت عمل می‌کند، که بعداً به آن ها خواهیم پرداخت.

بدون توجه به نرم‌افزاری که بر روی چاپگر سه‌بعدی شما نصب شده است، نوشتن کد شروع جی کد G-Code همواره چالش برانگیز است. ممکن است وسوسه شوید که چند خط کد را که در اینترنت پیدا کرده‌اید، کپی و پیست کنید، حتی اگر برای یک چاپگر یا مورد استفاده متفاوتی طراحی شده باشد. با این حال، داشتن یک کد شروع جی کد G-Code سازگار با دستگاه خود، به شما امکان می‌دهد با ایجاد یک پایه استاندارد، خطاها را به حداقل برسانید.

در واقع، نوشتن جی کد G-Code خود به اندازه‌ای پیچیده نیست، تا زمانی که هدف آن را به وضوح تعریف کنید. در این مطلب، به شما در نوشتن کد شروع جی کد G-Code برای Klipper کمک خواهیم کرد، اما ابتدا بیایید به تفاوت‌های بین کد G در Marlin و Klipper بپردازیم.


مقایسه ی Marlin و Klipper

برای جلوگیری از هرگونه ابهام، بیایید به طور خلاصه تفاوت‌های مهم بین نرم‌افزار Marlin و Klipper را مرور کنیم.

Marlin نرم‌افزار پیش‌فرضی است که به بیشتر پرینترهای سه بعدی موجود در بازار سرویس می دهد و آن ها را تغذیه می‌کند. برای اجرای آن، به سخت‌افزارهای اضافی نیازی ندارد و به طور طبیعی 99٪ از چاپگرهای موجود را پشتیبانی می‌کند. برای اعمال بیشتر تغییرات، لازم است که سیستم عامل را مجدداً کامپایل و فلش کنید.

Klipper با همکاری یک SBC (مانند Raspberry Pi) کار می‌کند. این نرم‌افزار یک بار روی برد فلش می‌شود و تمام تغییرات و آپدیت های بعدی از طریق یک رابط کاربری وب اعمال می‌شوند. Klipper دارای مجموعه‌ای از ویژگی‌ها است که هدف آن‌ها دستیابی به سرعت‌های بالاتر و حداقل کاهش کیفیت است.

این تفاوت‌ها به این معنی است که تغییر کد شروع جی کد G-Code در Marlin نیازمند ویرایش مجدد فایل‌ها است، که ممکن است خسته‌کننده شود. Klipper این پروسه را آسان‌تر می‌کند، زیرا کد شروع جی کد G-Code معمولاً در سیستم عامل و به کمک ماکروها تعریف شده. بیایید نگاهی دقیق تر به نحوه عملکرد آنها بیندازیم.


ماکروهای جی کد G-Code

در Klipper، ماکروها مجموعه‌ای از دستورات فرمانی هستند که می‌توانند به صورت خودکار و طی یک اقدام کاربر اجرا شوند. آنها در واقع قسمتی از فایل پیکربندی هستند، بنابراین می‌توانند مانند سایر پارامترها به سرعت و به راحتی تغییر یابند. اگر با مفهوم ماکروها آشنایی زیادی ندارید، پیشنهاد می‌کنیم ابتدا این مطلب در مورد ماکروهای Klipper را بخوانید.

اصول تشکیل‌دهنده یک ماکرو واقعاً ساده هستند. این عملکردها شامل دستورات جی کد G-Code مانند G1، G28 یا M84 و همچنین الگوهای دستور خاص Klipper با پارامترها (مانند BED_MESH_PROFILE LOAD=mesh1) می‌شوند. سپس می‌توانید دستورالعمل ها را با استفاده از سینتکس کدنویسی کامل که شامل حلقه‌های شرطی، متغیرها و اقدامات است، توضیح دهید.

تنها کاری که در اسلایسر باید انجام دهید، وارد کردن نام ماکرو است تا به صورت خودکار در فایل جی کد .gcode شما اجرا شود. علاوه بر این، مانند هر ماکروی دیگری، می‌توانید آن را به یک دکمه در رابط کاربری وب وصل کنید یا از طریق کنسول اجرا کنید.

این البته با روند کار Marlin که همه به آن عادت کرده‌ایم تفاوت هایی دارد که در اغلب موارد بهتر هستند:

  • نیازی به ویرایش مجدد یک چاپ برای تغییر پارامترهای شروع نیست. به سادگی فایل جی کد .config را ویرایش و سپس ری استارت کنید.
  •  می‌توانید شروطی تعریف کنید که تنها در موقعیت های خاص فعال شوند (مانند دمای میز برای PLA و PETG).
  • دستورات درج شده می‌توانند در سطح بالاتری عمل کنند و حتی با Raspberry Pi و محیط اطراف آن تعامل کنند (به عنوان مثال، روشن و خاموش کردن چراغ‌ها یا سایر دستگاه‌های IoT در شبکه).


از Marlin به Klipper

اگر از قبل کد شروع جی کد G-Code داشتید که در Marlin به خوبی کار می‌کند، می‌توانید بسیاری از آن را به صورت یک ماکروی Klipper وارد کنید. با تنظیمات جزئی کوچک، هنوز قابل استفاده خواهد بود، البته به شرطی که پیکربندی سخت‌افزار تغییر نکرده باشد. Klipper فقط برخی از دستورات Marlin را به صورت پیش‌فرض پشتیبانی می‌کند، در حالی که سایر عملکردها نام های متفاوتی دارند. برای حل این مشکل، می‌توانید جی کد G-Code پشتیبانی نشده را با معادل خود جایگزین کنید.

حالا که با مفاهیم پایه آشنا شدیم، بیایید نوشتن کد شروع جی کد G-Code خود برای Klipper را استارت بزنیم!


کد خود را بنویسید.

ساخت ماکروی شخصی‌سازی شده خودتان آسانتر از آنچه که فکر می‌کنید است! برای اینکه همه چیز را ساده نگه داریم، تنها بر روی عملیات‌های رایج و کاربردی تمرکز خواهیم کرد:

- قرار دادن چاپگر در پوزیشن اولیه (Homing the printer)

- تراز کردن سطح ساخت و شروع شبکه ی اولیه ی بستر(Leveling the bed and initializing the bed mesh)

- افزایش دمای هات اِند و بستر پرینت (Getting the hot end and bed up to temperature)

- تمیز کردن نازل (Purging the nozzle)

- حرکت دادن نازل به موقعیت (Moving the printhead to a wait position)

تمام مراحلی که در اینجا ارائه شده‌اند باید به ترتیب اجرا شوند، اما می‌توانید برخی از آن‌ها را در صورتی که به نصب و راه‌اندازی شما اعمال نشوند، رد کنید.


گام به گام

ابتدا، یک ماکرو جدید در فایل .config با نامی که هدف آن را منعکس کند، ایجاد کنید. سپس، چندین پارامتر اولیه را برای شروع مشخص می‌کنیم:

[gcode_macro START_PRINT]

[gcode_macro START_PRINT]  gcode:      

  # Use absolute coordinates      

  G90    

   # Home the printer      

  G28      

 # Reset extruder    

   G92 E0

بعد از تنظیم همه محورها، می‌توانیم با دستور <M190 S<temperature، بستر را به دمای مورد نظر برسانیم.  برای 60 درجه سانتی‌گراد، دستور به صورت زیر خواهد بود:

 # Heat the bed and wait

 M190 S60

اگر می‌خواهید هر بار میز را پروب کنید، می‌توانید این کار را پس از گرم شدن انجام دهید. اگر از قبل مش ذخیره شده دارید، می‌توانید با دستور دوم آن را بارگیری کنید:

 BED_MESH_CALIBRATE PROFILE=mesh1 METHOD=automatic
 BED_MESH_PROFILE LOAD=mesh1

لطفاً توجه کنید که Klipper اخیراً تغییری را معرفی کرده است که نیازمند بارگیری پروفایل مش بستر قبل از چاپ است، بنابراین حتماً این دستور را در ماکروی خود قرار دهید.

قبل از گرم کردن نازل، باید نازل چاپ را از ناحیه چاپ دور کنید تا از نشت مواد بر روی آن جلوگیری شود. موقعیت انتظار در هر چاپگر متفاوت است، بنابراین قبل از اجرای آن، بررسی کنید که کدام مکان برای شما مناسب است:

  # Move to wait position

 G1 X0 Y0 Z50 F4000.0      

  # Set and wait for nozzle to reach temperature

   M109 S200

بابعد از تنظیم همه چیز، می‌توانید یک خط متریال را به نازل برای راه‌اندازی اولیه بدهید. به یاد داشته باشید که این ابعاد ممکن است با چاپگر شما مطابقت نداشته باشد، بنابراین در صورت نیاز، فاصله را تغییر دهید. بعد از انجام این روند، اکسترودر را مجدد تنظیم کنید:

# Move Z axis up      

G1 Z2.0 F3000    

  # Move to start position    

  G1 X10.1 Y20 Z0.28 F5000.0    

 # Draw the first line  

  G1 X10.1 Y200.0 Z0.28 F1500.0 E15    

 # Move to the side    

 G1 X10.4 Y200.0 Z0.28 F5000.0      

# Draw the second line  

   G1 X10.4 Y20 Z0.28 F1500.0 E30  

    # Reset extruder    

  G92 E0

سرانجام، می‌توانید START_PRINT (یا نام دلخواه تان برای ماکرو) را در فیلد start G-code در اسلایسر مورد علاقه‌تان اضافه کنید تا این ماکرو جدید در فایل .gcode اضافه شود!

حال که پایه را تعیین کردیم، بیایید ببینیم چگونه پارامترهای پیشرفته‌تری را در محیط چاپگر انتخابی خود اضافه کنیم و فرآیند را به صورت خودکار انجام دهیم.

تنظیمات اسلایسر

بعضی کاربران به طور متناوب بین مواد با دماهای مورد نیاز بسیار متفاوت تغییر می‌دهند، بنابراین هر بار تطبیق ماکرو بسیار آزاردهنده خواهد بود. خوشبختانه، می‌توان تنظیمات نرم‌افزارهای اسلایسر را به طور خودکار با Klipper هماهنگ و این نوع اطلاعات را به صورت خودکار ارسال کرد. اگر می‌خواهید این مرحله را بگذرانید، کافیست فقط ماکرو را در فیلد start G-code اضافه کنید.

برای ارسال اطلاعات دما از نرم‌افزار اسلایسر به Klipper، فیلد start G-code باید شامل چند پارامتر اضافی باشد و ماکرو باید بتواند آن‌ها را بخواند. اینکه از طرف اسلایسر چه چیزی مورد نیاز است، بستگی به نرم‌افزار اسلایسری که استفاده می‌کنید دارد، در حالی که از طرف Klipper ثبدون تغییر باقی می ماند.

در کیورا Cura، در تنظیمات دستگاه، موارد زیر را به فیلد start G-code اضافه کنید:

; M190 S{material_bed_temperature_layer_0}

; M109 S{material_print_temperature_layer_0}

START_PRINT BED={material_bed_temperature_layer_0}

HOTEND={material_print_temperature_layer_0}

در Prusaslicer یا SuperSlicer، در "“Printer Settings > Custom G-codes”، موارد زیر را به فیلد start G-code اضافه کنید:

M104 S0

M140 S0

START_PRINT BED=[first_layer_bed_temperature]

HOTEND=[first_layer_temperature[initial_extruder]]

به خاطر داشته باشید که ابتدا نام ماکرو را اضافه کنید!

برای اجرای این مقادیر در Klipper، باید تعریف پارامترها را در ابتدای ماکرو اضافه کنیم و دستورات M109 و M190 را تغییر دهیم:

[gcode_macro START_PRINT]

Gcode:

 {% set bedtemp = params.BED|int %}

به علاوه، می‌توانید پارامترهای دیگری مانند نوع متریال یا اندازه نازل را منتقل کنید و از Klipper بخواهید که بر اساس آن عمل کند.

در نهایت، به یاد داشته باشید که همیشه ماکروهای خود را قبل از اجرای آنها آزمایش کنید!


منبع: all3dp.com