2026年5月10日 星期日

使用 servo 控制 cr touch

 



--------------
[servo my_probe]
pin: can: PB9 # 桿子伸出/縮回的控制引腳 (即原本 BLTouch 的 PWM pin)
initial_angle: 90
maximum_servo_angle: 180

minimum_pulse_width: 0.0001   # 確保下限夠低 (100µs)
maximum_pulse_width: 0.0025   # 確保上限夠高 (2500µs)

[probe]
pin: ^can:PB8 # 原本 BLTouch 的輸出引腳
# 注意加上 ^ (上拉電阻),因為 CR Touch 觸發時通常是將信號拉低 (Open Collector)
z_offset: 0

activate_gcode:
    PROBE_DEPLOY

deactivate_gcode:
    # PROBE_STOW
    # 當探針完成一次探測後,CR Touch 可能已經自動縮回並閃紅燈了
    # 所以我們需要在這裡發送 RESET 脈衝,讓它恢復正常
    SET_SERVO SERVO=my_probe_servo WIDTH=0.00220
    G4 P200
    {action_respond_info("cr touch reset")}
    SET_SERVO SERVO=my_probe_servo WIDTH=0.001475 # 回到標準收回狀態

[gcode_macro PROBE_DEPLOY]
gcode:
    G4 P500
    # SET_SERVO SERVO=my_probe ANGLE=10
    SET_SERVO SERVO=my_probe WIDTH=0.00060
    G4 P500  # 確保探針在重力作用下已經完全穩定伸出

[gcode_macro PROBE_STOW]
gcode:
    # SET_SERVO SERVO=my_probe ANGLE=90
    SET_SERVO SERVO=my_probe WIDTH=0.0014750
    G4 P500  # 確保探針在重力作用下已經完全穩定縮回
  
[gcode_macro PROBE_RESET]
gcode:
    SET_SERVO SERVO=my_probe WIDTH=0.002200
    G4 P300 # 等待 300ms
    # SET_SERVO SERVO=my_probe ANGLE=90  # 回到縮回狀態
    SET_SERVO SERVO=my_probe WIDTH=0.0014750
    G4 P500  # 確保探針在重力作用下已經完全穩定縮回

[gcode_macro PROBE_TEST]
gcode:
    # SET_SERVO SERVO=my_probe ANGLE=160
    # SET_SERVO SERVO=my_probe WIDTH=0.001800
    SET_SERVO SERVO=my_probe WIDTH=0.000600
    G4 P1000 # 等待 3秒
    # SET_SERVO SERVO=my_probe ANGLE=90  # 回到縮回狀態
    SET_SERVO SERVO=my_probe WIDTH=0.0014750
    G4 P500  # 確保探針在重力作用下已經完全穩定縮回

[delayed_gcode boot_probe_test]
initial_duration: 2.0  # Klipper 啟動 2 秒後執行
gcode:
    # 1. 先執行 Reset (清除可能存在的紅燈)
    SET_SERVO SERVO=my_probe WIDTH=0.00220
    G4 P500
    
    # 2. 測試:伸出
    SET_SERVO SERVO=my_probe WIDTH=0.00060
    G4 P800
    
    # 3. 測試:縮回 (回到待命狀態)
    SET_SERVO SERVO=my_probe WIDTH=0.001475
    G4 P200
    
    # 在終端機顯示訊息提醒你
    M118 CR Touch Boot Test Completed.
--------------




沒有留言:

張貼留言

網誌存檔