3D yazıcınızı Klipper firmware ile çalıştırıyorsanız çeşitli makrolar yardımıyla yazıcınızı yönetmenin kolaylaştığını farketmişsinizdir. Burada benimde aktif kullandığım faydalı gördüğüm bazı makroları paylaşmak istiyorum. Varsa sizinde kullandığınız değişik makrolar yorum alanına yazarsanız sevinirim.
Bu makroları printer.cfg dosyamızın sonuna ekliyoruz.
PRINT_START Makrosu
yazıcınızın baskı öncesi yapması gerekenleri belirtir. Varsa dilimleyicinizde başka başlangıç gcode ayarları onları da buraya ekleyin veya aşağıdakileri değiştirin. Bunu ayarladıktan sonra dilimleyicinin başlangıç gcode kısmına PRINT_START yazmanız yetecektir.
Tabla ve hotend ısıtma değerlerini de parametre ile almak iterseniz;
Slic3r++, PurusaSlicer, Superslicer için:
PRINT_START EXTRUDER_TEMP=[first_layer_temperature] BED_TEMP=[first_layer_bed_temperature]
Cura için:
PRINT_START EXTRUDER_TEMP={material_print_temperature} BED_TEMP={material_bed_temperature}
[gcode_macro PRINT_START] gcode: M104 S0 ;Isitma iptal M107 ;Fanlar kapali G21 ;mm hesaplama G90 ;use absolute coordinates M83 ;use relative extrusion G92 E0.0 ;Extruder reset M220 S100 ;reset speed multiplier G28 ;home all G0 X110 Y110 Z10 F6000 ;tablanin ortasina git. tablanizin ortasi 110x110 degilse ona gore degistirin M140 S{BED_TEMP} ;set bed temperature and wait M109 S{EXTRUDER_TEMP} ;set hotend temperature and wait M190 S{BED_TEMP} ;set bed temperature and do not wait #M117 Bed meshing... ;Sensor kullaniyorsaniz asagidaki 2 satiri aktif edebilirsiniz #BED_MESH_CLEAR #bed_mesh_calibrate M117 Ready default_parameter_EXTRUDER_TEMP: 205 #Slicer'dan sıcaklık parametresi gönderilmezse bunları dikkate al default_parameter_BED_TEMP: 60 #Slicer'dan sıcaklık parametresi gönderilmezse bunları dikkate al
PRINT_END Makrosu
Aynı şekilde başlangıç makrosu gibi bu da bitiş makrosu olarak düşünülebilir. Böylece PRINT_END olarak dilimleyicinizde bitiş gcode kısmına yazın.
[gcode_macro PRINT_END] gcode: M400 ; wait for buffer to clear G92 E0 ; zero the extruder G1 E-4.0 F3600 ; retract filament G91 ; relative positioning G0 Z20 F3000 ; move nozzle up 25mm TURN_OFF_HEATERS M107 ; turn off fan G90 ; absolute positioning G0 X110 Y200 F3600 ; park nozzle at rear M117 Finished! ; display message
NOZZLE_CLEAN Makrosu
Eğer sizde nozzle temizlemek için tablanın bir tarafına fırça takmışsanız nozzle ucu ve dış yüzeyi temizlemesi için bu makroyu oluşturup NOZZLE_CLEAN komutu ile baskı öncesi veya sonrası nozzle dış temizliği yapabilirsiniz.
[gcode_macro NOZZLE_CLEAN] default_parameter_I: 5 # I parametresi nozzle firca uzerinde kac defa gidip gelecek gcode: G0 Z10 F3000 ;z 10mm yukari {% if "z" not in printer.toolhead.homed_axes %} ; Gerekliyse G28 Home yapalim M117 Homing... G28 {% endif %} SAVE_GCODE_STATE NAME=cleaning ;nozzle pozisyonunu kaydedelim G91 ;relative positioning G90 ;absolute positioning #Asagida X ve Y koordinatlari temizleyici fircanin baslangici olmalidir. #Fircanin tabladan yüksekligi 1mm ise ise Z parametresi => 10-1=9 G0 X-5 Y100 F3000 ;nozzle temizleme fırçası başlangıcına gönder G0 Z9 F5000 ;Nozzle 9mm asagi indirelim G91 ;relative positioning M117 Nozzle temizligi... {% for wipe in range(1,I|int,1) %} {% for distance in [50,-50] %} G0 X{distance} F10000 {% endfor %} {% endfor %} G0 Z10 F3000 ;z 10mm yukari RESTORE_GCODE_STATE NAME=cleaning ;z ilk orijinal pozisyonuna geri gonderelim M117 Ready...
LOAD_FILAMENT ve UNLOAD_FILAMENT Makroları
Özellikle bowden tip uzaktan extruder kullanıyorsanız bu makrolar filamenti tamamen çıkarıp tekrar yüklemeye yarar. Extruder motoru elinizle veya komutla döndürmeye gerek kalmaz.
LOAD FILAMENT kısmında G1 komutları ile filamenti ne kadar itilecek onu gostermektedir. 400mm hızlı, sonra 40mm yavaş, sonra 30mm artık nozzle civarında daha yavaş itilecek. Yani toplam 470mm. Bowden borusunun uzunluğuna bağlı olarak 70mm sabit olmak üzere E400 uzunluğunu ayarlayınız.
UNLOAD FILAMENT kısmında ise önce filament 10mm ileri itilip E-480 ile 480mm geri geçilecektir hızlıca. Aynı şekilde bowden boru uzunluğunuza göre mesafeyi ayarlayınız.
[gcode_macro LOAD_FILAMENT] gcode: {% if printer.toolhead.status == "Ready" %} M83 ; set extruder to relative G1 E400 F1800 ; quickly load filament to down bowden G1 E40 F300 ; slower extrusion for hotend path G1 E30 F150 ; prime nozzle with filament M82 ; set extruder to absolute {% else %} { printer.gcode.action_respond_info("FPrint yaparken filament takamazsiniz!") } {% endif %} [gcode_macro UNLOAD_FILAMENT] gcode: {% if printer.toolhead.status == "Ready" %} M83 ; set extruder to relative G1 E10 F300 ; extrude a little to soften tip G1 E-480 F1800 ; retract filament completely M82 ; set extruder to absolute {% else %} { printer.gcode.action_respond_info("Print yaparken filamenti çikartamazsiniz!") } {% endif %}
M600 ve ADVANCED_RESUME Makroları
M600 Marlinden hatırlarsınız belki, baskı işini durduran (pause) bir komuttur. Klipperda bu komutu makro yaparak daha gelişmiş bir duraklama işlevi oluşturabiliriz.
Eğer filament değişikliği falan yapacaksan veya baskıyı tekrar devam ettirmek üzere bir şekilde duraklatma ihtiyacımız varsa bu makro komutlarını kullanacağız. M600 komutu ile yazıcı baskı işini durduracak ve nozzle aşağıdaki X, Y, X parametlerinde verilen koordinata gidip bekleyecektir.
ADVANCED_RESUME ise tekrar baskıya kaldığı noktadan devam etmek için göndereceğimiz komut makrosudur.
OctoPrint üzerinde PAUSE ve RESUME gcode alanlarına bunları girerek Octoprint ekran komut butonlarına bu işlevleri atayabilirsiniz.
[gcode_macro M600] default_parameter_X: 110 default_parameter_Y: 0 default_parameter_Z: 20 gcode: SAVE_GCODE_STATE NAME=STATE PAUSE G91 G1 Z{Z} F900 G90 G1 X{X} Y{Y} F18000 RESTORE_GCODE_STATE NAME=STATE [gcode_macro ADVANCED_RESUME] default_parameter_E: 2.5 default_parameter_Z: -20 gcode: SAVE_GCODE_STATE NAME=STATE G91 G1 Z{Z} E{E} F900 RESTORE_GCODE_STATE NAME=STATE RESUME
Durdurma başlatma makroları için aşağıdaki kodu da printer.cfg içine eklemeniz gereklidir.
# Pause/Resume Functionality [pause_resume] recover_velocity: 100
Son olarak aşağıdaki kod makro değil ancak bunu printer.cfg içine eklerseniz yazıcının ekranından Octoprint üzerinde panelde gördüğünüz gcode dosyaları SD bellek içeriği gibi görüntülenecektir ve ekran üzerinden de dosya seçip baskı alabilirsiniz.
# add virtual sd card [virtual_sdcard] path: ~/.octoprint/uploads/