




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2016届毕业设计(论文)风力摆控制系统毕业论文目录前言1第一章 系统方案设计与论证31.1 系统整体结构31.2 方案简述31.3 电源选取31.4 直流风机31.5 三维角度传感器31.6 风机驱动模块41.7 风力摆结构41.8 控制算法4第二章 理论分析与计算52.1 起摆分析52.2 摆动固定长度52.3 PID算法分析52.4 摆角解算6第三章 系统各模块电路设计93.1 稳压电路模块93.2 矩阵键盘模块93.3 风机驱动模块10第四章 软件设计流程114.1 软件结构114.2 软件流程简介114.3 显示模块初始化及其界面程序分析114.4 MPU6050的初始化及相关程序段分析15第五章 测试方案与测试结果185.1 测试所用仪器185.2 测试方案185.3 误差分析19致谢20参考文献21附录22I前言风力摆控制系统即控制做自由摆运动。自由摆是一种典型而具有代表性的运动形式,一直以来人们对单摆运动的运动规律进行了大量的研究,自由摆运行相当于是从单摆运动衍生的运动形式。风力摆系统是一个典型非线性,不稳定的系统。在经典控制理论和现代控制理论的应用是一个很具有代表性的问题。将其作为实验装置时可以测试控制理论,检验控制方法和思路。这些控制思想都能广泛应用于一般工业过程控制,所以对于风力摆控制系统在控制理论的探索方面具有很重要的理论研究和实际应用价值。该系统所运用的传感器为惯性测量单元,惯性技术作为一门高科技尖端技术,它结合了机电、光学、数学、力学、控制及计算机科学的尖端技术。惯性是所有质量体的基本属性,建立在惯性原理基础上的系统不需要任何外界信息,也不会向外辐射任何信息,仅靠其系统本身就能在全天候环境下,自主的进行连续的三维定向和定位。并且能获取运载体完备的运动信息,以及具有优秀的隐蔽性。这些特点是其他导航系统所无法比拟的。运动控制系统包括的处理运动算法和信号的控制器,能增强信号、可供应执行器提供运动输出放大器;惯性测量单元检测数据进行反馈,可基于输出和输入的比较值,构成闭环系统。调节器对偏差信号进行比例、积分、微分运算。微分作用加快系统动作速度,减少超调,克服振荡;积分作用消除静态误差。三种作用方式结合在一起可以达到既快速便捷,平稳准确的效果。采用这种方式构成的调节器,只需改变输入和反馈电路的内容,便能获得不同的调节规律。控制系统里的一些比较抽象的概念,反馈、稳定性、发散收敛速度和系统的抗干扰性能等,风力摆都能有很直观的表现。对于该系统典型的控制方法有,PID控制、智能控制、模糊控制等。控制理论的研究人员将风力摆系统作为研究对象,希望开拓出新的控制方法,应用在航空航天等高科技领域。传统8/16位单片机,虽然在工业领域中得到了广泛运用,但是现在的越来越多的工程控制产品的需求多功能、易用界面、低功耗、多任务等等一系列任务。对于这些需求,仅仅使用传统8/16位单片机已经不足以满足。看准了这个市场,ARM公司推出了Cortex-M3处理器,它对微控制器和低成本应用提出优化,具有低成本、低功耗和高性能的特点,能够满足工程师进行创新设计的需求。意法半导体公司推出了基于Cortex-M3内核32位的微控制器STM32,相对于ARM7、ARM9这类速度更快的32位来说,采用最合适的内核构架以及独特的开发方式。它具有性价比高和易于开发两个优势。这导致STM32一上市就以非常快的速度占据了中低端微控制器的市场。STM32的有两种开发方式。一种是与传统单片机开发方式相同的寄存器开发,就是通过对微处理器的进行直接的读写操作。使用这种方式需要对微处理器的底层寄存器以及外围电路有很深的理解。而且由于STM32的寄存器种类和数量都要比传统单片机多得多,故使用寄存器开发方式有比较高的门槛。这种方式的优点也十分明显,它十分贴近物理电路层面,这样设计出的系统,其稳定性、可靠性以及运行速度都要好得多。另外一种开发方式是库函数开发。这是一种自顶而下的方式刚好与前一种方式相反,可以从上层的API一层一层跟踪到底层寄存器,从而彻彻底底的了解寄存器,了解CPU的内存分布,再到启动代码、开发环境设置等等。这种方式大大的降低了学习开发STM32的门槛,让初学者能够快快速上手,仅通过调用库里的API(应用程序接口)就能够实现一个大型程序的搭建。做出能满足各种用户需求的应用。第一章 系统方案设计与论证1.1 系统整体结构图1 系统整体框图1.2 方案简述 本系统以超低功耗MCUSTM32F103VCT6为控制核心,风力摆采用万向节、碳素纤维管、四个直流风机构成。MCU输出PWM波经过直流电机驱动控制四个风机转动,使风力摆获得摆动动力。MPU6050的三轴加速度数据和三轴角速度数据,经MCU解算之后得到风力摆摆角,形成信号反馈回路。组成闭环控制系统。1.3 电源选取自制稳压源,电源电压稳定,上电即可用,能省掉系统校准的麻烦,自制稳压源采用78系列稳压芯片,最大输出电流为3A,但对该项目而言,4个直流风机转动时,电流过大。自制稳压源并不能满足要求。采用兆信KXN3030B直流稳压电源,最大电压可达到30V,最大输出电流能到达30A,能提供四个风机转动所需电流,电压稳定性也可满足要求。1.4 直流风机采用通用小型轴流风机,12V直流供电,轻巧。但功率不大,风力太小,并不能让风力摆在短时间内达到题目所需要的摆动长度。采用小型涵道有刷风机,涵道风机属于高速轴流风机, 12V直流供电,风机产生风力能有效使风力摆摆动。能满足要求。1.5 三维角度传感器采用L3GD20三轴陀螺仪,能测量三轴角速度。如果在此使用还需再另外加载一个三轴加速度计,而采用微处理单元MPU6050。该芯片包含三轴加速度计及三轴陀螺仪,外围电路设计简单,采用IIC通信协议,具有量程大,精度高,功耗低等特点。完全满足题目要求且具备更优的性能。1.6 风机驱动模块采用L298N电机驱动模块,最大工作电压为50V,最高电流4A,一个芯片能驱动两个直流电机。对于本系统来说,4A电流供两个电机工作有点勉强,调节裕度太小。而采用BTN7971的驱动模块,驱动板工作电压范围:7V14V,最大电流能达到60A,能满足题目要求。且调节裕度很大。1.7 风力摆结构一组4个直流风机用粗单股导线吊挂在支架上,摆动阻力小,受力更均匀,但单股导线在画圆时必然产生自旋,加大了系统的控制难度。如果用一组4个直流风机用碳素纤维管通过万向节固定在支架上,由于碳棒和万向节是刚体,在控制过程中不会遇到自旋的问题,万向节摆动时阻力只比粗导线略大,对摆动影响不大。1.8 控制算法采用模糊控制算法,模糊控制算法是对手动操作者的手动控制策略、经验的总结.模糊控制算法有多种实现形式,应用最早、最广泛的是查表法,查表法可大大提高模糊控制的时效性,节省内存,它不需要事先知道对象的数学模型,具有系统响应快、超调小、过渡过程时间短等优点,但编程复杂,数据处理量大。 如果采用PID算法,按比例(P)、积分(I)、微分(D)的函数关系,进行运算,将其运算结果用以输出控制。优点是控制精度高,且算法简单明了。对于本系统的控制已足够精确,节约了MCU的资源和运算时间。 第二章 理论分析与计算2.1 起摆分析风力摆摆动是依靠风机转动推动空气,空气对风力摆有一个反作用力使风力摆运动起来,想让风力摆摆动起来,就要使空气对风力摆的作用力力的方向与速度方向一致。只要控制风机,满足这个条件转动,就可以使风力摆的摆动幅度越来越大。本题我们是通过一开始让一个风机机转动一定时间,形成小幅度摆动,然后在摆动到最高点的时候,每次位于最高点的风机转动,这样使摆动幅度慢慢增加。2.2 摆动固定长度 风力摆摆动过程就是动能与重力势能相互转化的过程。理想情况下,风力摆应该是可以一直摆动不停止。既只要弥补掉风力摆每次摆动损失的能量就能让摆摆长稳定不变。通过调节风机转动,能做到使摆长无明显衰减也不明显增大,再通过MPU6050数据,姿态解算得到摆角,每一个摆角都能对应成相应摆长。这样就可以得到与设定偏差长度,再使用PID控制算法自动调节减小偏差,达到摆动固定长度的要求。2.3 PID算法分析工程实际中,应用最为广泛调节器控制规律为比例、积分、微分控制,简称PID控制。 PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制主要技术之一。当被控对象结构和参数不能完全掌握,或不到精确数学模型时,控制理论其它技术难以采用时,系统控制器结构和参数必须依靠经验和现场调试来确定。PID连续系统模型为:MCU是数字调节,动作是断续的。它以采样周期为间隔,对MPU6050输出进行采样,由于该传感器输出为数字量,故不需要进行模数转换。采用数据经过解算后的到偏差信号,经过一定调节规律算出输出值,再通过PWM波向传送给风机的驱动电路。对MCU来说,需要将上式离散化才能进行运用。PID离散模型为:再将离散算法再是通过软件实现:X=X.in - X.offset;increment += X;/对X进行积分if(increment increment.max)increment = increment.max;else if(increment 0; i-) xi=xi-1; x0 = InData; for(z1=0,i=0; i0; i-) yi=yi-1; for(z2=0,i=1; iv2?v1:v2extern u8 sentDateFlag;u8 Status_Senser_RC_cnt=0,data_cnt=0;u16 youa=0;void request1(void)Swing(0,600);TIM2-CCR1 = 0;TIM2-CCR1 = 0;TIM2-CCR1 = 0;TIM2-CCR1 = 0;EnTIM3(); while(1)if(sensor.gyro.origin.xCCR1=290;elseTIM2-CCR1=0;if(sentDateFlag) sentDateFlag = 0;Status_Senser_RC_cnt+;data_cnt+;if(Status_Senser_RC_cnt=4)Status_Senser_RC_cnt = 0;Send_Status = 1;Send_Senser = 1;Send_RCData=1;if(data_cnt=3)data_cnt=0;Data_Exchange();BATTDispaly();void request2(u16 l)float max_h=0,max_s=0;u8 cnt=30;u16 pid_out;float e_h=0,sum_e=0;pid_out=l*7/13;Swing(0,l);TIM2-CCR1 = 0;TIM2-CCR2 = 0;TIM2-CCR3 = 0;TIM2-CCR4 = 0;EnTIM3(); max_h=atan(float)l/2/880)*57.3;while(1)if(cnt)if(max_sangle.roll)max_s = angle.roll;if(angle.roll(-1)cnt-;if(sensor.gyro.origin.xCCR1=pid_out;elseTIM2-CCR1=0;if(sentDateFlag) sentDateFlag = 0;Status_Senser_RC_cnt+;data_cnt+;if(Status_Senser_RC_cnt=4)Status_Senser_RC_cnt = 0;Send_Status = 1;Send_Senser = 1;Send_RCData=1;if(data_cnt=3)data_cnt=0;Data_Exchange();BATTDispaly(); if(cnt=0) e_h=max_h-max_s;sum_e+=e_h;if(sum_e150) sum_e=150;pid_out = (28-l/100)*e_h+0.2*sum_e;if(pid_out0) pid_out=0;cnt=30;max_s=0;if(sensor.gyro.origin.xCCR1=pid_out;elseTIM2-CCR1=0;u8 flag_stop=1,flag_stop2=1;u16 time_requet4;void request4(u16 time,u8 mode)/float kp=3.5,kp_w=10;float kp=2.7,kp_w=10;/u16 time=400,pid_out;u16 pid_out;time_requet4=time;request4_flag=1;EnTIM3();GPIO_SetBits(GPIOB,GPIO_Pin_0);delay(1000);GPIO_ResetBits(GPIOB,GPIO_Pin_0);while(1)if(flag_stop2)if(sensor.gyro.origin.x2499)pid_out=2499;TIM2-CCR3 =pid_out ;TIM2-CCR1 = 0 ;/delay(time);/TIM2-CCR3 = 0;if(sensor.gyro.origin.x0)pid_out=kp* sensor.gyro.origin.x+kp_w*angle.roll;if(pid_out2499)pid_out=2499;TIM2-CCR1 = pid_out;TIM2-CCR3 = 0 ;/delay(time);/TIM2-CCR1 = 0;if(sensor.gyro.origin.y2499)pid_out=2499;TIM2-CCR4 = pid_out;TIM2-CCR2 = 0 ;/delay(time);/TIM2-CCR4 = 0;if(sensor.gyro.origin.y0)pid_out=kp* sensor.gyro.origin.y+(kp_w-0.1)*angle.pitch;if(pid_out2499)pid_out=2499;TIM2-CCR2 = pid_out;TIM2-CCR4 = 0 ;/delay(time);/TIM2-CCR2 = 0;if(flag_stop=0) kp=0.6;if(mode)break;if(sentDateFlag) sentDateFlag = 0;Status_Senser_RC_cnt+;data_cnt+;if(Status_Senser_RC_cnt=4)Status_Senser_RC_cnt = 0;Send_Status = 1;Send_Senser = 1;Send_RCData=1;if(data_cnt=3)data_cnt=0;Data_Exchange();BATTDispaly();void loss(float kp_input,u16 angle)float kp=kp_input;float kp2=5*kp_input;u16 pid_out;u8 cnt=0;EnTIM3();if(angle14)GPIO_SetBits(GPIOB,GPIO_Pin_0);delay(1000);GPIO_ResetBits(GPIOB,GPIO_Pin_0);if(sensor.gyro.origin.x2499)pid_out=2499;TIM2-CCR3 =pid_out ;TIM2-CCR1 = 0 ;if(sensor.gyro.origin.x0)pid_out=kp* sensor.gyro.origin.x;if(pid_out2499)pid_out=2499;TIM2-CCR1 = pid_out;TIM2-CCR3 = 0 ;if(sensor.gyro.origin.y2499)pid_out=2499;TIM2-CCR4 = pid_out;TIM2-CCR2 = 0 ;if(sensor.gyro.origin.y0)pid_out=kp* sensor.gyro.origin.y;if(pid_out2499)pid_out=2499;TIM2-CCR2 = pid_out;TIM2-CCR4 = 0 ;if(angle13)GPIO_SetBits(GPIOB,GPIO_Pin_0);delay(500);GPIO_ResetBits(GPIOB,GPIO_Pin_0);delay(500);GPIO_SetBits(GPIOB,GPIO_Pin_0);delay(500);GPIO_ResetBits(GPIOB,GPIO_Pin_0);if(sensor.gyro.origin.x2499)pid_out=2499;TIM2-CCR1 =pid_out ;TIM2-CCR3 = 0 ;if(sensor.gyro.origin.x0)pid_out=kp2* sensor.gyro.origin.x;if(pid_out2499)pid_out=2499;TIM2-CCR3 = pid_out;TIM2-CCR1 = 0 ;if(sensor.gyro.origin.y2499)pid_out=2499;TIM2-CCR2 = pid_out;TIM2-CCR4 = 0 ;if(sensor.gyro.origin.y0)pid_out=kp2* sensor.gyro.origin.y;if(pid_out2499)pid_out=2499;TIM2-CCR4 = pid_out;TIM2-CCR2 = 0 ;float kp_qi1=0.15,kp_qi2=0.15;float pid_out_qi_gx,pid_out_qi_gy;float temp_aaa;int last_t=0,now_t=0,e_t=0;u8 flag_wind=0;void request5(u16 l)u16 time=800-l/100;u16 bchang1=70,bchang2=0,bchang3=70,bchang4=0;u16 i=0;float max_angle=0;if(l=300) bchang1+=73; bchang2+=127; bchang3+=73; bchang4+=127; kp_qi1=0.01; kp_qi2=0.01; AngleMax0=6;else if(l=400) bchang1+=83; bchang2+=137;bchang
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025银行合规招聘面试题及答案
- 高效英语复习策略与试题解析
- 变电站设备安装工程技术方案
- 快递物流配送路径优化案例报告
- 企业内控管理体系构建指南
- 三年级数学期中测试卷解析
- 宾馆客房快速整洁流程指南
- 多媒体技术动画应用解析
- 基因修复技术演讲
- 计划合同部年度工作总结报告
- 2025年高压电工考试题库:基础理论知识要点
- 2025中秋国庆双节安全培训
- 刑事谅解协议书范本6篇
- 护理员安全培训内容课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- Starter Unit 1 Hello!单元测试(解析版)
- 金税四期培训
- 托管班安全培训课件
- 汽车制造生产知识培训课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025年县处级领导干部政治理论考试试题库(附答案)
评论
0/150
提交评论