毕业论文——基于STM32的ARM嵌入式风力摆控制系统设计_第1页
毕业论文——基于STM32的ARM嵌入式风力摆控制系统设计_第2页
毕业论文——基于STM32的ARM嵌入式风力摆控制系统设计_第3页
毕业论文——基于STM32的ARM嵌入式风力摆控制系统设计_第4页
毕业论文——基于STM32的ARM嵌入式风力摆控制系统设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华东交通大学理工学院Institute of Technology East China Jiaotong University毕 业 设 计Graduation Design 题 目: 基于STM32的ARM嵌入式风力摆控制系统设计 分 院: 电气与信息工程分院 专 业: 电气工程及其自动化 班 级: 学 号: 姓 名: 指导教师: 起讫时间: 47摘 要随着科技的发展,工业生产越来越重视自动化,实践证明自动化不仅能提高生产效益减少人力成本还能提高产品质量,特别是近年来“工业4.0”概念的提出,让世界各国认识到未来工业生产的发展方向是高度自动化。本文的目的就是设计一个自动控制系统即基于STM32的ARM嵌入式风力摆控制系统,并希望此设计的控制方案能对实际生产活动提供一定的参考价值。风力摆控制系统是搭建一个风摆控制平台,利用处理器读取传感器采集的方位信息,通过控制算法实时控制风力摆的动作,因为整个过程没有人为干预而是让系统自行控制,所以能到达自动控制的要求。在硬件方面,本文采用STM32作为微控制器,利用角速度传感器MPU6050来采集风摆的角度,角速度和加速度。只要风摆产生位置的变化就能通过MPU6050将采集到的信息传递给处理器,并利用LCD1602来显示这些信息。考虑到电机转速,响应速度,和自身重量本设计采用小型的空心杯电机,它具有体积小,重量轻,响应速度快,转速快等优点,很适合设计要求。软件方面,本设计采用C语言来写源代码,用keil软件来编译生成hex文件,电路图的设计是用protel 99se,由于在测试中需要对采集的信息进行分析以提高效率,所以用到了一些串口工具如串口助手,VisualScope。本设计是以达到控制要求为目标来进行软硬件的设计,具有低成本,针对性强,系统稳定性强等特点对实际自动化生产控制具有很好的参考作用。关键词:自动化;风力摆;自动控制;STM32;MPU6050; AbstractWith the development of science and technology, industrial production more and more attention to automation. Practice has proved that automation can not only improving the production efficiency and reduce labor costs but also improve the quality of the products, especially in recent years, industrial 4.0 concept put forward, let the world know to industrial production in the future the development direction is highly automated. The purpose of this paper is to design an automatic control system based on STM32 ARM embedded wind pendulum control system, and hope that this control scheme is designed to provide a certain reference value for the actual production activities.Wind pendulum control system is to build a wind pendulum control platform, the processor reads the sensor range information, through action of the control algorithm to control wind pendulum, because the whole process without human intervention but is lets the system itself, so it can reach the requirements of automatic control.In terms of hardware, this paper uses STM32 as the microcontroller, using the angular velocity sensor MPU6050 to collect wind pendulum angle, angular velocity and acceleration. As long as the change of position of the wind can be generated through MPU6050 the collected information to the processor, and use LCD1602 to display this information. Taking into account the motor speed, response speed, and its own weight of the design of a small hollow cup motor, it has a small size, light weight, fast response, fast speed and other advantages, it is suitable for design requirements.Software, the design using C language to write the source code, compiled by keil software to generate the hex file, the circuit design is with Protel 99SE, the needs of information collection analysis to improve the efficiency in the test, so use the some serial tools such as serial assistant, VisualScope.This design is to achieve the control requirements for the goal of hardware and software design, with low cost, targeted, strong system stability and other characteristics of the actual production automation control has a good reference.Key words:Automation; wind power pendulum; automatic control; STM32; MPU6050;目 录摘 要2Abstract3目 录4引 言61 绪论71.1 选题依据及意义71.1.1 选题依据71.1.2 选题意义71.2 国内外研究现状及发展趋势71.2.1 国内外研究现状81.2.2 发展趋势81.3 本课题研究内容82 工具简介102.1 C语言102.3 Keil uVision5编译器102.4 protel 99 SE103 硬件设计113.1 芯片简介113.1.1 STM32F103ZET6113.1.2 MPU6050123.1.3 LCD1602123.1.4 空心杯电机133.2 模块设计133.2.1 显示模块133.2.2 报警模块143.2.3 键盘模块153.2.4 电机驱动模块153.2.5 信号采集模块153.2.6 STM32最小系统163.3 整体原理图174 软件设计184.1 主程序设计184.1.1 主程序流程图184.1.2 主程序代码184.2 PID控制算法194.2.1 PID控制流程图194.2.2 PID控制程序204.3 信号采集模块程序设计214.4 按键模块程序设计235 调试与仿真245.1 程序的编译与调试245.2 实物测试30结 论33参考文献34附 录35后 记47引 言自动化控制是指机械设备装置不需要人为干涉,能够按照人们所希望的方式自动运行,或着根据一定的规律变化,以保持被控物理量的恒定。早在古代劳动人民就在生产实践中积累了丰富的经验和反馈的直观认识,发明了许多闪耀控制理论的智慧杰作,例如,二千多年前中国的指南车就是一种具有开环自动调节的系统。它利用差速齿轮的原理,齿轮传动系统,根据车轮的转动,让车上木人手指的方向,不论车子如何转向,总是朝向南方随着科学技术的发展和生产技术的需要。到十七,十八世纪,自动控制技术逐渐运用到现代工业中,1681年法国物理学家、发明家巴本发明了用作安全调节装置的锅炉压力调节器。1765年俄国人普尔佐诺夫发明了蒸汽锅炉水位调节器等。1788年,英国人瓦特将离心调速器用在了他发明的蒸汽机上,使蒸汽机的速度控制问题得到了解决,人们开始对控制技术产生了重视。由于蒸汽机的出现极大的提高了生产速度,工业革命由此开始,自动技术也开始获得了突飞猛进的发展,越来越多的人从繁重的劳动中解脱出来。 从20世纪40年代到50年代末,经典控制理论的发展与应用使整个科学水平出现了巨大的飞跃,几乎在工业、农业、交通运输及国防建设的各个领域都广泛采用了自动控制技术。现代控制理论的核心之一是最优控制理论。这种理论在60年代初开始获得了实际运用。这就改变了将经典控制理论以稳定性和动态性能的设计方法为中心,而是将系统性能的工作过程作为一个整体来考虑,找到最佳的控制规律,这可以大大提高系统的性能。最优控制理论用于发动机燃料和转速控制、轨道修正最小实践控制、最优航迹控制和自动着陆控制等方面取得了明显的成就.1 绪论1.1 选题依据及意义1.1.1 选题依据随着科学技术的发展特别是计算机技术的发展和应用,自动控制技术在生产活动中具有越来越重要的作用,特别是导弹制导、宇航、机器人控制、及核动力等高新技术领域。不仅如此,自动控制技术的应用范围现在已扩展到生物、医学、环境,经济管理和其它许多生活领域中,成为现代社会生活中不可缺少的一部分。随着时代进步和人们生活水平的提高,在人类探知未来,认识和改造自然,建设高度文明和发达社会的活动中,自动控制理论和技术必将进一步发挥更加重要的作用。自动技术是一个综合了很多学科的技术,它涵盖了计算机、数学、物理、电子、机械、材料,等各个方向的知识.只有充分掌握各个方面的知识才能很好的将控制理论运用到实际自动控制装置中.在现代社会中自动技术关系到国家工业生产的未来,也是本世纪工业发展的关键技术,其地位十分重要.1.1.2 选题意义本项目是基于STM32的ARM嵌入式风力摆控制系统设计,它是一个采集运动反馈信息加以分析再控制电机的闭环控制系统,能很好的实现自动控制这一要求,而且对运动的物体加以精确控制这在实际社会生产中具有重要的实用价值。1.2 国内外研究现状及发展趋势1.2.1 国内外研究现状自开革开放以来,中国坚持以发展经济为中心,不断完善国内的基础设施,经过这么多年的努力,中国在自动控制技术获得了很大的进步,比如中国的航天技术就很好的体现了中国在自动控制技术中取得的进步.以后国家的发展方向将以科学技术为中心不断提高国内的软硬件实力,减少对国外技术的依赖.自动控制系统在国外已被广泛应用,在产品设计方面,常采用计算机仿真技术,计算机辅助设计(CAD),计算机辅助工程(CAE);在加工技术方面,已实现了底层(车间层)的自动化,包括广泛的采用加工中心(或数控技术),自动引导小车(AGV)等。最近10年,发达国家主要将精力放在具有有全新制造理念的制造系统,如智能制造系统、计算机集成制造系统、敏捷制造、并行工程等。虽然智能照明产品被政府大力推广,但其技术复杂,真正掌握核心技术的企业却非常少,如实力雄厚的美国路创电子公司,澳大利亚的ABB、邦奇和索恩等大型公司,而国内掌握这项技术的企业就更少了。目前,在国内的照明控制系统主要有:Dynalite智能照明控制系统,C-Bus只能周明控制系统和ABB i-bus EIB智能安装系统。1.2.2 发展趋势未来的自动化将以信息技术为依托,无线通讯技术将进一步渗透到控制领域,DCS,PLC,IPC作为自动控制的三大支柱相互之间会实现互补与渗透,自动控制系统会更注重功能和信息安全,人机界面会更趋人性化,控制系统会由集中向分散化发展。无线通讯技术将进一步渗透控制领域。1.3 本课题研究内容1.3.1 技术要求及原始数据本项目实验要求如下:一长约 60cm70cm 的细管上端用万向节固定在支架上,下方悬挂一组(24 只)直流风机,构成一风力摆,风力摆上安装一向下的激光笔,静止时,激光笔的下端距地面不超过 20cm。设计一测控系统,控制驱动各风机使风力摆按照一定规律运动,激光笔在地面画出要求的轨迹。图1-3-1 风力摆示意图从静止开始,15s内控制风力摆做类似自由摆运动,使激光稳定地在地面画出一条长度不短于50cm的直线段,其线性度偏差不大于2.5cm,并且具有较好的重复性。从静止开始,15s内完成幅度可控的摆动,画出长度在30cm60cm间可设置,长度偏差不大于2.5cm的直线段,并且具有较好的重复性。可设定摆动方向,风力摆从静止开始,15s内按照设置的方向(角度)摆动,画出不短于20cm的直线段。将风力摆拉起一定的角度(3040度)放开,5s内使风力摆制动达到静止状态。1.3.1 工作要求:任务中各项要求,均要考察完成时间及准确性。 风力摆的制作方法建议: 方案1:通过万向节将细管或棒(如碳素纤维管、PVC 管等)固定在一支架上,然后将一组直流风机固定在细管和棒上; 方案2:用粗单股导线(减少自旋)将风力摆吊挂在支架上。 可以自行选定一方向为 0,以此为起始,顺时针依次为 90、 180、 270等。 直流风机是驱动风力摆的唯一动力,不得以任何其它方式影响风力摆的运动;启动后,不得以任何形式人为影响风力摆运动 风机可以采用轴流风机或其它直流风机。 各项要求中,长度均以厘米(cm)为单位,角度以10为最小单位。2 工具简介本文主要用到的工具如下:用C语言编写系统代码,用Keil软件编译程序,检查程序错误并纠错,用protel 99 SE画电路原理图及PCB布线图。2.1 C语言C语言是一种比较简单的计算机编程语言,但是它的功能强大,表现形式丰富多样,相比于其它编程语言,它的可读性很好.掌握C语言是一种很有必要的技能,它是其它语言的基础,很多其它语言都带有C语言的特点.C语言具有很好地移植性,灵活运用C语言能处理很多编程问题.2.2 Keil uVision5编译器Keil是一个集成开发环境(IDE),这是类似于Eclipse。它包括项目管理、源代码编辑、编译、下载调试和仿真等功能,具有五个版本uVision, uVision2,uVision3和uvision4,uvision5,最新版本是uVision,5。它提供了一个环境,让开发者可以轻松操作,不提供特定的编译和下载功能,软件开发者需要补充。uvisionu用于keil MDK开发工具,例如,pk51,pk166,dk251,等。Keil软件具有很多优点,比如用它建立的工程易于管理,它能有自动加载启动代码功能,是一款集功能强大的软件,很受广大软件开发人员的喜爱。2.3 protel 99seProtel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,在众多电子行业的CAD软件中,它是电子设计者首要选择的软件,它在国内的普及度非常大,很多高校都会单独安排课程学习它。它主要用于编辑电路原理图,零件库及生成各种报表,它可以由设计人员根据需要设计元件封装,且具有自动布线功能,也可自动检测线路布置的完整性,它提供模拟/数字信号进行电路原理图仿真。早期的PROTEL主要用于印刷电路板的自动布线工具,在DOS环境下运行,对硬件的要求很低,现今的PROTEL已发展到DXP 2004,是个庞大的EDA软件,它工作在WINDOWS95环境下,是个完整的板级全方位电子设计系统。3 硬件设计3.1 芯片简介3.1.1 Stm32f103zet6Stm3232f103zet6属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。该系列芯片按片内Flash的大小可分为三大类:小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)。芯片集成定时器,CAN,ADC,SPI,I2C,USB,UART,等多种功能。Stm32f103zet6,功能极其强大。具有32位Cortex-M3CPU的ARM,2个I2C接口 2个12位模数转换器(1us转换时间),3个16位定时器(有用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入),1个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器,此控制器完全满足系统高速数据采集和电机控制等要求, 如图3-1-1: 图3-1-1 Stm32f103zet6芯片3.1.2 MPU6050MPU6050是一款6轴运动处理组件,模块内部集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP,模块对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是可控的,陀螺仪可测范围为250,500,1000,2000/秒(dps),加速度计可测范围为2,4,8,16g,工作可靠。如图3-1-2: 图3-1-2 陀螺仪MPU60503.1.3 LCD16021602液晶也叫1602字符型液晶,它的体积很小,功耗很小,但是显示的内容丰富,它的像素是16*2,即它显示的内容为16X2,可以显示两行,每行可显示16个字符(显示字符和数字),它是一种可以用来显示字母、数字、符号等的点阵型液晶模块,价格便宜,使用十分方便。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。如图3-1-3:图3-1-3 LCD16023.1.4 空心杯电机空心杯电机属于直流、永磁、伺服微特电机,它具有优良的节能特性,控制起来也很灵敏方便,运行特性十分稳定,它具有高效的能量转换率,是电动机的发展方向。空心杯电机采用的是无铁芯转子,在结构上突破了传统电机的转子结构形式。它具有十分突出的节能、控制和拖动特性,与传统的电机相比,它没铁芯转子,这种设计能很好地消除能量损耗.而且它的动能强劲,转速极快,重量也比传统电机轻巧. 图3-1-4 空心杯电机3.2 模块设计系统主要硬件模块为按键模块、语音提示模块、驱动模块、主控模块和轴流风机模块。系统框图如图3-2所示。 图3-2 硬件结构图3.2.1 显示模块本设计采用LCD1602来显示风摆的角度、角速度、角加速度信息,它的数据来源于风摆底端安装的MPU6050,通过LCD1602显示的数据可以实时观察风摆的状态信息,有利于功能调试和查看风摆运行状态。另外考虑到本设计的功能控制是通过按键来实现的,所以用led的亮灭来显示按键是否成功按下。LCD1602模块电路如图3-3,LED显示灯电路如图3-4。 图3-3 LCD1602液晶显示屏电路 图3-4 LED灯电路3.2.2 报警模块本设计采用蜂鸣器作为报警器,设计要求每当风摆做出的动作达到指定功能要求是要有声音提醒装置做出一定时间的报警并且能延续一定的时间,由于驱动蜂鸣器需要一定的电流,如果用STM32的IO口直接驱动会加大芯片内部负载,所以在电路中加入三极管(NPN管)对信号进行放大,如图3-5就是报警电路。 图3-5 报警电路3.2.3 键盘模块本模块采用四个独立式按键开关来进行功能的选择,每个按键对应一个功能,每次选择功能演示时需要对处理器STM32进行复位,然后再按功能键进行演示,当按钮按下时会有LED的亮灭来提示按键是否成功按下,然后就能看到相应的现象,如图3-7为按键电路。 图3-6 按键电路3.2.4 电机驱动模块本模块是用来驱动四个空心杯电机的,系统通过PWM波来控制电机的转速,由于对响应要求很高所以采用MOS管来控制电机的转速。它具有开关速度快,开关损耗低,通过电流大的特点,特别适应PWM输出模式。驱动电路模块电路如图3-8。图3-7 电机驱动模块电路3.2.5 信号采集模块本模块采用MPU6050来采集风摆的角度、角速度、角加速度信息。它是一种整合了6轴运动处理的组件,其角速度全格感测范围为250、500、1000与2000/sec (dps),可准确追踪快速与慢速动作,并且用户可程式控制的加速器全格感测范围为2g4g8g与16g。它的封装空间很小,重量很轻,引脚很少,非常适合项目需要。信号采集电路如图3-9所示。 图3-8 信号采集电路3.2.6 单片机最小系统根据系统本设计所要实现的照明控制功能,STC89C52单片机的最小系统设计如图3-10所示。主要由晶振部分和复位部分构成,晶振部分是由一个12MHz的晶振和两个30pF的电容构成;复位部分是由一个按键、一个22uF的电容和一个10K的电阻构成,通过电容的充放电来实现复位。图3-9 STM32f103zet6最小系统 3.3 整体原理图 本设计的原理图用protel 99 SE绘制,如图3-11所示。 图3-10 整体原理图4 软件设计4.1 主程序设计4.1.1 主程序流程图系统主要程序包含主程序,按键检测程序和功能实现子程序。具体程序源代码见附录。程序框图如图4-6所示。图4-1 主程序流程图4.1.2 主程序代码主程序代码主要包括对各种子程序的初始化,以及对子程序的调用。其部分程序代码如下:int main() static u8 action=0; u8 m=0; Head_init(); while(1) Angle_Calcu(); m=key_scan(); if(m!=0) action=m; switch(action) case1:led0=1;led1=led2=0;Control_1( Angle_X,Angle_aX);break;case2:led1=1;led0=led2=buzzer=0;Control_2(Angle_X,Angle_aX) ;break;case3:led2=1;led0=led1=buzzer=0;Control_3(Angle_X,Angle_aX);break; case4:led0=led1=led2=1;buzzer=0;Control_4(Angle_X,Angle_aX) ;break;case5:Y=1;Control_3(Angle_X,Angle_Y,Angle_aX,Angle_aY);break;case 6: led1=1;led0=led2=0;break;case 7: led2=1;led0=led1=0;break;case 8: led0=led1=led2=1;break;case 9: X+=5;break;case 10: X-=5;break; printf(rn Angle_X= %.2f ,Angle_aX= %.2f rn,Angle_X,Angle_aX); VisualScope_Output(Angle_X,Angle_aX,0 ,0); 4.2 PID控制算法4.2.1 PID控制流程图本系统统采用PID控制算法,通过对摆状态的检测可以得到一个加速度和角速度,将主控转换得到的角度值加入到PID算法中,自动改变PWM以此控制轴流风机旋转速度。两个轴流风机的转速不同,产生的力也不同,改变两方向的力的大小以此达到控制风力摆按要求运动的目的。其控制算法图如图3-1所示图 3-1 控制算法框图PID算法:P比例,就是输入偏差乘以一个系数I积分,就是对输入偏差进行积分运算D微分,就是对输入偏差进行微分运算通过整定比例控制参数、微分控制参数、积分控制参数,实现系统的自动控制。4.2.2 PID控制程序void Pid_Init(void) Kp=95; / Set PID Coefficients 10 Kd =95; / 4 Ki=0;/-float PID_Calcu( float setpoint,float Angle_X,float Angle_aX) float PID; Error = setpoint -Angle_X; / 偏差E(t) if(Error60)|(Error-60) return 0; else if (Error-0.1) Error=0; PID= Kp*Error-Kd*Angle_aX; /LastError=Error; return PID; 4.3 信号采集模块程序设计信号模块主要是对风摆的角度、角速度、角加速度进行采集,并将这些信息传输给处理器,处理利用这些信息对电机进行控制,由于采集到的数据波动太大会使传输给电机的驱动信号出现大的震荡,所以需要通过算法使数据趋于平滑。卡尔曼滤波(Kalman filtering)是对系统状态进行最优估计的算法。通过将数据进行滤波处理能更好的进行实际控制。信号的采集和处理程序如下:/* 倾角计算(卡尔曼融合)*/void Angle_Calcu(void) /- Angle_aYZ = atan2(getAccY()+670, (getAccZ()-(16384-15800) *180/PI ; /X轴Angle_gX = (getGyroX()+1)/16.4 ;Kalman_Filter_X(Angle_aYZ - 0, Angle_gX - 0); Angle_X=Angle;Angle_aX=Angle_dot;delay_us(1); /- /Y轴/-根据加速度分量测得角度,弧度转换为度,不自测,加速度传感器范围设置 0 2g 16384 LSB/gAngle_aXZ = atan2(getAccX()-200 , (getAccZ()-(16384-15800) *180/PI ; /去除零点偏移,计算得到角度(弧度) /-角速度-不自测,陀螺仪测量范围设置 0 2000/s 16.4LSB/(/s) Angle_gY = (getGyroY()-0)/16.4 ;/0为补偿量,在静止是测得的角速度为0LSB;/-卡尔曼滤波融合-Kalman_Filter_Y(Angle_aXZ - 0, Angle_gY - 0); /卡尔曼滤波计算倾角(Angle_aXZ)和角速度(Angle_gY),减去零点偏移,Angle_Y=angle;Angle_aY=angle_dot;delay_us(1);4.4 按键模块程序设计按键模块是对系统功能演示的选择,处理器是读取按键信息来调用相应的功能函数,它是用户唯一能直接进行手动控制的器件。按键模块程序如下:u8 key_scan(void) if(key1=0|key2=0|key3=0|key4=0) delay_ms(20); if(key1=0)return 1; else if(key2=0)return 2; else if(key3=0)return 3; else if(key4=0)return 4; return 0; 5 调试与测试5.1 程序的编译与调试本设计采用C语言编写程序,在Keil uVision5环境下进行编译和生成hex文件,并将hex文件下载到STM32中进行测试。具体流程如下: 建立一个文件夹命名为风力摆控制系统,在文件夹内分别建立子文件夹CMSIS、FWLIB、HARDWARE、LITING、OUTPUT、SYSTEM、USER。其中CMSIS用来存放说明文件,FWLIB存放库文件,HARDWARE用来存放子程序,LITING用来存放编译产生的中间文件,OUTPUT用来存放生产的下载文件,USER存放用户文件,如图: 图5-1 添加子文件夹 打开keil软件,点击菜单栏上的Project,选择New uVision Project.选择保存文件夹:风力摆控制系统-USER,命名为STM32工程文件,并保存 图5-2 设置文件名和路径 接着弹出选择芯片类型,选择STM32103ZE,点击OK 图5-3 添加选择STM32型号 鼠标左击点击Source Group1然后找到 Manage Project Items.并右击。 图5-4 添加Groups 在弹出的界面框中添加其他工程组文件,并点击Add Files将各自文件组的子文件添加进去图5-5 添加Groups 按路径Project-Options for Target点击进去配置Target里面的参数,勾选Use Cross-Module Optimization如图: 图5-6 配置Target选项参数 配置Output选项里面的参数,勾选Create HEX Files。 图5-7 生成HEX文件配置 点击C/C+选项框,点击Include Paths将所需要的子文件添加到工程中,点击OK。 图5-8 添加子文件到工程中 点击Debug然后选中Use:中的ULINK2/ME Cortex Debugger,点击Settings-Flash Download. 图5-9 配置Debug参数图5-10 配置Debug参数 点击Add找到对应的单片机型号,点击OK,即所有设置完成。 图5-11 选择芯片型号 所有准备工作完成后就可以开始进行程序的书写和编译了。图5-12 编译程序 程序编译运行无误后会在Build Output窗口提示0 Error(s),0 Warning(s)。图5-13 生成.hex文件5.2 实物测试系统硬件图如图5-14,图5-15所示:图5-14 系统硬件顶面图 图5-15 硬件侧面图将硬件线路正确连接,打开电源开关让系统通电,将生成的HEX文件下载到STM32中,准备工程结束后可以看到风力摆处于静止状态,红外射线光点直指纸板上圆心。MPU6050绿灯长亮,LCD1602显示屏成功上电。如图5-14所示。 图5-14 系统成功上电系统成功上电后,轻轻按一下STM32开发上的复位按钮,然后再按一下功能键上的功能按钮,这里我们点击功能一,即系统在规定时间能做一定摆幅的单摆运动。按下按钮后电机开始做小幅的摆动,渐渐的摆幅变大,然后摆动幅度维持在一个稳定的值。具体效果如图: 图5-15 系统正常运行参照上面的方法可依次对其它的功能进行测试,由于图片是静态图不能直观的察看实际效果,这里就不再贴出图片证实效果了,详细情况以实际运行状况为准。结 论经过一个多月的努力,我的毕业设计终于完成了,个人觉得在完成毕业设计的过程中学的到了很多在课本上学不到的知识,最大的感受是经过自己实际动手才完成了作品,以前的学习中一直将学习重点放在理论上,这次终于将理论知识运用于实际中。 在完成设计的过程中遇到了很多一时难以解决的问题,有时花了好长时间都解决不了,但是我并没有放弃。遇到不懂的问题我先是在网上查找资料,认真分析,不懂得地方就请教老师和同学,好多知识点通过自己一点点的摸索最终得以掌握。通过这次的实践我深深明白了学好知识一定要下苦功夫,要一步一步的积累,要多动手,在实践中才能学到真知识。这次毕业设计我很感谢同学的帮助,在这个过程中我们互帮互助,相互学习,解决了很多关键的问题。这份友谊对于我们来说非常珍惜,以后无论我们走向何方,这段共同努力的时光都将是我们彼此值得留念的记忆,感谢同学们。另外要感谢老师对我的悉心教导,是他指引了我学习的方向,一步一步教我从基础学到到高深,让我这个以前什么知之甚少的学生学到了很多有用的知识。在我完成设计的过程中,有很多不懂的地方,因为他的指点让我豁然开朗。他不仅传授給我知识,还传授给了我思维方式,让我提高了独立思考的能力。总之,这次毕业设计让我受益很多,我很感谢有这么一次独立完成项目的经验,我想在以后的工作中,我都会养成独立思考,遇到问题努力独自解决的习惯。参考文献1谷丽华,崔畅,高松巍,许会. 基于MPU-6050的步态信号采集系统J. 沈阳工业大学学报,2015,02:176-182.2邱云平,伍宝玉. MPU-6050模块角度算法处理及在嵌入式中的应用J. 江西科技学院学报,2014,02:26-29.3孙书鹰,陈志佳,寇超. 新一代嵌入式微处理器STM32F103开发与应用J. 微计算机应用,2010,12:59-63.4何芝强. PID控制器参数整定方法及其应用研究D.浙江大学,2005.5杨智,朱海锋,黄以华. PID控制器设计与参数整定方法综述J. 化工自动化及仪表,2005,05:1-7.6徐爱钧单片杌原理实用教程M北京:电子工业出版社20097老虎工作室 编著. 电路设计与制板Protel 99SEM. 人民邮电出版社. 2007.78周立功ARM嵌入式系统基础教程M北京:北京航空航天大学出版社20059 胡松涛.自动控制原理M.科学出版社,2006,11.10 张惠平,戴波,杨薇.现代控制理论在过程工业中的应用和发展J.2006,9.11 李祥彬,李学仁,倒立摆系统可线性化建模条件12 全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品选编 (19941995)M.北京:北京理工大学出版社,1997年第1版.附 录IO定义、电机驱动程序、I2C程序、传感器信号采集程序、定时器程序等如下:#includeGPIO.h/PE.2作为外部中断输入口void Exti_init(void) /IO初始化函数GPIO_InitTypeDef GPIO_InitStruct; /定义GPIO初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);/打开PE的时钟,使能GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD; /工作方式(上拉输入)GPIO_Init(GPIOE,&GPIO_InitStruct); /- /led初始化函数 void led_init(void) RCC-APB2ENR|=RCC_APB2Periph_GPIOE ; GPIOE-CRL&=0xf0000fff; GPIOE-CRL|=0x03333000;/推挽输出 led0=led1=led2=buzzer=0; /-/motor引脚初始化PAO-PA3作为电机输出端 void Motor_init(void) GPIO_InitTypeDef GPIO_InitStruct; /定义GPIO初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);/打开PC时钟,使能GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|G

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论