1风力摆控制系统(B题)摘要本风力摆控制系统主要包括单片机控制模块,液晶显示模块,直流电机,驱动模块以及姿态检测模块构成闭环系统。其中控制模块采用STM32F103为控制芯片,直流电机为执行机构,电子调速器为电机驱动。MPU6050采集风力摆姿态角,MCU处理姿态角数据后通过PID算法调节直流风机以控制风力摆快速画直线、摆角度,恢复静止的功能,并能按照要求画圆,在受风力影响后能够快速恢复画圆状态。另外本系统采用OLED显示屏实现了友善方便的人机交互界面。关键词:STM32F103MPU6050PID算法电子调速器21系统论证与比较1.1系统基本方案本系统主要由主控制模块、姿态检测模块、液晶显示模块,电机驱动模块和悬挂模块四部分组成,实现了风力摆控制系统。系统框图如图1所示。图1风力摆控制系统总体框图1.2姿态检测方案的论证与选择方案一:倾角传感器。倾角传感器运用牛顿第二定律,根据定律,当倾角传感器静止的时候,由于物体的侧面还有垂直方向是受到其他力的作用,只有重力的作用,也就是说作用在它身上的就只有重力加速度了,所以由此产生的重力垂直轴与加速度传感器灵敏轴之间的夹角,可以用来测量相对于水平面的倾角变化量,就是我们所说的倾斜角。但是倾角传感器侧重于静态测量,不适合检测运动物体的角度变化。方案二:MPU6050。MPU6050六轴传感器集成3轴MEMS陀螺仪和三轴MEMS加速度计,每个轴对应有一个16位AD转换器。正常工作时,陀螺仪和加速度计主控系统STM32电源模块姿态检测传感器按键控制液晶显示电机驱动模块风力摆3分别采集X轴,Y轴,Z轴的电压值,然后通过AD转换,转换成数字信号,最后通过I2C总线传送到控制芯片,但此时得到的值不是实际的角度和角速度值,还必须经过一定的比例关系进行转换,才能得到实际的角度和角速度值。该传感器整合了6轴运动处理组件,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间。在平衡小车,智能型手机,手持型游戏产品,3D遥控器上面应用较为广泛。综合以上两种方案,选择方案二。1.3电机驱动的论证与选择方案一:电调。电调全称电子调速器,电子变速器是有电流增压作用,电变内部电路有一套FET管(增压管)..电流输入电子变速器,内部电路接收来自接收机的信号,根据信号,把电流作出合适的增压,然后把增压后的大电流输出到马达.至于控制部分,控制信号是一组方波信号,控制电调在单位时间内开关的次数。并对无刷电机起调速作用。同时电调可为3-4个舵机和接收器供电。方案二:L298N直流电机驱动。L298N是一款常用的电机驱动芯片,该芯片组成的驱动模块内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载,只需要控制输入IN1,IN2,IN3,IN4的高低电平就可以控制电机方向,控制EN1,EN2就可以控制速度(PWM),但是该模块L298N的输出电流2A,瞬态也只有3A,因此不适合驱动大电流大功率的电机。综合以上两种方案,考虑到电机驱动的电流较大,选择方案一。1.4风力摆运动控制方案系统的论证与选择方案一:使用3个直流风机作为风力摆的动力系统。在搭建风力摆的模型时,三个电机组成一个等边三角形的形状,此时对整个系统做受力分析,系统的合力点位于等边三角形的中心处,此时三个电机受力的力臂均匀,所受的力都位于等边三角形的中位线上,要使风力摆做直线运动,圆周运动规律都比较好控制,只要控制三个电机不同的转速,但是三个电机比较小,摆放在一起,如果三个电机同时运动,产生的气旋会相互影响,不同的速度影响的规律也不一样,此时系统就不容易。4方案二:使用4个直流风机作为动力系统。四个电机以十字架的形状规律摆放,每两路电机分别控制X轴和Y轴的运动,这样搭建起来的系统,可以灵活地控制风力摆系统做直线运动,任意角度运动以及圆周运动。但是电机具有一定的重量,四个电机对系统的稳定性以及摆杆的要求会很高。综合以上两种方案,考虑到风力摆系统控制的灵活性,采用方案二。2系统硬件设计及相关分析计算2.1风力摆的模型分析风力摆在静止状态时,和静止的倒立摆模型一样,只受到重力和摆杆对它的拉力,系统处于稳定的状态,除非有外力作用于系统打破这种平衡。一旦电机开始运动时,风力摆就开始运动,假设某一时刻,摆杆向左摆到了α度,摆杆要想达到平衡状态,必须产生向右的作用力。此时摆杆的受力状态如图X所示。图2摆杆的受力分析A点为风力摆与旋转臂(万向节)连接处,设此时摆杆收到电机风扇产生的反作用力为F,方向如图所示,此时力F的作用是使摆杆继续向右摆起,因此可以根据此受力分析给电机相反的角加速度。假使摆杆做设置不同长度的直线运动,不同角度运动以及圆周摆时,需要设定角度值赋给MCU控制系统,系统的模型简化为下图所示。5图3摆的角度分析摆杆需要摆出多大的长度,多大的角度以及圆周运动都可以设定摆杆的半径,通过公式可以求出设定的角度值,然后把这个角度值赋给PID算法调节里的角度设定值。2.2风力摆系统框图风力摆控制系统中,控制对象风力摆,控制器是电机,主控MCU输出不同的PWM,通过电机驱动模块来控制电机的速度。传感器是MPU6050,角度传感器实时检测摆杆的角度变化,反馈给主控MCU,通过PID算法来自动调节PWM.控制回路电路图如下所示。图4电机控制模块子系统框图设定角度值PID调节PWM电机驱动电机控制对象风力摆摆杆角度检测反馈一一62.3姿态检测模块的设计2.3.1姿态检测模块原理在风力摆姿态检测系统中,MPU6050主要用于检测摆杆倾斜角的变化,其静态响应好,能够准确实时测量摆杆的角度,其输出值围绕某个轴向的旋转角速率,通过角速率对时间积分即可得到角度值。该模块内部有数字运动处理器(DMP),DMP从陀螺仪、加速度计以及外接的传感器接收并处理数据,处理结果可以从DMP寄存器读出,或通过FIFO缓冲。DMP有权使用MPU的一个外部引脚产生中断。图5MPU6050模块2.3.2姿态检测子系统电路原理图MPU6050与主控MCU连接时,I2C总线和24C02、RDA5820共用,实际检测时,只用模块的两个端口,SCL和SDA分别负责时钟通信和数据包的传送。模块电路原理图如下图所示。7图6MPU6050模块原理图2.4电源模块的的分析计算系统的电源模块分为两个部分:考虑到直流电机需要大功率驱动,启动时需要大的电流,采用了开关电源设计,由市电220V输出稳定的12V,5A的电压,同时继续对输出稳压成5V给MCU模块供电。电路图分别如下所示:图7开关电源8图85V稳压电路3算法设计与软件流程图3.1PID算法设计PID控制是一种简单而又常用的工程控制的控制算法。在控制系统中通过对设定值与反馈值取偏差,然后将偏差的比例(P)、积分(I)、微分(D)通过线性组合形成控制量,对被控对象进行控制。本系统采用增量式PID控制对角度的误差量进行比例、积分、微分计算,其结果构成系统的PWM波占空比控制信号送入电机驱动。首先,控制器将获取的风力摆的角度值与当前设定值比较求出误差,然后对误差量进行PID算法处理得到一路PWM占空比,通过电机驱动控制风力摆使其摆到所需角度。PID控制相应的控制算法式为:00(t)e(t)K(t)d(t)teiddeuKeKudt0101(t)[e(t)(t)d(t)]tpddeKeTuTdt(1)式中u——控制端输出;0u——偏差为零时u的初值;9e(t)——调节器输入函数,即给定量与输出量的偏差;pK——比例增益;1T——积分时间常数;dT——微分时间常数;将上式展开,函数可以分为比例控制,积分控制和微分控制三部分。核心控制其计算公式一般为离散分量,需要对差分方程作出近似处理后改为00(t)dt(j)ktejeT即(t)(k)e(k1)deedtT式中T——采样周期;K——采样序号;e(k1)和e(k)分别为第k-1和第k次控制周期的偏差;综合以上几个公式,可以得出差分公式为:001(k){[e(k)(j)[e(k)e(k1)]]}kdpjTTuKeuTT(2)3.2软件流程图3.2.1主程序流程图主程序流程图如图11所示3.2.2风力摆运动子程序流程图风力摆运动子程序流程图如图12所示。10图11主程序流程图图12运动子系统流程图运动子程序开始读入设定角度读入检测角度PID算法计算每个电机调节策略控制电机运动是否运行到设定值子程序返回NY开始初始化显示风力摆控制系统读取键值KEY1按下KEY2按下KEY3按下KEY4按下KEY5按下KEY6按下画≥50cm直线画出可设置直线设置角度摆动放开保持静止画半径可设的圆干扰后做圆周摆YYYYYYNNNNNNNN114测试方案与测试结果4.1测试方案硬件软件联调:调试时,下载线连接单片机,以便程序执行后实时观测控制算法中多个变量,如风力摆角度,方向,电机速度等。通过独立按键来控制不同的程序,以实现不同的功能。相互功能之间没有干扰。记录下每次实现不同功能的性能指标。4.2测试条件与仪器测试使用的仪器设备如表1所示。表1测试使用的仪器设备序号名称、型号、规格数量备注1秒表1无2风速仪1无3卷尺1无4FLUKE15B型万用表1精度为214位5量角器1精度为s10014.3测试结果及分析4.3.1测试结果(数据)(1)从静止开始,15s内控制风力摆做类似自由摆运动,使激光笔稳定地在地面画出一条长度不短于50cm的直线段,其线性度偏差不大于±2.5cm,并且具有较好的重复性;表二摆出≥50cm直线次数123456时间(t)5s4s7s8s9s5s误差(cm)0.80.81.20.91.41.7(2)从静止开始,15s内完成幅度可控的摆动,画出长度在30~60cm间可设置,长度偏差不大于±2.5cm的直线段,并且具有较好的重复性12表三设置可摆动距离距离(cm)30405060时间(t)12s5s11s8s21.5s7.5s9s9s31.6s7.2s9.2s8s误差(cm)1123321.21.83.23.530.82.42.83.3(3)可设定摆动方向,风力摆从静止开始,15s内按照设置的方向(角度)摆动,画出不短于20cm的直线段;表四设置角度摆动角度(°)0/18045/13590/270135/45180/0时间(s)12232.328821.7241.8266.531.8221.2297.6误差12.0546522.183.87.64.231.8104.5114.5(4)将风力摆拉起一定角度(30°~45°)放开,5s内使风力摆制动达到静止状态。表五松开后风力摆保持静止角度10°20°30°60°180°时间19s23s32s40s24s时间210s18s34s38s26s2.发挥部分(1)以风力摆静止时激光笔的光点为圆心,驱动风力摆用激光笔在地面画圆,30s内需重复3次;圆半径可在15~35cm范围内设置,激光笔画出的轨迹应落在指定半径±2.5cm的圆环内;表六做半径可设置的圆周摆动半径(cm)1520253035时间60s53s78s25s100s误差(cm)2542(2)在发挥部分(1)后继续作圆周运动,在距离风力摆1~2m距离内用一台50~60W台扇在水平方向吹向风力摆,台扇吹5s后停止,风力摆静止。发挥项第二项没有完成任务。135结论语本风力摆控制系统以STM32F103为主控MCU,利用MPU6050检测角度、和PWM电机驱动技术,并配合PID调节算法实现了风力摆控制系统的直线运动,规定角度运动圆周运动等功能,且受风力影响后能够快速恢复画圆状态,具有很好的鲁棒性。基本上完成了基础性部分,发挥项只做了第一项,第二项没能完成文物。在系统设计过程中,力求硬件线路简单,充分发挥软件编程方便灵活的特点,来满足系统设计的要求。从测试结果看来,在采取多项误差校正措施的情况下,特别是加入的局部闭环反馈环节的引入,系统的控制误差明显减小,系统控制精度达到毫米级,响应时间也符合题目要求。参考文献。[1]冯智勇,曾瀚,张力.基于陀螺仪及加