Ngàm gắn Prusa Nextruder lên Voron 2.4
Bộ ngàm để gắn Prusa Nextruder lên Voron 2.4 nhằm thử nghiệm load cell probing trong Klipper. Bài viết chia sẻ linh kiện cần mua, các vướng mắc về wiring/SPI/PWM và nhánh Klipper cộng đồng để test.
Mô tả
Mục tiêu của dự án này là dựng một bộ test rig để chứng minh load cell probing trong Klipper hoạt động ngon. Mình làm cái này suốt 2 năm rồi, mà trong thời gian đó phần hardware phát triển không được bao nhiêu. Gặp đúng bài toán kiểu 🐔 hay 🥚, mình quyết định viết phần mềm trước, rồi dùng tạm bất kỳ phần cứng nào có sẵn.
Có nên gắn Nextruder lên Voron không?
Thiệt tình thì mình rất mong mọi người làm, vì mình cần feedback cho code load cell probing. Đây là lý do bạn sẽ muốn làm:
- Bạn có load cell probing, cho first layer ngon nhất mà mình từng trải nghiệm trên một máy in 3D DIY.
- Bạn muốn thử Nextruder với bộ gear bự đó. Biết đâu kết hợp Pressure Advance và Resonance Compensation của Klipper sẽ cải thiện chất lượng in hơn so với những gì Prusa thể hiện trên MK4 và XL?
- Bạn muốn một bộ máy “bleeding edge” mà chưa ai có. 😎
- Bạn muốn giúp mình đưa load cell probing vào Klipper.
Nói thì dễ, cho coi hàng đi!
Cái này sẽ khó cỡ nào?
Khó. Bạn sẽ gặp mấy thứ cản đường sau:
- Bạn có thể mua MK3.9 upgrade kit có đủ hết phần cần, nhưng nó cũng kèm theo một đống thứ bạn không cần.
- Hoặc là Prusa giờ sẽ bán hầu hết linh kiện lẻ của Nextruder dưới dạng spares:
- Load Cell / Heat Break
- Love Board
- Nextruder Hot End Assembly
- Extruder Motor
- Nextruder Gears
- 2 x Nozzle Thumb Screws
- Nhưng vẫn thiếu vài món quan trọng:
- Bạn sẽ cần dây wiring harness cho Love Board. Nó dùng connector Molex CLIK-Mate rất xịn, mà lại không có kềm bấm cos nào “kinh tế” cho loại này. Các phần cần: connector, pins, crimping tool (không lý tưởng lắm), và kính lúp. Có một bài ở đây mô tả pin out của LoveBoard. Hoặc bạn có thể mua dây chính hãng Wiring Harness rồi re-wire theo nhu cầu.
- Chip HX717 trên Love Board giao tiếp về main board qua SPI. Bình thường làm vậy sẽ không ổn vì dây dài quá, tín hiệu dễ bị méo. Prusa dùng ST490ABDR để truyền tín hiệu về main board. Bạn sẽ cần một con chip như vậy ở đầu còn lại để giải mã về lại SPI chuẩn. Bạn cũng sẽ cần một cái board để gắn chip lên.
- Cổng fan trên Love Board PWM bằng cách nhấp (pulse) chân dương. Trong khi đa số MCU board tương thích Klipper PWM bằng cách nhấp chân âm. Nghĩa là bạn sẽ phải đi dây quạt trực tiếp.
- Bạn sẽ phải chạy một fork của Klipper mainline có kèm code load cell probing. Đây là Community Testing Branch
Vậy có đáng không?
Bạn tự cân nhắc coi đây có phải kiểu dự án bạn muốn nhận không.
- First layer là thứ Voron của mình còn thiếu. Mình có thermal compensation cho giãn nở nozzle và frame rồi, nhưng nhiêu đó thôi. Giờ đúng kiểu “fire and forget”.
- Nextruder có vẻ đáng công làm. Nó chỉ cần khoảng một nửa pressure advance so với E3D Revo + LGX.
Code ngon cỡ nào?
Mình đã đem 3 ý tưởng từ code base của Prusa sang Klipper:
- Filtering trên MCU: Mình đã implement IIR filtering có thể cấu hình ngay trên MCU bằng fixed point math để nó chạy nhanh trên chip ARM Cortex M0+. Đây là cách Prusa loại drift do filament và bowden tube gây ra khi cần detect lúc probe chạm build plate.
- “Pullback Move”: Prusa sẽ nhấc nhẹ ra khỏi build plate bằng một cú move nhỏ và tương đối chậm trước khi retract. Điểm mà probe vừa mất tiếp xúc với build plate mới là tọa độ z=0 “chuẩn”. Nhờ vậy bạn có thể probe ở 5mm/s mà vẫn được độ chính xác cao như tốc độ chậm, kể cả với sensor HX717 320Hz.
- Tap Decomposition: Lệnh probe và pullback move được đưa qua một engine phân tích bằng Python để tách thành 5 đoạn line. Nhờ vậy có thể phát hiện các lỗi lớn khi probing.
- Code giờ dựa trên Bulk Sensor work của Kevin và dùng linear regression để lấy timing chính xác của các mẫu load cell. Mình cam kết giữ branch luôn cập nhật và merge hỗ trợ vào Klipper.
Cũng có vài lưu ý:
- Phần mềm đang “in development”, chưa xong và có thể làm hư máy in của bạn. Mình đã cố gắng hết sức để bảo vệ máy, nhưng không thể hứa chắc 100%.
- Mình chưa port phần code proprietary dựa trên Machine Learning của Prusa để phát hiện “bad taps”. Code này được machine-generated và dựa trên dữ liệu Prusa chỉ thu từ máy của họ, nên mình không thể tái sử dụng trực tiếp.
- Bạn phải probe khi “ấm” với nozzle sạch. Chiến lược này giống Voron Tap. Giữ nozzle dưới 150C cho homing và probing. Mình có nâng cấp
z_thermal_adjustđể bù dễ hơn cho sự giãn nở của nozzle khi lên nhiệt độ in. - Bạn sẽ cần nozzle brush hoặc vệ sinh nozzle thủ công trước mỗi lần in.
Độ chính xác khi Probe
Trên Voron2.4 với toolhead Nextruder và chip sensor HX717, mình đo được:
- ~2.5 micron biên độ (range) qua 50 lần probe
- 1 micron range qua 10 lần probe
- dưới 1 micron range giữa từng lần probe với nhau (probe-to-probe)
Một micron là 0.001mm. Vậy trong một lớp 0.2mm có 200 micron. Probe cạnh tranh gần nhất chắc là Euclid switch probe khoảng ~12 micron range qua 50 lần probe, nhưng probe-to-probe của nó gần như cũng cỡ đó. Nên trong bài test PROBE_ACCURACY tiêu chuẩn với 10 lần probe, Load Cell lặp lại (repeatable) tốt hơn Euclid khoảng 10 lần.
Phần lớn range của load cell probe là do hysteresis của toolhead: nghĩa là nó biến dạng từ từ qua nhiều lần probe. Kết quả bed mesh thực tế của bạn có khi còn tốt hơn mấy bài test này.
Lấy code ở đâu?
- Có một branch trên GitHub: https://github.com/garethky/klipper/tree/load-cell-probe-community-testing
- Nhớ đọc documentation, link đầy đủ nằm trong file readme chính
- Config cho máy tham chiếu nằm trên GitHub: https://github.com/garethky/klipper-voron2.4-config/tree/nextruder-hx717
- Có thread đang hoạt động trên klipper discourse: https://klipper.discourse.group/t/strain-gauge-load-cell-based-endstops/2134/
- Model OnShape của toolhead nằm ở đây.
Giấy phép
File mô hình
Chưa có bản in nào được khoe. Hãy là người đầu tiên!
Chưa có bình luận nào. Hãy là người đầu tiên!