【Arduino 动手做】PID控制球平衡Stewart平台
## 动机和总体概念:作为一名在读物理学家,我天生
对物理系统充满兴趣,并致力于理解它。我接受的训练是将复杂问题分解成最基本、最关键的组成部分,然后再从中构建问题,从而解决它们。虽然我一直在学习力学和电磁学的第一原理,但我还没有将它们应用于实际。我最终将有机会创造一个机器人,利用自动控制理论,在一个完全受控的平坦平台上自主平衡一个球!
本指南面向技术娴熟的黑客、程序员或工程师,我们将使用 Arduino Uno 作为微控制器平台。闭环反馈回路首先启动,它感测到位于平面电阻式触摸屏上的实心金属滚珠轴承的位置,并反馈滚珠的即时位置。之后,该位置被输入到比例-积分-微分 (PID) 控制器中,该控制器已编程到 Arduino Uno 中。我已将这段代码开源并链接到项目中。该控制器的任务是将滚珠恢复到桌面上用户指定的任意位置,即使受到较大干扰。我们将使用的结构支撑平台称为“Stewart 平台”,由六根独立的连杆支撑,这些连杆由伺服电机驱动,可提供多达六个自由度:X、Y 和 Z 轴平移,以及滚转、俯仰和偏航(分别绕 X、Y 和 Z 轴旋转)。构建和编程这样一个高度移动的平台本身就充满挑战,因此在本项目中,我们只调用俯仰和滚转自由度,其他自由度则作为可选的功能升级,用户可根据需要自行选择。除了平台将球移动到一组静态用户定义位置之外,高级程序员可以轻松增强程序,并通过将静态用户定义位置替换为用户定义路径的半连续轨迹(例如数字8字形、圆形轨迹、草书姓名,或者我最喜欢的,某人在移动设备上实时播放手写笔或手指的轨迹)来增添一些趣味!祝您编程愉快!
【Arduino 动手做】PID控制球平衡Stewart平台
## 步骤1:获取材料1. 几张 1/4 英寸和 1/8 英寸的亚克力板
2.6 - 伺服电机(我们使用 HS5485HB 伺服电机)
3.6 - 螺纹(可调)连杆
4.6 - CNC 加工伺服臂,带有多个孔,便于调节
5. 12 - 万向节杆端
6. 6 - 杆(可调)
7. 1- 17英寸五线电阻式触摸屏面板USB套件(感应滚珠轴承的位置)
【Arduino 动手做】PID控制球平衡Stewart平台
## 第二步:准备材料切割亚克力的最佳方法是使用激光凸轮。虽然激光凸轮的使用可能比较困难,但使用任何你熟悉、经过适当培训且能够安全操作的切割工具,你都可以轻松切割亚克力。例如,如果我在家操作,我会使用手动弓锯。Stewart 平台的整体形状不必与我搭建的模型完全匹配。不过,我想指出一些简化方法。首先,使用三个基点(而不是标准的两个基点)更容易映射俯仰和滚转自由度。这是通过将连杆与实际平台的连接处设计成一个等边三角形来实现的。这样,你就不必再费力地从头开始寻找俯仰和滚转自由度 (DOF),而是使用三个非线性独立的“基点”,它们只是三角形向上那个角的映射。对于你我来说,在这个基点上写出坐标会很困难,但这些基点之间的相互依赖关系可以通过代码轻松处理。这一简化假设是忽略所有几何复杂性的关键。详情请参阅 MS Paint 图形和白板图。
零件切割完成后,您需要钻出所有孔,这些孔是连接连杆和球头的地方。注意孔的尺寸要与您使用的紧固件相匹配。这对于确保您选择的紧固件正常工作至关重要。孔的尺寸取决于您所需的紧固件丝锥尺寸。为此,请在网上查找有关特定丝锥尺寸、螺距和螺纹类型(细螺纹和粗螺纹)的参考资料。我建议用粗螺纹来加工亚克力,但如果您必须使用细螺纹,也应该可以,因为我们本来就用的是细螺纹。现在是时候进行组装了。
【Arduino 动手做】PID控制球平衡Stewart平台
## 步骤3:组装材料小心地按照规格组装所有材料。尤其要小心,不要拧断任何螺丝。完成后,你要么更换硬件,比如加大尺寸、钻更大的孔并攻丝,要么切割一整块新的亚克力板。注意,也要小心电阻式触摸屏。它很脆弱!!!毕竟它只是一层薄薄的玻璃。注意,我们自己也出过事故。
【Arduino 动手做】PID控制球平衡Stewart平台
## 步骤4:编程编程可能需要一些时间。这正是你的编程技能真正发挥作用的地方。你不需要从头开始编写代码,但如果你能找到一个注释良好、组织有序的源代码来修改,那么生活就会变得轻松得多。这是我们源代码的链接:https://github.com/a6guerre/Ball-balanced-on-Stew...,请随意使用!它当然没有经过优化,但完成了任务!请记住,我们对控制图使用了三个独立的非正交、非线性独立基。我们只是读取 x、y 中的所有内容,并将其映射到 A、B 和 C。然后,我们会全局调整此响应,以调整我们希望系统响应的幅度。
【Arduino 动手做】PID控制球平衡Stewart平台
## 第 5 步:测试!这里我们测试自由度。现在看看我们的三个基函数是如何发挥作用的!例如,要获得滚动自由度,我们只需在左侧向下移动一个单位,在右侧向上移动一个单位,反之亦然。同样重要的是,要充分滤除触摸屏的噪声。这对于获得良好的数据输入到PID控制器至关重要。
【Arduino 动手做】PID控制球平衡Stewart平台
## 第六步:微调并享受!测试阶段实际上只是为了排除错误。在这里,我们专注于微调控制系统。使用预设算法是最好的方法。我最喜欢把它当成临界阻尼问题来处理,咳咳!我可是物理学家!所以你关掉阻尼项!也就是导数项,它的作用类似于阻力项。现在球会剧烈振荡!然而,目标是尽可能使振荡接近谐波,既不增长也不衰减。完成后,打开导数项,并进行调整,直到它尽快恢复平衡。这时就达到了临界阻尼。但是,如果这种方法不起作用,还有许多其他经过验证的PID控制系统调优方案。我在维基百科的“PID控制器”下找到了这个。非常感谢您浏览我的项目,如有任何问题,请联系我,我很乐意为您解答。特别说明:我想指出的是,这个项目从头到尾都是我和 Miracle Max Guerrro 一起完成的,只用了不到四周的时间,其中还包括了第一个屏幕坏了之后,在海关等了两周才拿到新的屏幕。所以,它的表现远非完美,请谅解。祝您使用愉快!
【Arduino 动手做】PID控制球平衡Stewart平台
附录项目链接:https://www.instructables.com/PID-Controlled-Ball-Balancing-Stewart-Platform/
项目作者:moosenee
项目视频 :https://www.youtube.com/watch?v=YSi6lQoiArM
https://www.youtube.com/watch?v=UFikMDBfB5I
https://www.youtube.com/watch?v=FXkRqlsEfrk
项目代码:https://github.com/a6guerre/Ball-balanced-on-Stewart-Platform
页:
[1]