FirmwareKlipper

Klipper Firmware İçin Faydalı Makro Tanımları

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/
Etiketler
Başa dön tuşu
Kapalı
Kapalı

Reklam Engelleyici Algılandı

Please turn the Add Blocker off as you may see there is no annoying ads in the blog.