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.
Danh sách bài viết:
- Giới thiệu Klipper
- Chuẩn bị phần cứng và cài đặt Klipper
- Flash firmware và tạo file printer.cfg
- Hiệu chỉnh cơ bản
- Input Shaper và Pressure Advance
- Tạo macro Klipper cơ bản
- Khắc phục sự cố và bảo trì hệ thống
Input Shaper - Loại bỏ ringing và ghosting

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

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
- Klipper Official Documentation - Measuring Resonances
- Klipper Official Documentation - Resonance Compensation
- Klipper Official Documentation - Pressure Advance
- Obico - Klipper Input Shaping Guide
- Obico - Klipper Pressure Advance Tuning
- Ellis' Print Tuning Guide - Pressure Advance
- 3D Printing Stack Exchange - Linear Advance vs Pressure Advance
- Clever Creations - ADXL345 Setup Guide
- LDO Motors - Input Shaper Toolkit Documentation