ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Klipper Pressure Advance(压力提前)调优完整指南:从原理到实战校准

Klipper Pressure Advance(压力提前)调优完整指南:从原理到实战校准 Klipper Pressure Advance压力提前调优完整指南从原理到实战校准【免费下载链接】klipperKlipper is a 3d-printer firmware项目地址: https://gitcode.com/GitHub_Trending/kl/klipperPressure advance压力提前是 Klipper 固件中用于消除挤出头渗料ooze与转角鼓包blobbing问题的核心特性。本文以 docs/Pressure_Advance.md 为骨架结合 Klipper 源码klippy/kinematics/extruder.py、klippy/chelper/kin_extruder.c、klippy/extras/tuning_tower.py与官方配置/命令参考完整讲解其数学模型、配置参数、基于调优塔tuning tower打印件的实战校准流程以及必须避开的常见坑。读完本文你将能够针对自己的打印机、喷嘴与耗材组合独立完成 pressure advance 的测量、计算与固化配置。一、Pressure Advance 是什么解决渗料与鼓包在 3D 打印中喷嘴内部的可压缩熔融塑料会产生压力。当挤出头突然加速挤出时喷嘴内压力需要时间建立导致挤出起始段出料不足当挤出结束时残余压力又会让多余耗材继续流出形成渗料ooze。在转角处这种残余压力则表现为鼓包blobbing。Pressure advance 的解决思路是不把推入多少耗材 立即挤出多少耗材当作事实而是用基于压力的模型来描述挤出头行为。根据 docs/Kinematics.md 中的说明该模型借鉴了两个物理定律胡克定律Hookes law耗材被推入挤出头时内部压力随之升高泊肃叶定律Poiseuilles law维持挤出的压力由流经喷嘴孔口的流量主导。二者综合后耗材、压力与流量之间的关系可以用一个线性系数来建模即pa_position nominal_position pressure_advance_coefficient * nominal_velocity也就是说Klipper 会在挤出头加速阶段额外多推入一段耗材提前建立压力并在减速阶段等量回抽抵消残余压力。从 klippy/chelper/kin_extruder.c 源码注释可以看到这一模型的精确表述extruder_position(t) nominal_position(t) # 无压力提前 pa_position(t) nominal_position(t) pressure_advance * nominal_velocity(t)正是这个加速多推、减速回抽的动作让喷嘴口在挤出开始时立即有足量材料、在挤出结束时立即停止出料——从而同时改善 ooze 与转角鼓包。平滑处理Smoothing避免电机速度突变基础的 pressure advance 公式会让挤出电机产生突变的加减速因此 Klipper 引入了平滑机制对pa_position在pressure_advance_smooth_time默认 40ms时间窗内做加权平均。其数学形式见 docs/Kinematics.md 与kin_extruder.c中的extruder_integrate/pa_range_integrate实现为smooth_pa_position(t) ( definite_integral(pa_position(x) * (smooth_time/2 - abs(t - x)) * dx, fromt-smooth_time/2, totsmooth_time/2) / (smooth_time/2)^2 )平滑计算可以跨越多个 G-Code move其实际效果是挤出电机会在名义挤出起点之前就开始运动并在名义挤出结束之后继续运动一小段时间——这正是kin_extruder.c中extruder_calc_position通过gen_steps_pre_active/gen_steps_post_active所处理的步进预生成窗口。二、核心配置参数pressure_advance 与 pressure_advance_smooth_timePressure advance 在配置文件中的[extruder]段下设置对应源码为 klippy/kinematics/extruder.py 中ExtruderStepper的配置解析self.config_pa config.getfloat(pressure_advance, 0., minval0.) self.config_smooth_time config.getfloat( pressure_advance_smooth_time, 0.040, above0., maxval.200)结合 docs/Config_Reference.md 的官方说明两个参数定义如下参数默认值取值范围含义pressure_advance0.0 0加速期间推入挤出头的原始耗材长度单位mm 耗材 / (mm/s) 挤出速度。减速时回抽等量耗材。设为 0 表示关闭该功能pressure_advance_smooth_time0.040 0最大0.200200ms计算压力提前平均挤出速度所使用的时间窗秒。值越大挤出运动越平滑仅在pressure_advance非零时生效配置示例写入[extruder]段[extruder] pressure_advance: 0.258 pressure_advance_smooth_time: 0.040需要注意pressure_advance_smooth_time上限为 200ms超出会直接报配置错误pressure_advance取 0 时平滑时间自动失效源码_set_pressure_advance中if not pressure_advance: new_smooth_time 0.。三、调优前的准备工作顺序很重要调优测试需要打印机已正确配置并可正常运行因为整个流程依赖一次真实的打印与人工测量。动手前请务必按顺序完成以下前提校准挤出机 rotation_distance挤出量不准会直接污染 pressure advance 测量结果。参见 docs/Rotation_Distance.md 中 extruder rotation_distance 的校准步骤。确定合适的喷嘴温度打印温度会影响熔融塑料粘度与压力特性应在调 pressure advance 前先确定。通读全文再开始测试涉及打印并人工检查测试件先完整理解流程避免中途操作失误。切片参数要求使用切片器为测试件生成 G-Code。测试件使用仓库自带的 docs/prints/square_tower.stl大型空心方形塔切片时要求高打印速度例如 100mm/s零填充0% infill较粗的层高约为喷嘴直径的 75%——这两点共同保证测试时拥有较高的耗材流量关闭切片器中的动态加速度控制dynamic acceleration control与scarf joint接缝选项其余参数保持默认即可如 2~3 圈外壁、正常回抽量。若希望进一步放大转角效应可把外壁速度设为与其余部分相同但这并非强制要求。四、Pressure Advance 调优实战流程第 1 步降低转角速度与加速度打印开始前在终端/主机发送以下命令让喷头以更慢的速度通过转角从而放大挤出压力的影响SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY1 ACCEL500第 2 步启动调优塔Tuning Tower直驱direct drive挤出机使用TUNING_TOWER COMMANDSET_PRESSURE_ADVANCE PARAMETERADVANCE START0 FACTOR.005长鲍登bowden挤出机使用TUNING_TOWER COMMANDSET_PRESSURE_ADVANCE PARAMETERADVANCE START0 FACTOR.020这条命令会让 Klipper 在每一层都改写pressure_advance的值层高越高pressure advance 越大。打印完成后测试件外观如下层高越低处对应的 pressure advance 值越小理想值以下的层会在转角出现鼓包理想值以上的层则会出现圆角、以及转角前段的挤出不足。第 3 步打印与观察开始打印测试件。如果观察到转角已经明显打不好说明已进入高于理想值的层段可以提前取消打印避免浪费时间打印已知无用的层。第 4 步测量与计算打印完成后用数显卡尺找到转角质量最佳处对应的打印件高度当拿不准时优先选择更低的高度即更保守的 pressure advance 值。随后代入公式计算pressure_advance start measured_height * factor示例0 12.90 * .020 .258。若默认的 START/FACTOR 难以分辨最优值可以自定义这两个参数但每次测试打印开始时都必须重新发出 TUNING_TOWER 命令测试状态不会在打印间自动延续。第 5 步写入配置并重启将计算值写入[extruder]段[extruder] pressure_advance: 0.258随后发送RESTART命令。RESTART 会清除调优测试状态并把加速度与转角速度恢复为正常配置值。典型值参考常见 pressure advance 值在0.050 ~ 1.000之间高值端通常只出现在鲍登挤出机上。如果 pressure advance 调到 1.000 仍无明显改善说明该组合下 pressure advance 不太可能提升打印质量——此时应回到默认配置pressure_advance: 0将其禁用。五、命令机制深挖TUNING_TOWER 与 SET_PRESSURE_ADVANCETUNING_TOWER 的完整语法根据 docs/G-Codes.md 与 klippy/extras/tuning_tower.py 的实现TUNING_TOWER的完整语法为TUNING_TOWER COMMANDcommand PARAMETERname STARTvalue [SKIPvalue] [FACTORvalue [BANDvalue]] | [STEP_DELTAvalue STEP_HEIGHTvalue]工具会在打印过程中按 Z 高度变化持续向COMMAND注入不同参数值。三种取值组合及其计算公式如下FACTOR连续变化value start factor * z_height。适合本文这种用尺或卡尺测量最优 Z 高度再代入公式的场景FACTORBAND分段变化value start factor * ((floor(z_height / band) .5) * band)每BAND毫米 Z 高度调整一次平均变化率为factor/mmSTEP_DELTASTEP_HEIGHT阶梯变化value start step_delta * floor(z_height / step_height)适合温度塔那种按条带读取标签的模型SKIPvalueZ 高度低于该值时保持START不变公式中的z_height实际为max(z - skip, 0)。从源码看TuningTower通过gcode_move.set_move_transform(self, forceTrue)将自己注册为移动变换器每当检测到新 Z 高度的挤出移动move方法中newpos[3] self.last_position[3] and newpos[2] ! self.last_z等条件就用calc_value()计算新值并执行注入命令若检测到 Z 明显下降z self.last_z - CANCEL_Z_DELTACANCEL_Z_DELTA2.0则判定为新一轮打印开始自动结束测试模式。SET_PRESSURE_ADVANCE 的完整语法TUNING_TOWER注入的目标命令SET_PRESSURE_ADVANCE见 docs/G-Codes.md完整语法为SET_PRESSURE_ADVANCE [EXTRUDERconfig_name] [ADVANCEpressure_advance] [SMOOTH_TIMEpressure_advance_smooth_time]不指定EXTRUDER时默认作用于当前激活喷头的挤出步进电机ADVANCE不指定时保持当前值指定时不得为负SMOOTH_TIME范围0 ~ 0.200秒。在 klippy/kinematics/extruder.py 的_set_pressure_advance中可以看到它的运行时实现当SMOOTH_TIME未变化时通过toolhead.register_lookahead_callback(...)在前瞻队列的打印时间点上切换压力提前参数extruder_set_pressure_advance无需中断步进生成仅当平滑时间改变时才需要toolhead.flush_step_generation()做完整步进生成冲刷。这也是SET_PRESSURE_ADVANCE可以在打印中途甚至调优塔打印中被反复调用的底层原因。六、重要注意事项实战避坑参数依赖挤出头、喷嘴与耗材三者组合不同厂家、甚至不同色素的耗材所需 pressure advance 值可能差异显著。因此应在每台打印机、每卷耗材上分别校准不可通用。打印温度与挤出速率会影响 pressure advance务必先完成挤出机 rotation_distance 与喷嘴温度的校准再进行本文的调优流程。测试打印的流量要求测试件设计为高挤出流量 常规切片设置的组合。高流量通过高速度如 100mm/s 粗层高约喷嘴直径 75%实现其他切片设置保持接近默认即可。不同转角可能表现不一致切片器常常把换层点安排在某一个转角导致该转角与其余三个明显不同——遇到这种情况应忽略该转角用其余三个转角调优。剩余转角之间也可能略有差异源于机架在不同方向上对转角的细微反应差异应选择一个对全部剩余转角都表现良好的值拿不准时优先取更低的值。高 pressure advance 可能导致挤出机丢步当值超过约 0.200 时回到正常加速度后挤出机可能在加速推料时扭矩不足而打滑。原因在于 pressure advance 在加速期额外推入耗材、减速期回抽值越大所需的挤出电机瞬时运动量越大。若发生丢步要么降低加速度要么禁用 pressure advance。调优完成后切片器仍可保留小回抽即使 Klipper 侧已调好 pressure advance在切片器中配置一个较小的回抽值如 0.75mm并开启wipe on retract回抽擦拭选项仍有价值——它们有助于抵消由耗材粘性造成的拉丝塑料粘性导致耗材被从喷嘴带出。建议关闭切片器的z-lift on retract回抽抬Z选项。压力提前不改变运动轨迹与打印时长开启 pressure advance 的打印与关闭时耗时完全相同打印期间挤出耗材总量也不变。它只是在加减速阶段附加了额外的挤出电机运动并且没有任何配置项限制这个附加运动量——过大的 pressure advance 会导致加减速期间挤出电机剧烈运动这也是需要合理取值的重要原因。七、总结Pressure advance 调优的本质是用一次受控的压力扫描打印调优塔找到与当前挤出机-喷嘴-耗材组合匹配的线性压力系数。整个闭环为降低转角速度放大效应 → TUNING_TOWER 逐层注入递增参数 → 数显卡尺定位最优层高 → 代入公式pressure_advance start measured_height * factor→ 写入[extruder]并 RESTART。配合对pa_position模型与平滑机制的源码级理解你不仅能在实践中快速校准也能在遇到极端值时准确判断问题的根源。相关深入阅读docs/Kinematics.md压力模型与平滑推导、docs/G-Codes.mdSET_PRESSURE_ADVANCE与TUNING_TOWER完整语法、docs/Config_Reference.md[extruder]全部参数、klippy/chelper/kin_extruder.c压力提前步进生成的 C 实现、klippy/extras/tuning_tower.py调优塔实现。【免费下载链接】klipperKlipper is a 3d-printer firmware项目地址: https://gitcode.com/GitHub_Trending/kl/klipper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表