ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:47.16KB ,
资源ID:15692656      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15692656.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全国大学生电子设计竞赛设计报告风力摆.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

全国大学生电子设计竞赛设计报告风力摆.docx

1、全国大学生电子设计竞赛设计报告风力摆2015年全国大学生电子设计竞赛风力摆控制系统(B题)2015年8月15日摘 要 本风力摆系统主要包括单片机控制模块,开关电源(电源模块)激光笔及小型轴流风机,以及基于六轴倾角仪mpu6050的闭环控制系统。其中控制模块采用STM32为核心控制芯片,激光笔作为系统的执行机构,12V2.5A的小型轴流风机作为驱动风力摆的唯一动力,用12V的开关电源驱动轴流风机。轴流风机和摆杆通过万向节固定在支架上(用粗股导线将风力摆悬挂在支架上)。固定在支架上,测量得到的角度经过软件处理得到风力摆摆动所需要的PWM值。(本系统的PID算法算法是通过实际经验试验出风力摆的控制规

2、律,稳定的完成风力摆运动过程中激光笔画轨迹。) 关键词:风力摆; STM32; 轴流风机; PID算法; mpu6050 一、系统结构方案与设计 11、机械结构设计 12、主控芯片的论证与选择 13、风力摆结构方案的论证和选择 24、运动控制算法的论证和选择 2二、系统理论分析与计算 21、摆杆位置检测 22、风力摆运动控制分析 23、 控制算法分析 2三、电路与程序设计 31、电路的设计 3(1)STM32最小系统电路 4(2)稳压电源电路 42、程序的设计 4(1)程序功能描述与设计思路 4(2)程序流程图 4四、测试方案与测试结果 51、测试方案 52、测试条件与仪器 53、 测试结果及

3、分析 5(1)测试结果(数据) 5(2)数据分析与结论 7五、结论与心得 7六、参考文献 8附录1:电路原理图 9附录2:源程序 11风力摆控制系统(B题)【本科组】一、系统结构方案与设计1、机械结构设计 我们以生钢为材料加工成的十字作为风力摆支架的底盘,结构坚固克服摆动时的震动。以实心的钢棒作为摆杆减小了摆动时的自旋,用万向节将摆杆和支架的水平臂连接保证了摆动的灵活性以及达到了摆动角度和速度的精确控制。置于摆杆上的姿态采集模块mpu6050作为系统的闭环控制。四个轴流风机连接成方形作为系统的动力。这样我们就搭建了一个稳定可靠的机械系统,这使系统的各项参数处于比较稳定的状态,有利于后期控制系统

4、的调节。 (本系统的PID算法算法是通过实际经验试验出风力摆的控制规律,稳定的完成风力摆运动过程中激光笔画轨迹。)图1 风力摆结构示意图2、主控芯片的论证和选择方案一:选择ATs89C52单片机作为核心控制芯片,该单片机体积小操作简单,价格便宜。因为89C52单片机内部没有集成的函数库,且控制芯片外设模块较多,实际软件编写时复杂麻烦。 方案二:选择stm32单片机进行系统的控制。STM32系列芯片时钟频率高达168MHz 具有512K字节SRAM,具有极强的处理计算能力。较为适合需要快速反应的倒立摆系统。通过比较,我们选择方案二,采用STM32单片机作为控制器。3、风力摆结构方案的论证和选择方

5、案一:采用3个风机连接背向摆成三角形作为摆的结构方案二:用4个风机连接摆成方形。比较:三角形较方形来说结构稳固,且风摆整体重量较轻。但在设置风力摆摆动的任意角度时方形结构容易控制,程序算法较为简单,故采用方形结构。4、运动控制算法的论证和选择方案一:使用LQR控制器进行控制。LQR控制需要调整两个矩阵,对于LQR控制来说,需要求解Riccati方程和确定Q和R权矩阵,算法较为复杂,计算代价较高,相应时间较长,且不易被操作人员理解Q与R矩阵的物理意义。 方案二:虽然PID算法调整参数较为麻烦,但PID可以实现单环稳定,对于PID控制来说,更容易被人理解,PID控制结构简单,调试方便,易于工程上实

6、现。综上,我们采用PID控制算法对风力摆运动系统进行控制。二、系统理论分析与计算 1、摆杆位置检测为了检测摆杆的角度,从而判断摆杆的位置。我们采用高精度的串口6轴加速度计/陀螺仪MPU6050模块不断采集杆的位置信息。通过MPU6050模块与单片机的串口通信我们可以直接获取摆杆的三维角度Angel_X,Angel_Y,Angel_Z。姿态采集模块得到的角用于闭环控制系统摆动的线路确保激光笔按照要求画出轨迹。2、风力摆运动控制分析 风力摆采用4个4.65A的轴流风机作为动力系统。姿态采集模块mpu6050不断采集摆杆的角度,返给单片机处理调节单片机调节风机的PWM,从而是实现对风力摆的控制。3、

7、控制算法分析本系统采用PID算法来控制风机转动的速度。风机开始工作后,姿态采集模块不断采集风力摆摆动的角度,并与之前的角度比较使得风力摆的摆动状态趋向平稳。PID分别表示摆杆的角度比例(P)、角度误差(I)、角度积分(D)。P:对风摆的当前角度偏差e(t)进行调整,系数越大调节速度越快,减小误差,但是过大的比例,会造成风机速度状态的突变,从而导致摆杆状态不稳定I:加入积分调节,可以消除系统的稳态误差,提高无误差度。系统的稳定性下降,动态响应变慢。D:微分调节反应的是风摆的角速度,可以预见偏差变化的趋势具有可预见性因而可以产生超前调节,加入微分调节可以改善系统的动态性能。比例(P)执行器积分(I

8、)微分(D) 传感器图2 PID结构原理图PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。其输入e (t)与输出u (t)的关系为:u(t)=kp(e(t)+1/TIe(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模

9、块电源模块:稳压12V,5V给单片机风机供电键盘模块:采用独立按键; 拨码开关:5位拨码开关 蜂鸣器:(用于提示目标任务完成) 根据题目要求,系统主要实现风力摆的各项功能系统框图如图所示图3 系统框图(2)STM32最小系统电路(见附录1)(3)稳压电源的电路设计(见附录1)2、程序的设计在Keil uVision4开发环境下,采用C语言编程实现对对传感器输入信号的处理、对按键、拨码开关输入的查询,以及对风力摆风速、方向的精确控制。(1)程序功能描述与设计思路 程序功能描述: 1)独立按键:实现对风力摆的摆幅控制2)拨码开关:实现风力摆的模式选择3)程序设计思路:用PID进行调节,使倒立摆能够

10、完成题目要求的各项任务(2)程序流程图图4 程序流程图四、测试方案和测试结果1、测试方案1、硬件测试:分别对每个模块做相应的测试。2、软件仿真测试:使用Keil MDK软件进行仿真。 3、硬件软件联调:在符合要求的环境中按照题目要求对风力摆的各项功能逐一进行测试2、测试条件和仪器测试条件:12V60A开关电源测试仪器:示波器,秒表,尺子,风速仪,数字万用表3、测试结果及数据分析(1)测试结果(数据) 基本要求:(1)从静止开始,15s内风摆做类似自由摆运动,使激光笔稳定在地面画出一条不短于50cm的直线段并具有良好重复性。表1 风力摆画长于50cm直线测试测试次数直线段长度时间149cm11.

11、8s250.2cm10.1s350.1cm13s(2)静止开始完成,15s内完成幅度可控的摆动,画出长度在30-60cm间可设置,长度偏差不大于+-2.5cm,并且具有较好的重复性长度设置长度偏差时间30cm1.1cm14.6s45cm0.9cm13s60cm1cm11.5s表2 风力摆画不同长度直线测试(3)从静止开始,15s内按照设置的方向画出不短于 20cm的直线段。表3 设置方向不短于20cm线段测试测试次数线段长度时间120.9cm11s219.8cm13.6s320.5cm12.5s(4)将风摆拉倒一定角度(30-45度)5s内使风摆达到静止状态。风摆角度是否达到静止时间30是8s

12、35是5.8s40是6.1s表4 风力摆静止测试 发挥部分: (1)以风力摆静止时的激光笔的光点为圆心,风力摆驱动激光笔在地面画圆30s内需重复3次,圆半径可在15-35cm范围内设置,激光笔画出的轨迹指定半径+-2.5cm的圆环内。表5 风力摆画圆测试圆半径(r)是否可以画圆重复3次时间15是25是30是(2)在发挥部分(1)后继续做圆周运动,在距离风力摆1-2m内用一台50-60w的台扇在水平方向吹向风力摆,台扇吹5s后停止,风力摆能够在5s内恢复发挥部分(1)规定的圆周运动,激光笔画出符合要求的轨迹。实验次数是否可以恢复恢复时间1是7s2否3是5.8s.表6 风力摆抗干扰测试(2)测试分

13、析和结论根据上述测试数据,可以得出以下结论:1、风力摆能够很好的完成基本功能和部分发挥功能。 2、风力摆系统完成任务的时间较快。3、风力摆系统保持了很好的稳定性。综上所述,本设计基本达到设计要求。五、结论与心得 此次全国电子设计竞赛虽然只有短短的4天3夜的时间,但是我们团队却收获颇丰。当然此次电子设计竞赛不仅是技术的考验,短暂的时间限制更是对我们心理素质各方面的综合检验。 进入大学后,我们被提供了更多的实践机会和平台,我们学习的不再仅仅局限于理论知识。此次电子竞赛题目的综合性很强,将我们之前所学的知识进行融合,这就要求我们在牢固掌握基本理论知识的同时,更需要灵活的运用。 本科组赛题无论哪个题目

14、综合性都很强,解答的过程也很复杂,在如此短暂的时间内,要想独立将题目的基础部分和发挥部分完成是相当困难的,这就需要一个团队的紧密,默契合作。团队组成个体的差异性往往也是造成团队内部矛盾和不和的主要原因,这就要求我们要学会求同存异,相互之间学会沟通和交流。当然,连续几天艰苦的奋战,辛苦是无可厚非的,可这同样也磨练了我们的意志。6、参考文献1谭浩强.C语言程序设计M.北京:清华大学出版社,20122 全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品选编 (19941995)M.北京:北京理工大学出版社,1997年第1版.3高吉祥,黄智伟,陈和.高频电子线路M. 北京:电子工业出版社,

15、2003年第1版 4吴运昌.模拟集成电路原理与应用M.广州:华南理工大学出版社,2001年第1版 附录1:电路原理图图5 5V稳压电路图6 12V稳压电路图7 Stm32最小系统原理图附录2:源代码/*函数: int main(void)功能: main主函数参数: 无返回: 无*/int main(void) unsigned char Temp11; u8 t; RCC_Configuration(); /初始化时钟 GPIO_Configuration(); /初始化IO端口 delay_init(72); /初始化延时函数 NVIC_Configuration(); /中断优先级初始化

16、 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

17、(TIM3,0); /设置占空比 60% TIM_SetCompare4(TIM3,0); /设置占空比 80% if(sign) memcpy(Temp,Re_buf,11); sign=0; if(Re_buf0=0x55) /检查帧头 switch(Re_buf1) case 0x51: /标识这个包是加速度包 a0 = (short)(Temp38 | Temp2)/32768.0*16; /X轴加速度 a1 = (short)(Temp58 | Temp4)/32768.0*16; /Y轴加速度 a2 = (short)(Temp78 | Temp6)/32768.0*16; /Z轴

18、加速度 T = (short)(Temp98 | Temp8)/340.0+36.25; /温度 break; case 0x52: /标识这个包是角速度包 w0 = (short)(Temp38| Temp2)/32768.0*2000; /X轴角速度 w1 = (short)(Temp58| Temp4)/32768.0*2000; /Y轴角速度 w2 = (short)(Temp78| Temp6)/32768.0*2000; /Z轴角速度 T = (short)(Temp98| Temp8)/340.0+36.25; /温度 break; case 0x53: /标识这个包是角度包 a

19、ngle0 = (short)(Temp38| Temp2)/32768.0*180; /X轴滚转角 angle1 = (short)(Temp58| Temp4)/32768.0*180; /Y轴俯仰角 angle2 = (short)(Temp78| Temp6)/32768.0*180; /Z轴偏航角 T = (short)(Temp98| Temp8)/340.0+36.25; /温度 break; default: break; if(mode=1) if(angle0-10) if(angle00&w00&w00) TIM_SetCompare1(TIM3,0); / 设置占空比

20、20%风扇1 TIM_SetCompare2(TIM3,1000); /设置占空比 40% 风扇2 TIM_SetCompare3(TIM3,1000); /设置占空比 60%风扇3 TIM_SetCompare4(TIM3,1000); /设置占空比 80%风扇4 else if(angle00&w00)|(angle00) TIM_SetCompare1(TIM3,1000); / 设置占空比 20%风扇1 TIM_SetCompare2(TIM3,1000); /设置占空比 40% 风扇2 TIM_SetCompare3(TIM3,0); /设置占空比 60%风扇3 TIM_SetCom

21、pare4(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 TI

22、M_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_

23、UP=1)/开始执行设定的值 delay_ms(10); if(WK_UP=1) mode2=1; while(WK_UP); if(mode2=1) if(length=30) jiao=jiao_du0; if(length=40) jiao=jiao_du1; if(length=50) jiao=jiao_du2; if(length=60) jiao=jiao_du3; if(angle0-10) if(angle00&w00&w00) TIM_SetCompare1(TIM3,0); / 设置占空比 20%风扇1 TIM_SetCompare2(TIM3,1000); /设置占空比

24、 40% 风扇2 TIM_SetCompare3(TIM3,1000); /设置占空比 60%风扇3 TIM_SetCompare4(TIM3,1000); /设置占空比 80%风扇4 else if(angle00&w00)|(angle00) 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

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2