3D打印机的PID是不是要经常修改?我调好PID用了几天就又不好用了。

为什么我的喷头温度波动这么大?加热时一直在+-10度内跳动,打出来的模型表面波纹也很明显!


解决办法:调整PID!!!

改编自【美味】同学的教程

附上reprap上关于PID调整的介绍,英语好的同学推荐看下:

下面教大家如何进行PID调整:以珍妮极简版二代3D打印机做演示,主板为猫板,基于marlin,


1,联机前准备
联机前,现将打印机设置的【通信波特率】设为115200

同时电脑需安装【联机驱动】,下面是珍妮用的猫板的联机驱动: 其他机器的联机驱动请自行咨询机器厂家。2,联机电脑装好驱动后,将打印机开机,再用【USB线】与电脑相连。打开S3D后点击右侧工具栏的齿轮图标即可进入【联机界面】。 【通信频率】也调为和机器一样的115200,然后可以【刷新】一下,在左边【接口】的下拉列表中选择自己打印机的【接口编号】,点击左上角红色【Connect】按钮连接打印机 连接成功后按钮会变为绿色
3,将喷头加热
在打印机屏幕上操作将喷头加热到200度左右,或者在联机界面中加热喷头也可以。 此步并非必须,但是执行的话成功率会更高。因为最近珍妮简版二代更换了新的加热块和加热管,升温较快,未调整PID前会出现温度短暂过冲现象,超出S3D的警戒范围,导致PID计算失败。

喷头侧面的模型风扇推荐开启,模拟打印时开启风扇的情况,当然不开也行,影响不大。
4,输入PID计算指令

在通信窗口下方输入M303 S210 C8,点一下【send】或【回车】将指令发送,后等待1-2分钟,S3D会自动对打印机的温度进行调整并计算。

根据之前的PID计算结果,输入PID设置指令并发送,注意三个值是否对应。M301 P*** I*** D***
查看是否更改成功
发送M503指令,查看是否更改成功
保存
发送M500指令,将刚才的更改结果保存。

断开打印机和电脑的连接,进入调试页面,对打印机喷头进行加热。当喷头加热到指定温度后,温度会小范围跳动约几十秒,然后趋于稳定。调整PID成功后,温度跳动应小于3度。如跳动还是很大,可将加热块包上保温棉、高温胶带、特氟龙胶带等,减少热量散失,然后重新进行PID计算。

1,猫板0815版固件,在设置中显示的PID的数值,与S3D中设置的有所差别,请以S3D为准,后续版本固件会修正此BUG。

2,赤兔主板请直接在机器参数gcode最后进行PID调整。

现在我们需要对Arduino UNO开发板进行编程以平衡机器人。这就是所有神奇魔法发生的地方;它背后的概念很简单。我们需要通过使用MPU6050来检查机器人是否向前倾斜或向后倾斜,然后如果它向前倾斜我们必须向前旋转车轮,如果它向后倾斜我们必须在相反的方向旋转车轮。

同时我们还必须控制车轮旋转的速度,如果机器人从中心位置略微迷失方向,车轮会缓慢旋转,并且当车辆离中心位置越来越远时速度会增加。为了实现这个逻辑,我们使用PID算法,其中心位置为设定点,迷失方向的强度为输出。

要知道机器人的当前位置,我们使用MPU6050,它是一个6轴加速度计和陀螺仪传感器相结合。为了从传感器获得可靠的位置值,我们需要使用加速度计和陀螺仪的值,因为加速度计的值存在噪声问题,陀螺仪的值会随时间漂移。因此,我们必须结合两者并获得我们的机器人的偏航俯仰和滚动的值,其中我们将仅使用偏航的值。

听起来有点头晕吗?但是不用担心,在Arduino社区,我们有现成的库,可以执行PID计算,也可以从MPU6050获得偏航值。该库分别由和开发。在从以下链接下载这些库之前,先将它们添加到您的Arduino lib目录中。

现在,我们已将库添加到Arduino IDE中。让我们开始为自平衡机器人编程。我们在本页末尾处给出了项目的完整代码,这里我们只是解释代码中最重要的代码片段。在介绍这些代码之前,我们先声明,代码是建立在之上的,我们只是为了目的优化代码,并为我们的自平衡机器人添加PID和控制技术。

首先,我们包括此程序工作所需的库。包括内置I2C库、我们刚刚下载的PID库和MPU6050库。

然后我们声明从MPU6050传感器获取数据所需的变量。 我们读取了重力矢量和四元数值,然后计算机器人的偏航俯仰和滚转值。 浮点数组ypr [3]将保存最终结果。


接下来是代码中非常重要的部分,这是您在调整正确的值集时花费很长时间的地方。 如果您的机器人具有非常好的重心并且组件对称排列(在大多数情况下不是),那么您的设定点的值将为180。否则将您的机器人连接到Arduino串行监视器并将其倾斜直到你找到了一个很好的平衡位置,读取串行监视器上显示的值,这是你的设定值。 Kp、Kd和Ki的值必须根据您的机器人进行调整。 没有两个相同的机器人将具有相同的Kp、Kd和Ki值,因此没有方法避免。

PID输出变量还决定了电机旋转的速度。 如果机器人即将摔倒,那么我们通过缓慢旋转车轮进行微小修正。 如果这些小的校正工作仍然有效,但如果机器人跌落,我们会提高电机的速度。 车轮旋转的速度值将由PI算法决定。 请注意,对于Reverse函数,我们将输出值乘以-1,以便我们可以将负值转换为正值。



扫扫二维码,随身浏览文档

手机或平板扫扫即可继续访问

我要回帖

更多关于 3d打印 的文章

 

随机推荐