这篇文章记录电赛真题——“风力摆”的详细分析过程和代码开源。本题目对电机控制提出了极高的要求,尤其是PID算法的运用和控制。有关PID算法的深入了解,大家可以参考以下文章:
PID算法详解(代码详解篇),位置式PID、增量式PID(通用)_pid代码-CSDN博客
希望我的分享对你有所帮助!
目录
一、题目复现
二、题目分析
step1:控制方案设计
根据题目要求, 系统主要实现驱动直流风机,使其按照一定规则运动,包括左右摆动,可控幅度摆动,定向摆动。 圆周运动以及制动。其关键在于对于直流风机的精密控制。系统方案框图如下:
方案解读 :
用加速度计陀螺仪模块MPU6050来计算角度和风机状态,用直流风机带动摆杆运动。当MPU6050检测到摆杆的角度时,可根据三角函数公式计算出摆杆现在距离中心的具体位置(方向、距离),单片机会控制PWM波的输出大小来控制风机的风速与方向,使摆杆达到在特定位置静止或按照一定的轨迹运动。当摆杆处于自然下垂状态时,给四个风机同时上电且风向都向外,此时摆杆仍处于受力平衡——静止状态。此时降低X轴上一个风机的转速,摆杆将会带动激光头在X轴上画一条直线,当达到一定的倾斜角度时,单片机可根据角度计算出此时距离中心的距离是否>=25cm,若达到要求后,此风机减速,X轴反方向上电机逐渐加速,恢复到初始速度,反方向做相同的运动。在此过程中,单片机做出A/D采样,Y轴方向方向风机随时做出矫正,防止发生轨迹偏移。
step2:机械结构方案设计
由于摆杆长度(60cm~70cm)较长,且要求激光头在地面画出15cm~35cm的圆,所以要求横杆的距离要足够长。横杆长度较长加之摆杆重量较大,所以要求底座要有足够的重量来支撑整个系统。如果结构不稳或者重量不够,摆杆运动过程中将会产生倾倒或者抖动等现象,影响测试结果。
于是,底座采用了“工”型结构,保证了整个系统的稳定性。摆杆材料方面,我们选用轻便的硬质铁质材料与风机进行刚性连接,既能保证连接处的稳定,又可达到减轻底座负担的目的。风机选择方面,既要保证风力够大,能够实现题目基本要求中的自由摆运动、快速制动静止。又要有一定的重量,质量越大,惯性越大,越不容易改变原来的运动状态,在实现发挥部分(2)时,受到外界干扰,不容易改变原来的圆周运动状态。机械结构如图2:
1.底座;2.竖杆;3.横杆;4.螺栓;5.万向节;6.摆杆;7.风机(1);8.风机(2);9.风机(3);10.风机(4)
step3:电机选择
方案一:
采用小型轴流风机(大功率),使用双滚珠轴承,采用滚动摩擦的形式,轴承中有数颗微小钢珠围绕轴心,当扇叶转动时,钢珠即跟着转动。因为都是球体,摩擦力较小,所以转速较高。能达到8000RMP,同时产生较大的风力。风机内力矩较大,是因为机内绕了大量的铜线,导致重量较大,当4个风机固定到一起时,重量更大,风机产生的风力带动风机运动困难加大,更难做到题目中按要求运动。另一方面,此风机功率较大,所需电流较大,驱动与供电方面也有很大问题。
方案二:
采用双环强磁空心杯电机,内部使用强磁,转速较高。风力也足够大,基本能达到要求。但是到题目发挥部分(2)时,面对外界风力干扰时,由于本身重量较轻,极易受到外界干扰,而不容易保持原来状态。另外,空心杯电机使用3.7V供电,供电电压较低,单片机控制电机转速时,空心杯的电压线性度较小,而不易被精准控制。
方案三:
采用无刷电机,风力较大,重量适中,完全能达到题目运动状态要求,速度控制精确,但须配套电机调速器。
step4:摆杆和风机的连接选择
方案一:
摆杆使用粗单股导线直接与横杆连接,连接简单且自由度较好,给风机供电等方面都比较容易,但是导线容易产生自旋,风机固定困难也增大,增加了调试难度。
方案二:
摆杆使用硬质铁质材料,通过万向轴与横杆相连。用此材料强度能够达到要求,且风机固定容易。硬件搭建合理,配重平衡的前提下,摆杆来回摆动不易发生偏移,可轻松解决基本要求(1),减少了编写代码的工作量。
三、分析计算
step1:风力摆位置的计算与分析
通过加速度计陀螺仪模块MPU6050检测风力摆摆杆的倾角数据。MPU6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计。可根据三角函数公式,可计算出此时摆杆距离中心位置的距离(见图3)。内部有一个数字运动处理器DMP。MPU6050和所有设备寄存器之间通信采用400Khz的I2C接口,实现高速通信。测试过程中,MPU6050与单片机之间进行通信,距离较长,走线较多,干扰较大导致读数不准确,所以在SCL与SDA上拉2K电阻,解决采样问题。内置卡尔曼滤波器,采用最优化自回归数据处理算法精确测量风力摆当前姿态角。MPU6050对陀螺仪和加速度计分别采用了16位的ADC,将其测量的模拟量转化为可输出的数字量,通过DMP处理器读取测量数据然后通过串口输出。
step2: 风力摆运动状态的分析
基本要求(1)中属于开环控制系统,激光笔绘制的轨迹超过50cm即可。我们可以设置摆杆倾角超过一个阈值θ,θ可通过摆动半径R(R>=25cm)直接计算出。然后,通过开环调节,从低到高改变风机的风速,直到摆杆的角度超过阈值,记下此时PWM波脉宽级作用时间。
step3:控制算法分析
系统采用PID算法来控制风机转动的速度,风机开始工作后,MPU6050不断采集当前摆杆摆脚状态,并与之前的状态进行比较,使得摆杆运动状态趋于稳定。PID算法控制器由4个风机速度分配比例P角度误差积分I角度微分D组成。
在发挥部分(1)时,要求做圆周运动。四个直流风机1、2、3、4,1和3用来使摆杆与重力方向呈现设置的夹角,2和4用来推动摆杆沿切线方向运动,这样通过控制1、3电机的PID参数使摆杆达到设定的角度,通过2和4推动摆杆,摆杆就会沿切线运动,绘制圆形轨迹。
四、结语
关于风力摆的题目及方案分析就到此结束了,下篇文章将同大家一起分析实战代码工程及开源代码(文章末链接)。希望我的分享对你有所帮助。