
3D打印机_Klipper(原生)热床称重调平方案ADS1220
简介
本方案为klipper原生支持的称重传感器方案 不同于通过模拟输出PIN脚的称重方案 ,我直接使用了klipper官方原生支持 的ADS1220的芯片方案 并增加了一个MCU来实现CAN通讯
简介:本方案为klipper原生支持的称重传感器方案 不同于通过模拟输出PIN脚的称重方案 ,我直接使用了klipper官方原生支持 的ADS1220的芯片方案 并增加了一个MCU来实现CAN通讯开源协议
:CC BY 4.0
描述
视频链接:
项目简介
本项目是一个 基于 Klipper 的称重热床 / 力反馈测量方案,通过在 3D 打印机热床结构中引入 Load Cell(应变式称重传感器)+ 高精度 ADC(ADS1220),实现对热床受力的测量,并接入Klipper固件系统。
该方案可用于称重检测 ,Z轴接触检测,异常受力检测/撞床保护


项目功能
实现热床整体受力的测量与反馈
支持 Klipper 原生 load_cell 模块接入
可用于 Z 轴接触判定(非接触式探针替代方案)
可检测异常受力情况(如喷头撞床、异物等)
适用于klipper系统 3D 打印机
项目难点
在 Klipper 称重热床方案中使用4个全桥传感器并接会带来严重的偏移问题 ,导致测量数据波动较大
因此引入多圈电位器解决称重传感器在实际机械结构下工作点偏移严重的问题。
此处省略1000字
看图就知道我测试了多少次了 ,打板等板 ,等零件...中间还有验证不成功的被我扔了 ..

项目参数
传感器类型:应变式称重传感器(Load Cell)
激励电压:约 4V(由主控板或外部稳压提供)
ADC 芯片:ADS1220(24bit Δ-Σ ADC)
输入方式:真差分采样(AIN0 / AIN1)
增益设置:64 / 128(推荐 128)
采样率:660Hz 或 Turbo 模式 2000Hz
通信接口:SPI(支持硬件或软件 SPI)
固件支持:Klipper(官方 load_cell 模块)
数据单位:基于满量程百分比(%FS)
原理解析(硬件说明)
本项目主要由以下几个部分组成:
机械结构部分
热床采用“悬浮式”或“串联受力”结构安装方式,使热床在 Z 方向上的所有受力 必须经过 Load Cell,从结构上避免力的旁路传递。
称重传感器(Load Cell)
利用应变片在受力时电阻变化的特性,将机械形变转换为微小差分电压信号(µV~mV 级)。
高精度 ADC(ADS1220)
通过 ADS1220 对 Load Cell 的微小差分信号进行高增益、低噪声采样,并通过 SPI 接口与主控 MCU 通信。
Klipper 固件接入
在 Klipper 中启用 load_cell 模块,对 ADC 数据进行采样、滤波与归一化处理,并将其作为力反馈信号供其他逻辑调用。
软件代码(我正常使用的示例)
对klipper来说使用称重传感器(Load Cell)来进行Z轴接触判定 ,必须自定义home归位宏 ,我讨厌在进行归位宏的时候Z轴上升 ,故我取消了归位抬Z的动作 ,有需要的朋友可以自行加上
canbus_uuid: 7a92b4ba4603
# LOAD_CELL_DIAGNOSTIC 检查传感器统计数据收集 10 秒
# LOAD_CELL_CALIBRATE 校准负载传感器/交互界面
# TARE 校准负载传感器/清零操作
# CALIBRATE GRAMS=5168 校准负载传感器/施加已知的重量
# ACCEPT 校准负载传感器/保存结果
# ABORT 取消过程
# LOAD_CELL_TEST_TAP 测试能否触发
# LOAD_CELL_READ 读取重量数据
[load_cell_probe] # 载荷传感器探头配置
sensor_type: ads1220
cs_pin:ADS1220:gpio11
spi_speed: 512000
spi_software_sclk_pin:ADS1220:gpio27
spi_software_mosi_pin:ADS1220:gpio14
spi_software_miso_pin:ADS1220:gpio15
data_ready_pin: ADS1220:gpio26
gain: 128
sample_rate: 2000
input_mux:AIN0_AIN1
force_safety_limit: 2000 # 力安全限制
# # 相对于载荷传感器上 reference_tare_counts 的探测安全力限制。默认为 +/-2公斤。
trigger_force: 190 # 触发力
# 探头将触发的力。默认为 75 克。
drift_filter_cutoff_frequency: 0.5 # 漂移滤波器截止频率
# 在归位和探测期间启用可选的连续去皮功能以抑制漂移。
# 该值为一个频率,单位为赫兹(Hz),低于此频率的漂移将被忽略。
# 此选项需要 SciPy 库。默认值:None(不启用)
drift_filter_delay: 2 # 漂移滤波器延迟
# 漂移滤波器的延迟,或称为'阶数'。这控制了做出触发检测所需的样本数量。
# 可以为 1 或 2,默认为 2。
# buzz_filter_cutoff_frequency: 39.0 # 高频噪声滤波器截止频率
# 该值为一个频率,单位为赫兹(Hz),高于此频率的载荷传感器高频噪声将被过滤掉。
# 此选项需要 SciPy 库。默认值:None(不启用)
buzz_filter_delay: 2 # 高频噪声滤波器延迟
# 高频噪声滤波器的延迟,或称为'阶数'。这控制了做出触发检测所需的样本数量。
# 可以为 1 或 2,默认为 2。
notch_filter_frequencies: 50, 60 # 陷波滤波器频率
# 1个或2个频率值,单位为赫兹(Hz),用于从载荷传感器数据中滤除。此功能旨在抑制电源线噪声。
# 此选项需要 SciPy 库。默认值:None(不启用)
notch_filter_quality: 2.0 # 陷波滤波器品质因数
# 控制陷波滤波器移除的频率范围宽度。数值越大,产生的滤波器越窄。
# 最小值为 0.5,最大值为 3.0。默认值:2.0。
tare_time: 0.066 # 去皮时间
# 每次探测前对载荷传感器进行去皮所用的时间,单位为秒。
# 默认值为:4 / 60 = 0.066。这收集了4个周期(60Hz市电)的样本以消除电源线噪声。
z_offset: 0 # Z轴偏移
x_offset: 0
y_offset: 0
# speed:20 # 探测速度
# samples: 10 # 采样次数
#sample_retract_dist: # 采样回退距离
#lift_speed: # 抬升速度
#samples_result: # 采样结果计算方式
# samples_tolerance: 0 # 采样容差
# samples_tolerance_retries:3 # 采样容差异常重试次数
#activate_gcode: # 激活G代码
#deactivate_gcode: # 停用G代码
# 有关上述参数的描述,请参阅 "[probe]" 部分。
[gcode_macro _HOME_Z_FROM_LAST_PROBE]
gcode =
{% set z_probed = printer.probe.last_z_result %}
{% set z_position = printer.toolhead.position[2] %}
{% set z_actual = z_position - z_probed %}
SET_KINEMATIC_POSITION Z={z_actual}
[gcode_macro _HOME_X]
gcode =
G28 X
G91
G0 X-10 F1800
G90
G4 P1000
[gcode_macro _HOME_Y]
gcode =
G28 Y
G91
G0 Y-10 F1800
G90
G4 P1000
[gcode_macro _HOME_Z]
gcode =
{% set z_config = printer.configfile.settings.stepper_z %}
{% set lift_speed = printer.configfile.settings.load_cell_probe.lift_speed * 60 %}
{% set x_center = (printer.configfile.settings.stepper_x.position_min + printer.configfile.settings.stepper_x.position_max) / 2 %}
{% set y_center = (printer.configfile.settings.stepper_y.position_min + printer.configfile.settings.stepper_y.position_max) / 2 %}
SET_GCODE_OFFSET Z=0
G90
G1 X{x_center} Y{y_center} F{150 * 60}
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum[2]}
PROBE PROBE_SPEED={z_config.homing_speed} BAD_TAP_STRATEGY=RETRY
_HOME_Z_FROM_LAST_PROBE
PROBE SPEED={z_config.second_homing_speed}
_HOME_Z_FROM_LAST_PROBE
G91
G1 Z10 F{lift_speed}
[homing_override]
axes = xyz
gcode =
{% set home_all = ('X' not in params) and ('Y' not in params) and ('Z' not in params) %}
{% if 'z' not in printer.toolhead.homed_axes %}
SET_KINEMATIC_POSITION Z=10
G90
G0 Z10 F600
{% endif %}
{% if home_all or 'Z' in params %}
{% if 'x' not in printer.toolhead.homed_axes or 'y' not in printer.toolhead.homed_axes %}
_HOME_X
_HOME_Y
{% endif %}
{% else %}
{% if 'X' in params %}
_HOME_X
{% endif %}
{% if 'Y' in params %}
_HOME_Y
{% endif %}
{% endif %}
{% if home_all or 'Z' in params %}
_HOME_Z
{% endif %}
注意事项
机械结构必须保证热床受力路径唯一,避免任何刚性旁路
Load Cell 需正确区分 E+/E- 与 A+/A- 接线
敲击、振动测试无法代替真实的静态受力测试
初次调试建议降低触发阈值用于验证信号有效性
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论