1. 风力摆控制系统简介
虽然说风力摆已经是2015年的国赛题了,既没有用到摄像头,也无需搭建很大的系统,似乎觉得它不值得一练,但是当你去玩风力摆之后你就会发现,风力摆十分有趣,当你没掌握关键点的时候,你要么就是荡不起来,要么就是荡得天高。
首先看一下风力摆的要求吧。
图1-1 风力摆控制系统题目要求
注意题目是要求风力摆做类似自由摆运动,有些同学直接上手无刷电机,强行吹到最高点又吹到另一个目标点,虽然说博主没有试过,但是显然这样是不符合题目要求的,这个不属于题目要求。其实,我们控制要做是维持自由摆状态,因为理想情况下悬挂的小球就是自由摆。其他的详细点也不再獒述,相信全 友都参照这位大神的,主要讲一些踩坑点。
风力摆控制系统赛题解析+源代码开源
2.软件设计(踩坑点)
2.1 MPU6050初始化失败
MPU6050采用的是IIC通讯协议,通常来说我们都是使用IO口模拟的IIC,性能比较差,同时通讯线长度受限,博主在做这个项目的时候线长超过20cm就会数据错误,留下眼泪,别人一米都没什么问题,外加上拉电阻也不行,听 友建议可以使用内阻较小的线,我也没试过,遇到这个问题的可以尝试一下;还有一个解决方案是使用串口通讯协议的MPU6050,博主也买了一个,但是发现姿态角数据好像有点问题而且姿态角是绝对的,和上电位置无关,所以后面也放弃了。
2.2 风力摆起荡
风力摆关键点就是理解这个系统控制流程,当系统的期望当固定了幅度之后,就会被划分成简谐运动,目标一直是动态变化,像一条牵引的绳子,起初你无需立刻跟随他,需要一个起荡的过程。后面才是一个跟随过程,并且系统要做的仅仅是维持自由摆状态,如果电机反应过于激烈,那么就很大可能说明你的控制策略有误。
2.3 风力摆波形滞后
虽然说波形之后问题不大,但是当绘制圆形是还是保持波形一致更好一点,询问广大 友,他们几乎一致的说调大D,可能对于他们的系统有用,也可能时他们只是看了上面大神的帖子,乱说一通。但是我做风力摆的时候,解决波形滞后不是通过调节D搞定的,而是通过调节周期period,对于每一个系统的period都是不同的,你需要去改变period观察波形相位变化。
图2-1 周期1400ms时波形图
图2-2 周期1000ms时波形图
具体增大减小需要看你的系统,都有可能。
2.4 制动
题目基础四是要求制动,我们发现使用姿态角去解析位置有一个问题,在中心点的一个方向,例如左方,对于摆动来说是会有两种趋势的,一个是在左方爬升,就是上升过程,一个是在左方下落,也就是下落过程,当解析姿态角进行PID计算时,这两种情况均属于误差大于零(假设),但是控制策略其实应该需要不同,为了制动零点,我们在左方上升过程应该由左边电机工作,制动上升;在左方下降过程,我们要右方电机工作,制动下降,单纯位置控制无法做到这一点。为了制动中点,我们可以采用速度控制,因为在自由状态下,单摆就是稳定在重点的,所以我们可以利用MPU6050中的角速度数据进行制动,效果明显,同时稳定,使用位置控制某些时刻可能会失控。
图2-3 基本要求四
2.5 如何调试
风力摆如何调试,风力摆是一个动态调节的系统,我们很难观察当前系统与期望的误差,很难判断系统运行状态,所以我们可以借助一些风控爱好者常用的调试工具进行调试,有兴趣的可以参考我 匿名四轴上位机调试 博文
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!