Klipper A-Z bài 5: Input Shaper và Pressure Advance: Hướng dẫn cài đặt ADXL345 và hiệu chỉnh chi tiết

Input Shaper để loại bỏ ringing/ghosting và Pressure Advance để cải thiện chất lượng góc cạnh. Đây là những tính năng làm nên sự khác biệt của Klipper so với các firmware khác.

Klipper A-Z bài 5: Input Shaper và Pressure Advance: Hướng dẫn cài đặt ADXL345 và hiệu chỉnh chi tiết
Ghosting trong in 3D

Danh sách bài viết:

  1. Giới thiệu Klipper
  2. Chuẩn bị phần cứng và cài đặt Klipper
  3. Flash firmware và tạo file printer.cfg
  4. Hiệu chỉnh cơ bản
  5. Input Shaper và Pressure Advance
  6. Tạo macro Klipper cơ bản
  7. Khắc phục sự cố và bảo trì hệ thống

Input Shaper - Loại bỏ ringing và ghosting

Tối ưu hóa Input Shaper sẽ tạo nên khác biệt rất lớn cho bản in của bạn dù là ở tốc độ cao

Tổng quan về Input Shaper

Input Shaper là một kỹ thuật tiên tiến trong Klipper giúp loại bỏ hiện tượng ringing (còn gọi là ghosting, echoing hay rippling) - các vệt sóng xuất hiện trên bề mặt in khi máy in rung động ở tần số cộng hưởng.

Nguyên nhân của ringing:

  • Rung động cơ học của khung máy và hệ thống chuyển động
  • Gia tốc/giảm tốc đột ngột tại các góc và cạnh
  • Tần số cộng hưởng tự nhiên của các thành phần máy in
  • Độ cứng vững không đủ của khung máy hoặc belt

Lợi ích của Input Shaper:

  • Loại bỏ hoàn toàn hoặc giảm đáng kể ringing
  • Cho phép in ở tốc độ cao hơn mà vẫn giữ chất lượng
  • Cải thiện độ chính xác kích thước
  • Giảm thời gian in nhờ có thể tăng acceleration an toàn

Các loại Input Shaper

Klipper hỗ trợ nhiều loại input shaper khác nhau, chúng khác nhau về độ nhạy cảm với lỗi xác định tần số cộng hưởng và mức độ làm mịn gây ra trên các bộ phận in:

ZV (Zero Vibration):

  • Đơn giản nhất, ít làm mịn nhất
  • Phù hợp cho máy in có cộng hưởng đơn giản
  • Khuyến nghị cho hầu hết máy in nếu không có ringing

MZV (Modified Zero Vibration):

  • Cân bằng tốt giữa hiệu quả và làm mịn
  • Khuyến nghị cho hầu hết trường hợp
  • Hoạt động tốt với nhiều loại máy in

EI (Extra Insensitive):

  • Ít nhạy cảm với lỗi tần số
  • Có thể gây làm mịn nhiều hơn
  • Phù hợp khi khó xác định chính xác tần số cộng hưởng

2HUMP_EI và 3HUMP_EI:

  • Thiết kế để giảm nhiều cộng hưởng cùng lúc
  • Thường không dùng với shaper_freq = tần số cộng hưởng
  • Cho trường hợp đặc biệt có nhiều tần số cộng hưởng

Cài đặt và kết nối ADXL345

Chuẩn bị phần cứng

Linh kiện cần thiết:

  • ADXL345 accelerometer (hoặc MPU-9250, LIS2DW, LIS3DH)
  • Dây kết nối (6 dây cho SPI connection)
  • 3D print mount để gắn accelerometer lên toolhead/bed

Lưu ý quan trọng về mounting: Đảm bảo accelerometer và các vít giữ nó không chạm vào bất kỳ phần kim loại nào của máy in. Mount phải được thiết kế để đảm bảo cách điện accelerometer khỏi khung máy in.

Kết nối ADXL345 với Raspberry Pi

Sơ đồ kết nối SPI:

ADXL345    Raspberry Pi
VCC     -> 3.3V (Pin 1)
GND     -> GND (Pin 6)  
CS      -> GPIO 8 (Pin 24)
SDO     -> GPIO 9 (Pin 21)
SDA     -> GPIO 10 (Pin 19)
SCL     -> GPIO 11 (Pin 23)

Cài đặt các phần cần thiết trong Pi: Việc đo cộng hưởng và hiệu chỉnh tự động shaper cần các phần mềm phụ thuộc bổ sung không được cài đặt mặc định:

sudo apt update
sudo apt install python3-numpy python3-matplotlib libatlas-base-dev libopenblas-dev

Cài đặt NumPy trong môi trường Klipper:

~/klippy-env/bin/pip install -v numpy
Lưu ý: Quá trình này có thể mất 10-20 phút tùy thuộc vào hiệu năng CPU.

Cấu hình ADXL345 trong printer.cfg

Cấu hình cơ bản:

[mcu rpi]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: rpi:None
spi_bus: spidev0.0

[resonance_tester]
accel_chip: adxl345
probe_points:
    150, 150, 20  # Điểm test ở giữa bed, 20mm phía trên

Cho bed slinger (cần 2 accelerometer):

[adxl345 hotend]
cs_pin: rpi:None
spi_bus: spidev0.0

[adxl345 bed]  
cs_pin: ...  # Kết nối với MCU board

[resonance_tester]
accel_chip_x: adxl345 hotend
accel_chip_y: adxl345 bed
probe_points:
    150, 150, 20

Kiểm tra kết nối

Test ADXL345:

ACCELEROMETER_QUERY

Kết quả mong đợi:

Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800

Test noise level:

MEASURE_AXES_NOISE

Kết quả tốt: noise trong khoảng 1-100. Nếu > 1000 có thể có vấn đề về cảm biến hoặc nguồn điện.


Thực hiện resonance testing

Chuẩn bị cho test

Mounting accelerometer:

  • Cho trục X: Gắn ADXL345 lên toolhead/hotend
  • Cho trục Y (bed slinger): Gắn ADXL345 lên bed
  • CoreXY/Delta: Cần align 2 trục accelerometer với 2 trục máy in

Cài đặt axes_map (nếu cần):

[adxl345]
cs_pin: rpi:None
axes_map: -y, -x, z  # Điều chỉnh theo cách mount

Chạy resonance test

Disable input shaper hiện tại:

SET_INPUT_SHAPER SHAPER_FREQ_X=0 SHAPER_FREQ_Y=0

Test cộng hưởng trục X:

TEST_RESONANCES AXIS=X

Test cộng hưởng trục Y:

TEST_RESONANCES AXIS=Y
Lưu ý: Di chuyển accelerometer giữa 2 test nếu dùng bed slinger

Phân tích kết quả

Tạo biểu đồ từ dữ liệu:

~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png

Ví dụ kết quả:

Fitted shaper 'zv' frequency = 41.4 Hz (vibrations = 2.7%, smoothing ~= 0.094)
To avoid too much smoothing with 'zv', suggested max_accel <= 6700 mm/sec^2

Fitted shaper 'mzv' frequency = 40.4 Hz (vibrations = 0.0%, smoothing ~= 0.125)  
To avoid too much smoothing with 'mzv', suggested max_accel <= 4800 mm/sec^2

Fitted shaper 'ei' frequency = 48.2 Hz (vibrations = 0.0%, smoothing ~= 0.139)
To avoid too much smoothing with 'ei', suggested max_accel <= 4300 mm/sec^2

Recommended shaper is mzv @ 40.4 Hz

Cấu hình Input Shaper

Cập nhật printer.cfg:

[input_shaper]
shaper_freq_x: 40.4
shaper_type_x: mzv
shaper_freq_y: 35.2  
shaper_type_y: mzv

[printer]
max_accel: 4800  # Không vượt quá giá trị khuyến nghị

Auto-calibration (phương pháp nhanh)

Chạy auto-calibration:

SHAPER_CALIBRATE

Klipper sẽ tự động:

  • Test cả 2 trục
  • Phân tích dữ liệu
  • Khuyến nghị shaper tốt nhất
  • Lưu kết quả với SAVE_CONFIG

Pressure Advance - Cải thiện chất lượng góc cạnh

Hiểu về Pressure Advance

Pressure Advance thực hiện hai việc hữu ích - giảm ooze trong các chuyển động không extrude và giảm blobbing tại các góc. Khi toolhead tăng tốc hoặc giảm tốc, áp suất trong nozzle tạo ra độ trễ khiến extrusion không đồng bộ với chuyển động.

Cơ chế hoạt động:

  • Dự đoán áp suất buildup bên trong nozzle
  • Push thêm filament trong quá trình tăng tốc
  • Rút filament trong quá trình giảm tốc
  • Cân bằng pressure để extrusion đồng bộ với chuyển động

Dấu hiệu cần Pressure Advance:

  • Góc bị bulging/blobbing (quá nhiều nhựa)
  • Góc bị rounded (thiếu nhựa)
  • Stringing giữa các chuyển động
  • Inconsistent extrusion ở tốc độ cao

Chuẩn bị test Pressure Advance

Yêu cầu trước khi test:

  • Extruder rotation distance đã hiệu chỉnh chính xác
  • PID tuning hoàn tất
  • Input Shaper đã cấu hình (nếu có)
  • Máy in hoạt động ổn định

Cài đặt slicer cho test:

  • Tốc độ cao: 100mm/s
  • Layer height: ~75% đường kính nozzle (0.3mm cho nozzle 0.4mm)
  • Zero infill, 1 bottom layer, no top layers
  • 2-3 perimeters
  • Tắt "dynamic acceleration control"
  • Tắt "z-lift on retract"

Thực hiện Pressure Advance Calibration

Tải test model: Download square_tower.stl từ Klipper docs hoặc sử dụng tower tùy chỉnh.

Chuẩn bị test environment:

SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500

Chạy tuning tower:

Cho Direct Drive Extruder:

TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005

Cho Bowden Extruder:

TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.020

Phân tích kết quả test

Đánh giá các tầng:

  • Tầng thấp (PA thấp): Góc bị bulging, thừa nhựa
  • Tầng cao (PA cao): Góc rounded, thiếu nhựa ở góc
  • Tầng tối ưu: Góc sắc nét, không bulging hay rounded

Tính toán giá trị PA:

pressure_advance = START + measured_height * FACTOR

Ví dụ: Tầng tốt nhất ở 12.9mm

  • Direct drive: 0 + 12.9 * 0.005 = 0.0645
  • Bowden: 0 + 12.9 * 0.020 = 0.258

Cập nhật cấu hình

Thêm vào printer.cfg:

[extruder]
pressure_advance: 0.0645  # Giá trị đã tính toán
pressure_advance_smooth_time: 0.040  # Default value

Giá trị PA điển hình:

  • Direct Drive: 0.02 - 0.08
  • Bowden: 0.1 - 0.2 (có thể lên đến 1.0)

So sánh Linear Advance vs Pressure Advance

Cả hai đều là triển khai của cùng một khái niệm

Khái niệm cơ bản

Cả hai đều là triển khai của cùng một khái niệm, thậm chí đến đơn vị của hằng số tuning đều là giây (mm/(mm/s)). Sự khác biệt nằm ở chi tiết áp dụng.

Linear Advance (Marlin):

  • Thay đổi giới hạn acceleration và jerk của trục E
  • Làm chậm tốc độ in để đảm bảo giới hạn của E-axis
  • Không còn E-jerk, E-acceleration bị giới hạn bởi K × E-velocity

Pressure Advance (Klipper):

  • Giữ được tốc độ cao
  • Áp dụng phương pháp làm mịn tiên tiến
  • Cho phép thực hiện các bước di chuyển không thể với Marlin

Ưu nhược điểm

Marlin Linear Advance:

  • ✅ Dễ bắt đầu
  • ❌ Làm chậm đáng kể tốc độ in
  • ❌ Cần tăng acceleration/jerk limits để bù trừ

Klipper Pressure Advance:

  • ✅ Không ảnh hưởng tốc độ in
  • ✅ Cho phép các bước di chuyển "bất khả thi" với Marlin
  • ✅ Hiệu suất in tốt hơn
  • ❌ Cần tối ưu nhiều

Về lâu dài, cách tiếp cận của Klipper sẽ luôn thắng về mặt hiệu suất in, vì phương pháp làm mịn của Klipper cho phép "gian lận" và thực hiện các chuyển động không thể với Marlin.


Fine-tuning và tối ưu hóa

Điều chỉnh Pressure Advance Smooth Time

Pressure advance smooth time kiểm soát cách áp dụng pressure advance trong quá trình in. Nó dựa vào các thay đổi tốc độ và điều chỉnh tốc độ thay đổi áp suất nozzle.

Cấu hình smooth time:

[extruder]
pressure_advance: 0.065
pressure_advance_smooth_time: 0.040  # Default

Dấu hiệu cần điều chỉnh:

  • Quá thấp (< 0.020): Thay đổi áp suất đột ngột, chất lượng kém
  • Quá cao (> 0.060): Không điều chỉnh áp suất đủ nhanh
  • Tối ưu: Cân bằng giảm print defects

So sánh với mẫu in thực tế

Test với mẫu in thực tế:

  • In models có nhiều góc sắc và travel
  • Kiểm tra góc, overhangs, và bridges
  • So sánh trước và sau khi áp dụng PA

Tips:

  • Test với từng loại filament riêng biệt
  • Re-calibrate khi thay đổi nozzle
  • Căn lại khi thay đổi nhiệt độ in đáng kể
  • Căn lại sau khi enable/disable Input Shaper

Macro hỗ trợ testing

Macro test nhanh PA:

[gcode_macro PA_TEST]
gcode:
    {% set PA_START = params.PA_START|default(0)|float %}
    {% set PA_STEP = params.PA_STEP|default(0.005)|float %}
    {% set E_TEMP = params.E_TEMP|default(210)|float %}
    
    SET_HEATER_TEMPERATURE HEATER=extruder TARGET={E_TEMP}
    SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500
    TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START={PA_START} FACTOR={PA_STEP}

Sử dụng:

PA_TEST PA_START=0.02 PA_STEP=0.005 E_TEMP=215

Vấn đề thường gặp

Input Shaper không hiệu quả:

  • Kiểm tra gắn cảm biến chắc chắn chưa
  • Đảm bảo axes_map đúng
  • Test với tốc độ/gia tốc khác nhau
  • Xem xét và thử với các giá trị PA khác nhau

Pressure Advance không thay đổi:

  • Kiểm tra việc đùn, sẽ khác nhau giữa direct và bowden
  • Đảm bảo nhựa không bị kẹt
  • Test với khoảng giá trị PA rộng hơn
  • Đảm bảo slicer settings đúng

Kết hợp Input Shaper + PA:

  • Cấu hình Input Shaper trước
  • Re-calibrate PA sau khi bật Input Shaper
  • Theo dõi sự khác nhau khi bật tắt 2 tính năng
  • Hiệu chỉnh max_accel phù hợp với cả hai

Kết luận

Input Shaper và Pressure Advance là hai tính năng nâng cao quan trọng nhất giúp Klipper vượt trội so với các firmware khác. Khi được cấu hình đúng cách, chúng cho phép in ở tốc độ cao mà vẫn duy trì chất lượng tuyệt vời.


Bài tiết theo: Hướng dẫn tạo macro Klipper cơ bản


Tài liệu tham khảo

  1. Klipper Official Documentation - Measuring Resonances
  2. Klipper Official Documentation - Resonance Compensation
  3. Klipper Official Documentation - Pressure Advance
  4. Obico - Klipper Input Shaping Guide
  5. Obico - Klipper Pressure Advance Tuning
  6. Ellis' Print Tuning Guide - Pressure Advance
  7. 3D Printing Stack Exchange - Linear Advance vs Pressure Advance
  8. Clever Creations - ADXL345 Setup Guide
  9. LDO Motors - Input Shaper Toolkit Documentation

Read more

Mua máy in 3D hãng hay tự lắp ráp (DIY): Lựa chọn nào phù hợp cho người mới bắt đầu?

Mua máy in 3D hãng hay tự lắp ráp (DIY): Lựa chọn nào phù hợp cho người mới bắt đầu?

Máy in 3D đang ngày càng phổ biến tại Việt Nam, từ những người đam mê công nghệ đến học sinh, sinh viên và các doanh nghiệp nhỏ. Tuy nhiên, câu hỏi đặt ra cho người mới bắt đầu là: nên mua máy in 3D có sẵn từ hãng hay tự lắp ráp để tiết kiệm chi phí? Chúng ta cùng phân tích nhé!

By Hải Nguyễn