从开环到闭环:我的3D打印机挤出机电机升级记(基于Arduino+TB6600驱动器)
从开环到闭环我的3D打印机挤出机电机升级记基于ArduinoTB6600驱动器去年冬天的一个深夜我的3D打印机正在赶制一批圣诞装饰件。当打印到第15个小时时突然听到挤出机发出刺耳的咔咔声——又是该死的挤出不均匀问题。这已经是本月第三次因为挤出问题导致打印失败看着卷曲变形的PLA材料和浪费的十几个小时我下定决心要彻底解决这个顽疾。1. 为什么需要闭环控制大多数桌面级3D打印机都采用开环控制的步进电机驱动挤出机。这种设计简单可靠在低速打印时表现尚可。但当遇到以下场景时问题就会暴露无遗高速打印当打印速度超过80mm/s时电机扭矩下降导致失步柔性材料TPU等软性耗材需要更精确的挤出压力控制快速回抽频繁的换丝操作容易造成位置累积误差我在Creality Ender-3上做的实测数据显示打印速度(mm/s)开环挤出误差率闭环挤出误差率502.1%0.3%808.7%1.2%12023.5%2.8%提示误差率通过称量实际挤出耗材重量与理论值对比得出2. 硬件改造方案2.1 核心组件选型经过对比测试最终确定的硬件配置如下// Arduino引脚定义 #define ENCODER_A 2 // 中断引脚 #define ENCODER_B 3 #define STEP_PIN 4 #define DIR_PIN 5 #define ENA_PIN 6关键部件清单主控Arduino NanoATmega328P驱动器TB6600最大4A电流编码器600PPR增量式旋转编码器电机42步进电机1.8°/步2.2 机械安装技巧在BMG挤出机上安装编码器时我总结出几个要点使用柔性联轴器隔离电机振动编码器轴与电机轴必须严格同轴保持0.1-0.2mm的轴向间隙用屏蔽线连接编码器信号3. 软件实现细节3.1 PID控制算法采用位置式PID算法核心代码如下void Stepper_Speed_Ctrl() { static long lastCount 0; long currentCount encoder.getCount(); float actualSpeed (currentCount - lastCount) / (ENCODER_PPR * SAMPLING_TIME); pid.Setpoint targetSpeed; pid.Input actualSpeed; pid.Compute(); adjustPulseWidth(pid.Output); // 动态调整PWM占空比 lastCount currentCount; }PID参数整定经验先设ID0增大P直到出现等幅振荡取振荡周期T按Z-N法设置P 0.6*KpI 0.5*TD 0.125*T3.2 抗干扰处理遇到的两个典型问题及解决方案信号抖动在编码器输入引脚加10nF电容使用施密特触发器整形信号电机干扰驱动器电源独立供电信号线使用双绞线加装磁环4. 实际效果对比改造前后的打印质量差异非常明显PLA材质测试层间结合力提升27%表面粗糙度降低42%尺寸精度误差0.05mm柔性材料测试TPU打印成功率从65%提升至98%回抽残留减少83%最让我惊喜的是高速打印的改善。现在可以稳定以120mm/s的速度打印PLA而以前超过80mm/s就会出现挤出不足。这个项目总共花费不到200元但带来的提升远超预期。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2542347.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!