
### 使用本模块需要对klipper使用有一定知识和经验积累，请在使用前确保你具备自己进行配置修改的能力
为了保证精度，请安装时尽可能让传感器线圈板的顶面低于加热块的底面。
## 教程里没有提到的不要做（尤其是G28），提到的请务必做
在用户目录下执行下方git命令来下载配套脚本
```
git clone https://gitee.com/NBTP/IDM.git 
```
执行chmod +x IDM/install.sh
如果你不确定自己的pip源是否是国内源或者能否正常下载新的库，或者你完全不知道pip是什么,建议使用以下命令将pip设置为清华源:
```
~/klippy-env/bin/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
```
然后执行下方命令进行安装
```
IDM/install.sh
```
下方为添加到klipper的printer.cfg中的配置示范
```
[idm]
serial:
#canbus_uuid:
#   Path to the serial port for the idm device. Typically has the form
#   /dev/serial/by-id/usb-idm_idm_...
speed: 40.
#   Z probing dive speed.
lift_speed: 5.
#   Z probing lift speed.
backlash_comp: 0.5
#   Backlash compensation distance for removing Z backlash before measuring
#   the sensor response.
x_offset: 0.
#   X offset of idm from the nozzle.
y_offset: 21.1
#   Y offset of idm from the nozzle.
trigger_distance: 2.
#   idm trigger distance for homing.
trigger_dive_threshold: 1.5
#   Threshold for range vs dive mode probing. Beyond `trigger_distance +
#   trigger_dive_threshold` a dive will be used.
trigger_hysteresis: 0.006
#   Hysteresis on trigger threshold for untriggering, as a percentage of the
#   trigger threshold.
cal_nozzle_z: 0.1
#   Expected nozzle offset after completing manual Z offset calibration.
cal_floor: 0.1
#   Minimum z bound on sensor response measurement.
cal_ceil:5.
#   Maximum z bound on sensor response measurement.
cal_speed: 1.0
#   Speed while measuring response curve.
cal_move_speed: 10.
#   Speed while moving to position for response curve measurement.
default_model_name: default
#   Name of default idm model to load.
mesh_main_direction: x
#   Primary travel direction during mesh measurement.
#mesh_overscan: -1
#   Distance to use for direction changes at mesh line ends. Omit this setting
#   and a default will be calculated from line spacing and available travel.
mesh_cluster_size: 1
#   Radius of mesh grid point clusters.
mesh_runs: 2
#   Number of passes to make during mesh scan.
```
请注意调整配置中的x y方向偏移。确保校准过程中喷头会将线圈移动到原先喷嘴所在xy位置。
将这段配置放进printer.cfg并将serial修改为你查询到的idm的串口号，查询指令为
```
ls /dev/serial/by-id/*
```
### 对于can版本，将使用canbus_uuid代替serial
使用下方命令，搜索can的uuid并填入
```
~/klippy-env/bin/python ~/klipper/lib/canboot/flash_can.py -q
```
请注意，填入uuid后请删掉serial:

-------------------------------------------------
在配置里再加入（你不加有你好果子吃）
```
[force_move]
enable_force_move: true
```

### 之后把[probe]模块删除
如果你是用过klicky，请记得移除它的相关脚本的引用
并将z限位(stepper_z的endstop_pin:后面)修改为probe:z_virtual_endstop
还需要设置
```
[safe_z_home]
home_xy_position: <你的x轴中心坐标>,<你的y轴中心坐标>
z_hop: 10
```
如果你已经配置过safe_z_home或者homing_override，可以忽视这一步
#### 记得设置[bed_mesh]不然会报错
bed_mesh中的zero_reference_position不要配置

重启之后归零x和y（g28 x y ,不要归零z）
然后输入SET_KINEMATIC_POSITION z=80
之后就可以控制z方向移动，将喷嘴贴到平台上（也可以垫A4纸确保间隙合适）
再输入SET_KINEMATIC_POSITION z=0（注意，这和之前那条不一样）
之后执行idm_calibrate的指令
弹出的偏移控制框，请点击-0.1的偏移后确认，会自动进行校准
如果校准后重启之后，无法归零，报错no model，那么你的配置文件的自动生成配置格式错误，请修正格式。

如果你的机器是诸如VORON2.4这样的4z机器，请加入以下配置到配置文件中
```
[gcode_macro QUAD_GANTRY_LEVEL]
rename_existing: _QUAD_GANTRY_LEVEL
gcode:
    SAVE_GCODE_STATE NAME=STATE_QGL
    BED_MESH_CLEAR
    {% if not printer.quad_gantry_level.applied %}
      _QUAD_GANTRY_LEVEL horizontal_move_z=10 retry_tolerance=1
    {% endif %}
    _QUAD_GANTRY_LEVEL horizontal_move_z=2
    G28 Z
    RESTORE_GCODE_STATE NAME=STATE_QGL
```
如果你的机器是诸如VORON三叉戟这样的3z机器，请加入以下配置到配置文件中
```
[gcode_macro Z_TILT_ADJUST]
rename_existing: _Z_TILT_ADJUST
gcode:
    SAVE_GCODE_STATE NAME=STATE_Z_TILT
    BED_MESH_CLEAR
    {% if not printer.z_tilt.applied %}
      _Z_TILT_ADJUST horizontal_move_z=10 retry_tolerance=1
    {% endif %}
    _Z_TILT_ADJUST horizontal_move_z=2
    G28 Z
    RESTORE_GCODE_STATE NAME=STATE_Z_TILT
```
建议在moonraker.conf配置文件中加入下方配置,便于后续自动更新IDM的脚本
```
[update_manager idm]
type: git_repo
channel: dev
path: ~/IDM
origin: https://gitee.com/NBTP/IDM.git
env: ~/klippy-env/bin/python
requirements: requirements.txt
install_script: install.sh
is_system_service: False
managed_services: klipper
info_tags:
  desc=idm
```

含加速计(lis2dw)的版本可以在配置中添加以下内容启用加速计:
请注意,加速计的配置务必放置到IDM配置的后面。
```
[lis2dw]
cs_pin: idm:PA3
spi_bus: spi1

[resonance_tester]
accel_chip: lis2dw
probe_points:
    125, 125, 20  #此处设置为你进行共振测量时喷头所处坐标
```
配置好之后使用shaper_calibrate进行共振测量

准备工作结束后调一下z偏移再打印，z偏移保存在model_offset变量中
### 调整z偏移前请务必关闭网床，完成机械调平，调平后要再归零一次