QIDI X-Max 3 (Sau Đầu Đùn) Bộ Cắt Chỉ In (Cập Nhật)

Nâng cấp QIDI X-Max 3 với bộ đầu đùn tích hợp bộ cắt chỉ in và cảm biến đứt chỉ. Hướng dẫn chi tiết về in, lắp ráp các bộ phận, xử lý lưỡi dao và cập nhật cấu hình Klipper cho quy trình homing mới. Giảm thiểu lãng phí vật liệu, giữ nguyên cấu hình máy in gốc.

👁️
898
Lượt Xem
❤️
42
Lượt Thích
📥
129
Lượt Tải
Cập Nhật Dec 21, 2025
Chi tiết
Tải xuống
Bình Luận
Khoe bản in
Remix

Mô tả

Cái cụm đầu đùn (Extruder Assembly) này chạy ngon lành cành đào rồi nên mình thấy đủ xài. Anh em cứ thoải mái chỉnh sửa nha!

https://vimeo.com/manage/videos/1077693101/502d7b66e4


Cái này cần làm lại quy trình homing để đầu đùn không bị đụng vô cái cần cắt. Xem ở dưới để biết thay đổi.

Lưu ý: Quy trình homing này là dành cho FreeDi, thay thế cho Klipper của QIDI. Anh em tự cập nhật Klipper của QIDI nha để tránh va chạm.

------------------------------

Mục tiêu

Mục tiêu của dự án này là thêm một bộ cắt chỉ in (filament cutter) tích hợp, giảm thiểu hao phí vật liệu mà vẫn giữ nguyên các bộ phận khác của máy in càng nhiều càng tốt.

Thiết kế này là phiên bản chỉnh sửa của thân đầu đùn gốc. Nó có một "cổng lưỡi dao" cắt chỉ in nằm ngay phía trên hotend và đã được đơn giản hóa để in dễ hơn.

Nói nhỏ: QIDI ban đầu có thiết kế cho cái này nhưng không có trên mẫu mình đang có.

Ngoài bộ cắt chỉ in, bản sửa đổi này còn tích hợp cảm biến đứt chỉ in (filament runout sensor) đặt phía trên đầu đùn. Cảm biến này dùng vòng bi 5 mm (ban đầu là bi 4.5mm) và một công tắc giới hạn kiểu Omron D2F: https://www.digikey.com/en/products/detail/omron-electronics-inc-emc-div/D2F/83270

Yêu cầu:

Các bộ phận cần in

  • Vỏ đầu đùn (Mặt trước (không cần support), Tấm trái, Tấm phải)
  • Cần gạt
  • Miếng đệm cần gạt
  • Giá đỡ lưỡi dao (in vài cái)
    • Lưu ý
      • Mình in bằng ABS với 40% infill và 4 lớp tường.
      • Tấm trái, Tấm phải và cần gạt cần có support, còn lại thì ổn.
      • Mình gặp vấn đề với các tab bị gãy dù in kiểu gì đi nữa nên mình chia nó thành nhiều bộ phận và in để tăng độ bền. Ưu điểm là dễ dàng chuyển quạt đầu đùn.

Cảm biến chỉ in

  • 1x Vòng bi 5 mm
  • 1x Công tắc giới hạn kiểu Omron D2F
  • 2x Vít tự khai thác M2x8mm
  • Tùy chọn nhưng hữu ích: vít M2 dài để điều chỉnh công tắc giới hạn

Đầu đùn

  • ECAS04
  • 4x M3 heat set inserts các độ dài tùy ý cho thân đầu đùn
  • 2x M3x4 heat set inserts cho lỗ gắn hotend
  • 2x M3 heat set inserts các độ dài tùy ý cho vỏ nếu bạn in vỏ làm nhiều mảnh.

Bộ cắt

  • Lưỡi dao rọc giấy 18mm loại bẻ khúc với các đoạn 8mm - Mình mua ở Harbor Freight.
  • 1x Vít M3X20
  • Lò xo đường kính ngoài 4 mm, đường kính dây 0.5mm, dài 15 mm - Quan trọng là lò xo phải cứng, mình lấy từ Bộ dụng cụ Box Turtle của mình
  • Keo siêu dính (Superglue)

Hướng dẫn (đang cập nhật):

Đầu đùn

  • Lắp ECAS fitting (cái này phải hơi cứng, mình ép bằng mỏ kẹp)

  • Cảm biến chỉ in

    • Lắp vòng bi 5mm, đảm bảo nó quay trơn tru.
    • Lắp công tắc giới hạn đúng chiều.
    • Lắp vít M2 tùy chọn để tạo áp lực nhẹ lên công tắc.
    • Để điều chỉnh vị trí công tắc, lấy một đoạn chỉ in và lắp vào đầu đùn, lắng nghe tiếng click khi lắp.
      • Nếu không nghe thấy tiếng click, siết chặt vít M2 và thử lại.
      • Quan trọng là phải đảm bảo công tắc được kích hoạt bởi chỉ in trước khi cố định vị trí.
    • Dùng vít tự khai thác M2 để cố định vị trí công tắc.
  • Chuyển phần cứng đầu đùn từ đầu đùn zin. Cẩn thận không làm mất lò xo căng hoặc vòng bi bánh răng. Bản in được thiết kế không có dung sai cho vòng bi hoặc chốt bánh răng, nên một số phần cứng, chủ yếu là chốt, có thể khó lắp.

    • Mình ép vòng bi vào và doa lỗ chốt bằng mũi khoan 3mm.
      • Cái này vẫn sẽ khít nhưng dễ tháo hơn nếu cần.
  • Lắp 4 M3 heat-set inserts vào thân đầu đùn cho bằng.

  • Đối với hotend, đảm bảo các inserts sâu 4mm hoặc ít hơn.

  • Lắp lại các bánh răng của đầu đùn và gắn lại tấm mặt sau.

  • Kiểm tra xem các bánh răng quay có trơn tru không.

  • Lưu ý

    • Đừng lắp hotend vội; bạn sẽ cần tháo nó ra để kiểm tra chiều dài lưỡi dao và chuyển động trơn tru.
    • Đảm bảo không có nhựa thừa cản trở lưỡi dao.
    • Các lỗ đã được tăng lên 4.2 mm nhưng có thể vẫn hơi nhỏ.
      • Đảm bảo lò xo căng không bị cấn vào nhựa bị đẩy ra bởi insert.

Giá đỡ lưỡi dao

-----Cẩn thận khi thao tác và bẻ lưỡi dao!

  • Giá đỡ được thiết kế cho phần rộng 8mm của lưỡi dao rọc giấy dạng bẻ khúc
    • Lưỡi dao cần được bẻ với chiều dài khoảng ~18mm (tính từ cạnh cắt) hoặc ít hơn một chút.
    • Lắp lưỡi dao vào giá đỡ sao cho phần tay đòn nằm trong khoảng 25.7mm (Đây là cái phù hợp với mình qua quá trình đoán và thử)
    • Dùng keo dán lưỡi dao vào giá đỡ.
    • Bây giờ là lúc tốt để kiểm tra xem lưỡi dao có di chuyển tự do trong khe lưỡi dao của đầu đùn và nhô ra khỏi lỗ chỉ in ít nhất 1mm hay không.
    • Lưu ý
      • Mình dùng mỏ kẹp và kìm để bẻ lưỡi dao cho ngọt (hơn) nhưng ngay cả vậy cũng không đều.
      • Mục tiêu là có chiều dài lưỡi dao đủ để cắt chỉ in nhưng không quá dài đến mức bị kẹt khi lò xo kéo về.
      • Việc bẻ chính xác rất khó và có thể mất vài lần thử.
      • Phần này có lẽ sẽ cần thử và sai.
        • Chiều dài cần gạt và độ sâu lỗ có thể cần chỉnh sửa để đạt được chiều dài lưỡi dao phù hợp.

Cần gạt

  • Vặn giá đỡ đã lắp vào cần gạt bằng hai vít M2 ngắn.
    • Đừng siết quá chặt vì chúng cần quay tự do.
  • Lắp vít M3x20 mm vào cần gạt (chúng nên quay tương đối tự do trên vít).
  • Lắp vít vào miếng đệm in.
  • Vặn cần gạt vào lỗ có sẵn insert ren bên cạnh hotend.

!!!!!Vui lòng sao lưu tất cả các tệp cấu hình của bạn trước khi thực hiện thay đổi!!!!!

Tôi đã phải thay đổi vị trí homing từ phía trước bên trái sang trung tâm phía sau. Điều này yêu cầu cập nhật cả cấu hình máy in và macro homing.

Cần thiết cho quy trình homing mới:

FreeDi printer.cfg
#####################################################################
# Drives
#####################################################################
[stepper_x]
position_min: -8   #Cập nhật cho quy trình homing mới
position_endstop: 328  #Cập nhật cho quy trình homing mới
position_max: 328  #Cập nhật cho quy trình homing mới

[stepper_y]
position_min: -15 #Cập nhật cho quy trình homing mới
position_endstop: 331 #Cập nhật cho quy trình homing mới
position_max: 331 #Cập nhật cho quy trình homing mới


FreeDi macros.cfg
#####################################################################
# Homing modification
#####################################################################
[gcode_macro G28]
rename_existing: G28.1
gcode:
    {% set reduced_current_x = 0.6 %}
    {% set reduced_current_y = 0.7 %}
    {% set home_all = ('X' in rawparams.upper() and 'Y' in rawparams.upper() and 'Z' in rawparams.upper()) or
                      ('X' not in rawparams.upper() and 'Y' not in rawparams.upper() and 'Z' not in rawparams.upper()) %}
    {% set home_current_x = printer.configfile.settings['tmc2209 stepper_x'].run_current * reduced_current_x %}
    {% set home_current_y = printer.configfile.settings['tmc2209 stepper_y'].run_current * reduced_current_y %}


    {% set init_XY_move = -30 %}
    #{% set y_init_move = 5 %}
    {% set z_clearance = 2 %}


    {% set home_all_final_position_x = printer.toolhead.axis_maximum.x / 2 %}
    {% set home_all_final_position_y = printer.toolhead.axis_maximum.y / 2 %}
    {% set home_all_final_position_z = 20 %}


    # If homing should at least move X or Y axis
    {% if home_all or 'X' in rawparams.upper() or 'Y' in rawparams.upper() %}    
        # Check if Z is homed
        {% if 'z' in printer.toolhead.homed_axes %}                                                                       ; Set Z_axis_was_homed to true if Z is already homed
            G91                                                                                                     ; Use relative positioning
            G1 Z2 F600                                                                                              ; Move bed down
            G90                                                                                                     ; Use absolute positioning
        {% else %}                                                                      ; Set Z_axis_was_homed to false if Z is not homed
            FORCE_MOVE STEPPER=stepper_z DISTANCE={z_clearance} VELOCITY=10                                         ; Move bed down
        {% endif %}
    {% endif %}


    {% if home_all or 'X' in rawparams.upper() or 'Y' in rawparams.upper() %}
        G91                                                                                                         ; Use relative positioning
        FORCE_MOVE STEPPER=stepper_x DISTANCE={init_XY_move} VELOCITY=40                                            ; Move X a little before homing
        SET_KINEMATIC_POSITION X={printer.toolhead.position.x + (init_XY_move/2)}                                   ; Compensate the FORCE_MOVE position
        SET_KINEMATIC_POSITION Y={printer.toolhead.position.y + (init_XY_move/2)}                                   ; Compensate the FORCE_MOVE position
        G90                                                                                                         ; Use absolute positioning
    {% endif %}

   # Home X
    {% if home_all or 'X' in rawparams.upper() %}        
        SET_TMC_CURRENT STEPPER=stepper_x CURRENT={home_current_x}                                                  ; Lower motor current
        SET_TMC_CURRENT STEPPER=stepper_y CURRENT={home_current_x}                                                  ; Lower motor current
        G28.1 X                                                                                                     ; Home X
        SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer.configfile.settings['tmc2209 stepper_x'].run_current}    ; Set motor current to the previous value
        SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer.configfile.settings['tmc2209 stepper_y'].run_current}    ; Set motor current to the previous value
        #G1 X10 F1200
        G1 X{home_all_final_position_x} F1200; Move X-axis slightly
    {% endif %}

    # Home Y
    {% if home_all or 'Y' in rawparams.upper() %}
        SET_TMC_CURRENT STEPPER=stepper_x CURRENT={home_current_y}                                                  ; Lower motor current
        SET_TMC_CURRENT STEPPER=stepper_y CURRENT={home_current_y}                                                  ; Lower motor current
        G28.1 Y                                                                                                     ; Home Y
        SET_TMC_CURRENT STEPPER=stepper_x CURRENT={printer.configfile.settings['tmc2209 stepper_x'].run_current}    ; Set motor current to the previous value
        SET_TMC_CURRENT STEPPER=stepper_y CURRENT={printer.configfile.settings['tmc2209 stepper_y'].run_current}    ; Set motor current to the previous value
        #G1 Y10 F1200                                                                                                ; Move Y-axis slightly
        G1 Y{home_all_final_position_y} F1200
    {% endif %}




    # Raise the bed again if only X or only Y axes were homed
    {% if not (home_all or 'Z' in rawparams.upper()) %}
        {% if Z_axis_was_homed %}
            G91                                                                                                     ; Use relative positioning
            G1 Z-2 F600                                                                                              ; Raise the bed back again
            G90                                                                                                     ; Use absolute positioning
        {% else %}
            FORCE_MOVE STEPPER=stepper_z DISTANCE=-{z_clearance} VELOCITY=10                                        ; Raise the bed back again
        {% endif %}
    {% endif %}


    # Home Z
    {% if home_all or 'Z' in rawparams.upper() %}
        G28.1 Z                                                                                                     ; Home Z
        G90                                                                                                         ; Set absolute positioning
        G1 Z{home_all_final_position_z}                                                                             ; Move bed down
    {% endif %}


    # Move to the final position if all axes were homed
    {% if home_all %}
        G90                                                                                                         ; Set absolute positioning
        G1 X{home_all_final_position_x} Y{home_all_final_position_y} Z{home_all_final_position_z} F7800             ; Move to center
    {% endif %}

BoxTurtle MMU Hotend Values:

/AFC/AFC_Hardware.cfg
pin_tool_start: !PC3   #This will depend on where you plug in your runout sensor. 
#pin_tool_end: None    #No post extruder sensor so not used. 
tool_stn: 100 
tool_stn_unload: 30 
tool_sensor_after_extruder: 0 
tool_sensor_after_extruder: 0 
tool_unload_speed: 10 
tool_load_speed: 25

Giấy phép

Tác phẩm này được cấp phép theo

Creative Commons — Attribution

CC-BY

Yêu cầu ghi công
Remix & phái sinh Được phép
Sử dụng thương mại Được phép

File mô hình

TẤT CẢ FILE MÔ HÌNH (5 Tập tin)
Đang tải files, vui lòng chờ...
Vui lòng đăng nhập để bình luận.

Chưa có bình luận nào. Hãy là người đầu tiên!

Vui lòng đăng nhập để khoe bản in của bạn.

Chưa có bản in nào được khoe. Hãy là người đầu tiên!

Remix (0)