全国大学生电子设计竞赛设计报告风力摆.docx
- 文档编号:30326261
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:15
- 大小:54.50KB
全国大学生电子设计竞赛设计报告风力摆.docx
《全国大学生电子设计竞赛设计报告风力摆.docx》由会员分享,可在线阅读,更多相关《全国大学生电子设计竞赛设计报告风力摆.docx(15页珍藏版)》请在冰豆网上搜索。
全国大学生电子设计竞赛设计报告风力摆
2015年全国大学生电子设计竞赛
风力摆控制系统(B题)
2015年8月15日
摘要
本风力摆系统主要包括单片机控制模块,开关电源(电源模块)激光笔及小型轴流风机,以及基于六轴倾角仪mpu6050的闭环控制系统。
其中控制模块采用STM32为核心控制芯片,激光笔作为系统的执行机构,的小型轴流风机作为驱动风力摆的唯一动力,用12V的开关电源驱动轴流风机。
轴流风机和摆杆通过万向节固定在支架上(用粗股导线将风力摆悬挂在支架上)。
固定在支架上,测量得到的角度经过软件处理得到风力摆摆动所需要的PWM值。
(本系统的PID算法算法是通过实际经验试验出风力摆的控制规律,稳定的完成风力摆运动过程中激光笔画轨迹。
)
关键词:
风力摆;STM32;轴流风机;PID算法;mpu6050
六、
1
风力摆控制系统(B题)
【本科组】
一、系统结构方案与设计
1、机械结构设计
我们以生钢为材料加工成的十字作为风力摆支架的底盘,结构坚固克服摆动时的震动。
以实心的钢棒作为摆杆减小了摆动时的自旋,用万向节将摆杆和支架的水平臂连接保证了摆动的灵活性以及达到了摆动角度和速度的精确控制。
置于摆杆上的姿态采集模块mpu6050作为系统的闭环控制。
四个轴流风机连接成方形作为系统的动力。
这样我们就搭建了一个稳定可靠的机械系统,这使系统的各项参数处于比较稳定的状态,有利于后期控制系统的调节。
(本系统的PID算法算法是通过实际经验试验出风力摆的控制规律,稳定的完成风力摆运动过程中激光笔画轨迹。
)
图1风力摆结构示意图
2、主控芯片的论证和选择
方案一:
选择ATs89C52单片机作为核心控制芯片,该单片机体积小操作简单,价格便宜。
因为89C52单片机内部没有集成的函数库,且控制芯片外设模块较多,实际软件编写时复杂麻烦。
方案二:
选择stm32单片机进行系统的控制。
STM32系列芯片时钟频率高达168MHz具有512K字节SRAM,具有极强的处理计算能力。
较为适合需要快速反应的倒立摆系统。
通过比较,我们选择方案二,采用STM32单片机作为控制器。
3、风力摆结构方案的论证和选择
方案一:
采用3个风机连接背向摆成三角形作为摆的结构
方案二:
用4个风机连接摆成方形。
比较:
三角形较方形来说结构稳固,且风摆整体重量较轻。
但在设置风力摆摆动的任意角度时方形结构容易控制,程序算法较为简单,故采用方形结构。
4、运动控制算法的论证和选择
方案一:
使用LQR控制器进行控制。
LQR控制需要调整两个矩阵,对于LQR控制来说,需要求解Riccati方程和确定Q和R权矩阵,算法较为复杂,计算代价较高,相应时间较长,且不易被操作人员理解Q与R矩阵的物理意义。
方案二:
虽然PID算法调整参数较为麻烦,但PID可以实现单环稳定,对于PID控
制来说,更容易被人理解,PID控制结构简单,调试方便,易于工程上实现。
综上,我们采用PID控制算法对风力摆运动系统进行控制。
二、系统理论分析与计算
1、摆杆位置检测
为了检测摆杆的角度,从而判断摆杆的位置。
我们采用高精度的串口6轴加速度计/陀螺仪MPU6050模块不断采集杆的位置信息。
通过MPU6050模块与单片机的串口通信我们可以直接获取摆杆的三维角度Angel_X,Angel_Y,Angel_Z。
姿态采集模块得到的角用于闭环控制系统摆动的线路确保激光笔按照要求画出轨迹。
2、风力摆运动控制分析
风力摆采用4个的轴流风机作为动力系统。
姿态采集模块mpu6050不断采集摆杆的角度,返给单片机处理调节单片机调节风机的PWM,从而是实现对风力摆的控制。
3、控制算法分析
本系统采用PID算法来控制风机转动的速度。
风机开始工作后,姿态采集模块不断采集风力摆摆动的角度,并与之前的角度比较使得风力摆的摆动状态趋向平稳。
PID分别表示摆杆的角度比例(P)、角度误差(I)、角度积分(D)。
P:
对风摆的当前角度偏差e(t)进行调整,系数越大调节速度越快,减小误差,但是过大的比例,会造成风机速度状态的突变,从而导致摆杆状态不稳定
I:
加入积分调节,可以消除系统的稳态误差,提高无误差度。
系统的稳定性下降,
动态响应变慢。
D:
微分调节反应的是风摆的角速度,可以预见偏差变化的趋势具有可预见性因而可以产生超前调节,加入微分调节可以改善系统的动态性能。
图2PID结构原理图
PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
其输入e(t)与输出u(t)的关系为:
u(t)=kp(e(t)+1/TI∫e(t)dt+TD*de(t)/dt)式中积分的上下限分别是0和t。
因此它的传递函数为:
G(s)=U(s)/E(s)=kp(1+1/(TI*s)+TD*s)
其中kp为比例系数;TI为积分时间常数;TD为微分时间常数
三、电路与程序设计
1、电路的设计
(1)电路模块
经过上述的分析和论证,决定了系统各模块采用的最终方案如下:
控制模块:
采用STM32单片机;
姿态采集模块:
6轴加速度计/陀螺仪MPU6050模块
电源模块:
稳压12V,5V给单片机风机供电
键盘模块:
采用独立按键;
拨码开关:
5位拨码开关
蜂鸣器:
(用于提示目标任务完成)
根据题目要求,系统主要实现风力摆的各项功能系统框图如图所示
图3系统框图
(2)STM32最小系统电路(见附录1)
(3)稳压电源的电路设计(见附录1)
2、程序的设计
在KeiluVision4开发环境下,采用C语言编程实现对对传感器输入信号的处理、对按键、拨码开关输入的查询,以及对风力摆风速、方向的精确控制。
(1)程序功能描述与设计思路
程序功能描述:
1)独立按键:
实现对风力摆的摆幅控制
2)拨码开关:
实现风力摆的模式选择
3)程序设计思路:
用PID进行调节,使倒立摆能够完成题目要求的各项任务
(2)程序流程图
图4程序流程图
四、测试方案和测试结果
1、测试方案
1、硬件测试:
分别对每个模块做相应的测试。
2、软件仿真测试:
使用KeilMDK软件进行仿真。
3、硬件软件联调:
在符合要求的环境中按照题目要求对风力摆的各项功能逐一进行测试
2、测试条件和仪器
测试条件:
12V60A开关电源
测试仪器:
示波器,秒表,尺子,风速仪,数字万用表
3、测试结果及数据分析
(1)测试结果(数据)
基本要求:
(1)从静止开始,15s内风摆做类似自由摆运动,使激光笔稳定在地面画出一条不短于50cm的直线段并具有良好重复性。
表1风力摆画长于50cm直线测试
测试次数
直线段长度
时间
1
49cm
2
3
13s
(2)静止开始完成,15s内完成幅度可控的摆动,画出长度在30-60cm间可设置,长度偏差不大于+,并且具有较好的重复性
长度设置
长度偏差
时间
30cm
45cm
13s
60cm
1cm
表2风力摆画不同长度直线测试
(3)从静止开始,15s内按照设置的方向画出不短于20cm的直线段。
表3设置方向不短于20cm线段测试
测试次数
线段长度
时间
1
11s
2
3
(4)将风摆拉倒一定角度(30-45度)5s内使风摆达到静止状态。
风摆角度
是否达到静止
时间
30
是
8s
35
是
40
是
表4风力摆静止测试
发挥部分:
(1)以风力摆静止时的激光笔的光点为圆心,风力摆驱动激光笔在地面画圆30s内需重复3次,圆半径可在15-35cm范围内设置,激光笔画出的轨迹指定半径+的圆环内。
表5风力摆画圆测试
圆半径(r)
是否可以画圆
重复3次时间
15
是
\
25
是
\
30
是
\
(2)在发挥部分
(1)后继续做圆周运动,在距离风力摆1-2m内用一台50-60w的台扇在水平方向吹向风力摆,台扇吹5s后停止,风力摆能够在5s内恢复发挥部分
(1)规定的圆周运动,激光笔画出符合要求的轨迹。
实验次数
是否可以恢复
恢复时间
1
是
7s
2
否
\
3
是
.
表6风力摆抗干扰测试
(2)测试分析和结论
根据上述测试数据,可以得出以下结论:
1、风力摆能够很好的完成基本功能和部分发挥功能。
2、风力摆系统完成任务的时间较快。
3、风力摆系统保持了很好的稳定性。
综上所述,本设计基本达到设计要求。
五、结论与心得
此次全国电子设计竞赛虽然只有短短的4天3夜的时间,但是我们团队却收获颇丰。
当然此次电子设计竞赛不仅是技术的考验,短暂的时间限制更是对我们心理素质各方面的综合检验。
进入大学后,我们被提供了更多的实践机会和平台,我们学习的不再仅仅局限于理论知识。
此次电子竞赛题目的综合性很强,将我们之前所学的知识进行融合,这就要求我们在牢固掌握基本理论知识的同时,更需要灵活的运用。
本科组赛题无论哪个题目综合性都很强,解答的过程也很复杂,在如此短暂的时间内,要想独立将题目的基础部分和发挥部分完成是相当困难的,这就需要一个团队的紧密,默契合作。
团队组成个体的差异性往往也是造成团队内部矛盾和不和的主要原因,这就要求我们要学会求同存异,相互之间学会沟通和交流。
当然,连续几天艰苦的奋战,辛苦是无可厚非的,可这同样也磨练了我们的意志。
6、参考文献
[1]?
谭浩强.C语言程序设计[M].北京:
清华大学出版社,2012
[2]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(1994~1995)[M].北京:
北京理工大学出版社,1997年第1版.
[3]高吉祥,黄智伟,陈和.高频电子线路[M].北京:
电子工业出版社,2003年第1版
[4]吴运昌.模拟集成电路原理与应用[M].广州:
华南理工大学出版社,2001年第1版
附录1:
电路原理图
图55V稳压电路
图612V稳压电路
图7Stm32最小系统原理图
附录2:
源代码
/*************************************************
函数:
intmain(void)
功能:
main主函数
参数:
无
返回:
无
**************************************************/
intmain(void)
{
unsignedcharTemp[11];
u8t;
RCC_Configuration();//初始化时钟
GPIO_Configuration();//初始化IO端口
delay_init(72);//初始化延时函数
NVIC_Configuration();//中断优先级初始化
LED_Init();//初始化与LED连接的硬件接口
KEY_Init();//初始化与按键连接的硬件接口
LED0=1;//点亮LED
USART1_Config();//初始化配置USART1
USART2_Config();//初始化配置USART2(用于接收MPU6050数据)
TIM3_PWM_Init(1000-1,719);//1分频周期1/72000频率
TIM_SetCompare1(TIM3,200);//设置占空比20%GPIOC->6,7,8,9
TIM_SetCompare2(TIM3,0);//设置占空比40%
TIM_SetCompare3(TIM3,0);//设置占空比60%
TIM_SetCompare4(TIM3,0);//设置占空比80%
if(sign)
{
memcpy(Temp,Re_buf,11);
sign=0;
if(Re_buf[0]==0x55)//检查帧头
{
switch(Re_buf[1])
{
case0x51:
//标识这个包是加速度包
a[0]=((short)(Temp[3]<<8|Temp[2]))/*16;//X轴加速度
a[1]=((short)(Temp[5]<<8|Temp[4]))/*16;//Y轴加速度
a[2]=((short)(Temp[7]<<8|Temp[6]))/*16;//Z轴加速度
T=((short)(Temp[9]<<8|Temp[8]))/+;//温度
break;
case0x52:
//标识这个包是角速度包
w[0]=((short)(Temp[3]<<8|Temp[2]))/*2000;//X轴角速度
w[1]=((short)(Temp[5]<<8|Temp[4]))/*2000;//Y轴角速度
w[2]=((short)(Temp[7]<<8|Temp[6]))/*2000;//Z轴角速度
T=((short)(Temp[9]<<8|Temp[8]))/+;//温度
break;
case0x53:
//标识这个包是角度包
angle[0]=((short)(Temp[3]<<8|Temp[2]))/*180;//X轴滚转角
angle[1]=((short)(Temp[5]<<8|Temp[4]))/*180;//Y轴俯仰角
angle[2]=((short)(Temp[7]<<8|Temp[6]))/*180;//Z轴偏航角
T=((short)(Temp[9]<<8|Temp[8]))/+;//温度
break;
default:
break;
}
}
}
if(mode==1)
{
if(angle[0]<10&&angle[0]>-10)
{
if((angle[0]<0&&w[0]<0)||(angle[0]>0&&w[0]>0))
{
TIM_SetCompare1(TIM3,0);//设置占空比20%风扇1
TIM_SetCompare2(TIM3,1000);//设置占空比40%风扇2
TIM_SetCompare3(TIM3,1000);//设置占空比60%风扇3
TIM_SetCompare4(TIM3,1000);//设置占空比80%风扇4
}
else
{
if((angle[0]>0&&w[0]>0)||(angle[0]<0&&w[0]>0))
{
TIM_SetCompare1(TIM3,1000);//设置占空比20%风扇1
TIM_SetCompare2(TIM3,1000);//设置占空比40%风扇2
TIM_SetCompare3(TIM3,0);//设置占空比60%风扇3
TIM_SetCompare4(TIM3,1000);//设置占空比80%风扇4
}
else
{
TIM_SetCompare1(TIM3,1000);//设置占空比20%风扇1
TIM_SetCompare2(TIM3,1000);//设置占空比40%风扇2
TIM_SetCompare3(TIM3,1000);//设置占空比60%风扇3
TIM_SetCompare4(TIM3,1000);//设置占空比80%风扇4
}
}
}
else
{
TIM_SetCompare1(TIM3,1000);//设置占空比20%风扇1
TIM_SetCompare2(TIM3,1000);//设置占空比40%风扇2
TIM_SetCompare3(TIM3,1000);//设置占空比60%风扇3
TIM_SetCompare4(TIM3,1000);//设置占空比80%风扇4
}
}
if(mode==2)
{
LED0=0;
if(KEY0==0)//按键选择要摆动的直线长度
{
delay_ms(10);
if(KEY0==0)//key0按一下直线长度加10默认是30
{
length=length+10;
while(!
KEY0);
}
}if(KEY1==0)
{
delay_ms(10);
if(KEY1==0)
{
length=length+10;//key0按一下直线长度减10默认是30
while(!
KEY1);
}
}if(WK_UP==1)//开始执行设定的值
{delay_ms(10);
if(WK_UP==1)
{mode2=1;
while(WK_UP);
}}
if(mode2==1)
{if(length==30)
jiao=jiao_du[0];
if(length==40)
jiao=jiao_du[1];
if(length==50)
jiao=jiao_du[2];
if(length==60)
jiao=jiao_du[3];
if(angle[0]<10&&angle[0]>-10)
{
if((angle[0]<0&&w[0]<0)||(angle[0]>0&&w[0]>0))
{
TIM_SetCompare1(TIM3,0);//设置占空比20%风扇1
TIM_SetCompare2(TIM3,1000);//设置占空比40%风扇2
TIM_SetCompare3(TIM3,1000);//设置占空比60%风扇3
TIM_SetCompare4(TIM3,1000);//设置占空比80%风扇4
}
else
{
if((angle[0]>0&&w[0]>0)||(angle[0]<0&&w[0]>0))
{
TIM_SetCompare1(TIM3,1000);//设置占空比20%风扇1
TIM_SetCompare2(TIM3,1000);//设置占空比40%风扇2
TIM_SetCompare3(TIM3,0);//设置占空比60%风扇3
TIM_SetCompare4(TIM3,1000);//设置占空比80%风扇4
}else{
TIM_SetCompare1(TIM3,1000);//设置占空比20%风扇1
TIM_SetCompare2(TIM3,1000);//设置占空比40%风扇2
TIM_SetCompare3(TIM3,1000);//设置占空比60%风扇3
TIM_SetCompare4(TIM3,1000);//设置占空比80%风扇4}
}
}
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国大学生 电子设计 竞赛 设计 报告 风力
![提示](https://static.bdocx.com/images/bang_tan.gif)