谷谷小师妹 发表于 2024-9-26 10:10:39

【开源硬件】Made with KiCad 从0自制“自平衡立方体”

“ 一个非常有意思的项目,利用反作用力轮保持平衡的立方体! 项目概览这个立方体能够在顶点处保持平衡,同时还能以受控方式绕轴旋转。这一功能是通过巧妙地控制和一组三个反作用力轮来实现的。这个装置的最初创意来自苏黎世联邦理工学院的研究人员。后来,该装置的设计得到了改进,Bobrow等人(圣保罗大学)引入了改进的控制概念,将所需的 IMU(惯性测量单元)数量从六个减少到一个。

我决定挑战一下,自己动手做一个。尽管这个想法并不新颖,但以前的作品基本上都是闭源的。我想改变这种状况,从头开始逆向工程并制作这一切。我的工作成果是完全开源的,请看下面的视频。
机械设计立方体的机械设计与最初的 Cubli 基本相同,但也有一些细微的差别。主体结构由八个转角组件和六块面板组成。其中三块面板具有额外的功能,可支持电机和反作用力轮组件。所有部件都是在Fusion360中绘制的。我的学生时代已经结束,因此不得不告别西门子NX。
大多数结构部件都由不锈钢制成,强度极高。面板由铝制成,以减轻重量。这些部件不需要使用钢材,因为铝材组装结构的刚度将绰绰有余。我对电机和飞轮组件的设计很感兴趣。我一直在寻找一种坚固耐用的设计--毕竟飞轮的速度可达每分钟6000转--同时还要保持重量轻。虽然我是机械工程师出身,但结构原理并不是我的强项,不过毕竟这也是开展此类项目的原因:学习!我最终想出了以下方案。电机通过三个沉头螺钉连接到不锈钢桥上。电桥最终连接到其中一个铝面板上。一个小轮毂安装在电机轴上,并用三个固定螺钉固定。这个轮毂至关重要:如果中心孔与三角形平面不垂直,轮子就无法与电机轴对准,从而导致振动和磨损。使用三个沉头螺钉将反作用力轮安装到轮毂上。这一步需要反复试验,以纠正轮毂和轮子上的缺陷,这些缺陷可能会导致我前面提到的不对齐问题。我通过在轮毂和飞轮的水平接触面之间放置小纸片来解决这些问题,结果令人满意。毕竟,这些部件并不经常被拆开。将一个小型径向球轴承插入其中一个面板,并用氰基丙烯酸酯("超级")胶水固定。该滚珠轴承将支撑电机轴的一端。轴的另一端也由电机本身的轴承支撑。最后,将电机轴插入轴承中,用四个螺栓将电桥与面板连接起来。此过程重复两次。这样就得到了半个立方体。其余的面板不需要任何特殊的组装步骤,可以直接组装。注意到其中一个电机相对于它所连接的电桥的方向不同吗?这样做的目的是:简化稍后的布线工作。这样就形成了一个坚固但相对轻巧的结构。铝制面板本身相对较弱,但组装在一起后不会移动。
机电设计关于电机和电机控制器,使用的是Maxon“EC flat"系列电机。虽然有可能找到更便宜的替代品,但电机及其控制器都是关键部件,我不想吝啬。立方体将通过对电机施加扭矩来实现平衡。许多直流电机的数据表甚至都没有说明扭矩常数(扭矩常数定义了扭矩和电流之间的关系),许多无刷电机控制器(如ESC系列)只提供速度控制,而不提供电流控制。要实现这个项目,这两者都是必不可少的,因此选择高质量的元件是显而易见的。
我选择了一个60W的电机和一个兼容的四象限电机控制器,该控制器可提供高达6A的电流。虽然这远远超出了电机的额定功率,但电机短暂过载是没有问题的。此外,控制器内置I2t算法,可在绕组温度过高时限制电机电流。由于平衡时的电流通常很低,因此在正常运行时,立方体不太可能达到这些极限。Escon电机控制器附带的软件非常棒。有电机调试和调整工具以及一个漂亮的仪表板,显示电机运行期间的状态及其输入/输出(如上面的截图所示)。电池方面,我选择了6S1P锂聚合物电池。电机的额定电压为24V,因此六芯锂电池(标称电压22.2V)非常适合这里。电池容量为1300mAh(29Wh),正常情况下足以运行立方体至少一个小时。主板是定制设计,集成了三个电机控制器、IMU(隐藏式)、ESP32-S3开发板以及一些辅助元件,如保护电路和稳压器。开发板还将为RC伺服电机提供输出,从而为立方体增加机械制动器。机械制动器将使立方体能够自行跳到平衡位置。目前没有完成制动器的设计开发。组装电路板非常有趣。我首先涂上焊膏,然后放置表面贴装部件。在小型烤箱中回流后,我手工焊接了所有通孔部件。后来,在整合和测试各个组件时,我发现自己犯了几个小的布线错误,于是我很快用"飞线"纠正了错误。原来,电机控制器上只有一个数字输入端支持PWM,我把PWM信号接到了另一个(不支持的)输入端。我还设计了一块安装电池的电路板。它要简单得多:有两个XT60连接器和两个开关(并联接线,因为电流高达18A),用于打开和关闭立方体。
控制器设计与调试实际上,我自己并没有设计这个立方体的控制器,而是将Fabio Bobrow的工作(https://github.com/fbobrow/cubli-firmware)从Arm Mbed移植到了Arduino。我还使用了ESP32而不是 STM32 Nucleo。尽管如此,重写代码还是花了不少功夫。此外,由于我使用了不同的IMU(TDK Invensense的ICM20948),我不得不重写相应的"驱动程序"。我还是花了不少时间研究这个控制器的设计,下面我将用几句话重点介绍它的一些优点。主姿态控制器的设计非常有趣。也许最好的解释就是两个相互矛盾的目标之间的妥协。第一个目标是将立方体保持在所需的方向上,也就是保持在不稳定的平衡位置上。然而,第二个目标是将车轮速度保持在最低水平。如果不考虑第二个目标,可能会导致车轮速度失控,使电机达到饱和,从而实际上无法对立方体施加扭矩。
这两个目标是相互冲突的:如果将车轮速度保持在接近零的"愿望"过于强烈,立方体就会倒下。就像前面提到的,如果"欲望"太弱,车轮可能会失控。因此,诀窍在于找到既能实现良好的平衡性能和干扰抑制,又能保持较低轮速的增益。控制器中还有一种优雅的机制来处理恒定错误。什么是恒定误差?例如,由于立方体重量分布的不完美,配置的平衡位置和实际平衡位置之间可能存在微小差异。在PID(比例-积分-导数)控制器中,积分部分处理这类误差。该控制器使用轮子的位置(度数)作为积分!在我看来,这实际上是一种非常直观的积分控制器可视化方式。当我修改立方体的重量分布时(在视频中:在立方体上放一个西红柿),你可以看到反作用力轮的速度先增大后减小:它们正在移动到一个新的位置,以补偿增大的误差!到目前为止,调试和调整控制器是最大的代码相关工作。和其他有经验的控制工程师一样,我花了几天时间翻转各种信号的符号,才把它们弄对。然后,我必须为控制器找到合适的增益。Bobrow论文中描述的调整方法对我不起作用,所以我只好用手调整增益。请注意,与Bobrow的魔方相比,我的魔方使用了不同的轮子,因此不可能重复使用增益。通过迭代程序,我最终得到了增益,从而实现了视频中显示的稳定性能。
打样生产注意在复刻这个项目之前,我们可以把PCB设计文件导入到华秋DFM软件,进行一键DFM检查,下图是电池板检查结果展示。我们可以看到,电池板是一个很简易功能的结构板子,检查结果无问题。接下来我们可以再看下主板检查结果。主板检查结果中我们可以看到,局部的线宽偏小。使用者实际生产打样的时候需要注意PCB工厂的实际工艺能力。
原理图 & PCB主板
电池板
LicenseGPL 3.0
仓库 & 下载该项目的开源仓库的百度网盘下载链接,已经放在华秋DFM客户端首页左下方的消息通知栏中,新老用户可以下载或登录华秋DFM软件获取全部资料,相关资料已全部分类整理,方便大家取用和查阅。
页: [1]
查看完整版本: 【开源硬件】Made with KiCad 从0自制“自平衡立方体”