




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、武 昌 理 工 学 院本科毕业设计(论文)题目: 风力摆控制系统学院: 信息工程学院专业: 自 动 化学号: 20124224032学生姓名: 杜 昂指导教师: 唐穗欣二一六 年 四月 八 日2016届毕业设计(论文)风力摆控制系统杜昂摘要本系统由微处理器STM32,直流风机及驱动,惯性测量单元MPU6050,OLED显示,4X4矩阵键盘,蜂鸣器构成。系统运行可分为两部分:风力摆的控制部分和预设值输入与显示部分。风力摆控制是由STM32定时器输出频率,占空比可调的PWM波经驱动模块之后,使直流风机的转数与PWM波占空比成线性关系,以此达到控制风力摆摆动的目的。预设值输入与显示是通过矩阵键盘将预
2、设值输入到微处理器。再由处理器将数据送至OLED上显示。MPU6050的三轴加速度数据和三轴角速度数据,经MCU解算之后得到风力摆摆角,形成信号反馈回路。组成闭环控制系统。控制算法为PI调节。关键词:STM32F103VCT6; MPU6050;PID控制算法。Wind pendulum control systemDu angAbstractThis system is structured by microprocessor STM32, DC fan and its drive, inertial Measuring Unit MPU60510, OLED display, 4*4 re
3、ctangular keyboard, and buzzer. The operation of this system is associated with two main parts, one is wind pendulum control, and another one is default input and output. The frequency of STM32 timer andthe adjustable duty ratio of PWM go through the wave driving template make the turns of rotation
4、of DC fan are linear with duty ratio of PWM, so thatthe wind pendulum is able to be controlled to swing. Defaults input and output are achieved by inputting the default into microprocessor, and then the microprocessor transmit data to OLED which leads the data to be displayed on OLED. After being re
5、solved by MCU, the data of MPU6050 triaxial acceleration and the data of triaxialangular velocity will get the angle of wind pendulum, which leads toa signal feedback loop. Then the signal feedback loop consists closed-loop control system. Arithmetic is controlled by adjusting PI. Key word: STM32F10
6、3VCT6; MPU6050;PID目录前言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第五
7、章 测试方案与测试结果185.1 测试所用仪器185.2 测试方案185.3 误差分析19致谢20参考文献21附录22III前言风力摆控制系统即控制做自由摆运动。自由摆是一种典型而具有代表性的运动形式,一直以来人们对单摆运动的运动规律进行了大量的研究,自由摆运行相当于是从单摆运动衍生的运动形式。风力摆系统是一个典型非线性,不稳定的系统。在经典控制理论和现代控制理论的应用是一个很具有代表性的问题。将其作为实验装置时可以测试控制理论,检验控制方法和思路。这些控制思想都能广泛应用于一般工业过程控制,所以对于风力摆控制系统在控制理论的探索方面具有很重要的理论研究和实际应用价值。该系统所运用的传感器为惯
8、性测量单元,惯性技术作为一门高科技尖端技术,它结合了机电、光学、数学、力学、控制及计算机科学的尖端技术。惯性是所有质量体的基本属性,建立在惯性原理基础上的系统不需要任何外界信息,也不会向外辐射任何信息,仅靠其系统本身就能在全天候环境下,自主的进行连续的三维定向和定位。并且能获取运载体完备的运动信息,以及具有优秀的隐蔽性。这些特点是其他导航系统所无法比拟的。运动控制系统包括的处理运动算法和信号的控制器,能增强信号、可供应执行器提供运动输出放大器;惯性测量单元检测数据进行反馈,可基于输出和输入的比较值,构成闭环系统。调节器对偏差信号进行比例、积分、微分运算。微分作用加快系统动作速度,减少超调,克服
9、振荡;积分作用消除静态误差。三种作用方式结合在一起可以达到既快速便捷,平稳准确的效果。采用这种方式构成的调节器,只需改变输入和反馈电路的内容,便能获得不同的调节规律。控制系统里的一些比较抽象的概念,反馈、稳定性、发散收敛速度和系统的抗干扰性能等,风力摆都能有很直观的表现。对于该系统典型的控制方法有,PID控制、智能控制、模糊控制等。控制理论的研究人员将风力摆系统作为研究对象,希望开拓出新的控制方法,应用在航空航天等高科技领域。传统8/16位单片机,虽然在工业领域中得到了广泛运用,但是现在的越来越多的工程控制产品的需求多功能、易用界面、低功耗、多任务等等一系列任务。对于这些需求,仅仅使用传统8/
10、16位单片机已经不足以满足。看准了这个市场,ARM公司推出了Cortex-M3处理器,它对微控制器和低成本应用提出优化,具有低成本、低功耗和高性能的特点,能够满足工程师进行创新设计的需求。意法半导体公司推出了基于Cortex-M3内核32位的微控制器STM32,相对于ARM7、ARM9这类速度更快的32位来说,采用最合适的内核构架以及独特的开发方式。它具有性价比高和易于开发两个优势。这导致STM32一上市就以非常快的速度占据了中低端微控制器的市场。STM32的有两种开发方式。一种是与传统单片机开发方式相同的寄存器开发,就是通过对微处理器的进行直接的读写操作。使用这种方式需要对微处理器的底层寄存
11、器以及外围电路有很深的理解。而且由于STM32的寄存器种类和数量都要比传统单片机多得多,故使用寄存器开发方式有比较高的门槛。这种方式的优点也十分明显,它十分贴近物理电路层面,这样设计出的系统,其稳定性、可靠性以及运行速度都要好得多。另外一种开发方式是库函数开发。这是一种自顶而下的方式刚好与前一种方式相反,可以从上层的API一层一层跟踪到底层寄存器,从而彻彻底底的了解寄存器,了解CPU的内存分布,再到启动代码、开发环境设置等等。这种方式大大的降低了学习开发STM32的门槛,让初学者能够快快速上手,仅通过调用库里的API(应用程序接口)就能够实现一个大型程序的搭建。做出能满足各种用户需求的应用。第
12、一章 系统方案设计与论证1.1 系统整体结构图1 系统整体框图1.2 方案简述 本系统以超低功耗MCUSTM32F103VCT6为控制核心,风力摆采用万向节、碳素纤维管、四个直流风机构成。MCU输出PWM波经过直流电机驱动控制四个风机转动,使风力摆获得摆动动力。MPU6050的三轴加速度数据和三轴角速度数据,经MCU解算之后得到风力摆摆角,形成信号反馈回路。组成闭环控制系统。1.3 电源选取自制稳压源,电源电压稳定,上电即可用,能省掉系统校准的麻烦,自制稳压源采用78系列稳压芯片,最大输出电流为3A,但对该项目而言,4个直流风机转动时,电流过大。自制稳压源并不能满足要求。采用兆信KXN3030
13、B直流稳压电源,最大电压可达到30V,最大输出电流能到达30A,能提供四个风机转动所需电流,电压稳定性也可满足要求。1.4 直流风机采用通用小型轴流风机,12V直流供电,轻巧。但功率不大,风力太小,并不能让风力摆在短时间内达到题目所需要的摆动长度。采用小型涵道有刷风机,涵道风机属于高速轴流风机, 12V直流供电,风机产生风力能有效使风力摆摆动。能满足要求。1.5 三维角度传感器采用L3GD20三轴陀螺仪,能测量三轴角速度。如果在此使用还需再另外加载一个三轴加速度计,而采用微处理单元MPU6050。该芯片包含三轴加速度计及三轴陀螺仪,外围电路设计简单,采用IIC通信协议,具有量程大,精度高,功耗
14、低等特点。完全满足题目要求且具备更优的性能。1.6 风机驱动模块采用L298N电机驱动模块,最大工作电压为50V,最高电流4A,一个芯片能驱动两个直流电机。对于本系统来说,4A电流供两个电机工作有点勉强,调节裕度太小。而采用BTN7971的驱动模块,驱动板工作电压范围:7V14V,最大电流能达到60A,能满足题目要求。且调节裕度很大。1.7 风力摆结构一组4个直流风机用粗单股导线吊挂在支架上,摆动阻力小,受力更均匀,但单股导线在画圆时必然产生自旋,加大了系统的控制难度。如果用一组4个直流风机用碳素纤维管通过万向节固定在支架上,由于碳棒和万向节是刚体,在控制过程中不会遇到自旋的问题,万向节摆动时
15、阻力只比粗导线略大,对摆动影响不大。1.8 控制算法采用模糊控制算法,模糊控制算法是对手动操作者的手动控制策略、经验的总结.模糊控制算法有多种实现形式,应用最早、最广泛的是查表法,查表法可大大提高模糊控制的时效性,节省内存,它不需要事先知道对象的数学模型,具有系统响应快、超调小、过渡过程时间短等优点,但编程复杂,数据处理量大。 如果采用PID算法,按比例(P)、积分(I)、微分(D)的函数关系,进行运算,将其运算结果用以输出控制。优点是控制精度高,且算法简单明了。对于本系统的控制已足够精确,节约了MCU的资源和运算时间。 第二章 理论分析与计算2.1 起摆分析风力摆摆动是依靠风机转动推动空气,
16、空气对风力摆有一个反作用力使风力摆运动起来,想让风力摆摆动起来,就要使空气对风力摆的作用力力的方向与速度方向一致。只要控制风机,满足这个条件转动,就可以使风力摆的摆动幅度越来越大。本题我们是通过一开始让一个风机机转动一定时间,形成小幅度摆动,然后在摆动到最高点的时候,每次位于最高点的风机转动,这样使摆动幅度慢慢增加。2.2 摆动固定长度 风力摆摆动过程就是动能与重力势能相互转化的过程。理想情况下,风力摆应该是可以一直摆动不停止。既只要弥补掉风力摆每次摆动损失的能量就能让摆摆长稳定不变。通过调节风机转动,能做到使摆长无明显衰减也不明显增大,再通过MPU6050数据,姿态解算得到摆角,每一个摆角都
17、能对应成相应摆长。这样就可以得到与设定偏差长度,再使用PID控制算法自动调节减小偏差,达到摆动固定长度的要求。2.3 PID算法分析工程实际中,应用最为广泛调节器控制规律为比例、积分、微分控制,简称PID控制。 PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制主要技术之一。当被控对象结构和参数不能完全掌握,或不到精确数学模型时,控制理论其它技术难以采用时,系统控制器结构和参数必须依靠经验和现场调试来确定。PID连续系统模型为:MCU是数字调节,动作是断续的。它以采样周期为间隔,对MPU6050输出进行采样,由于该传感器输出为数字量,故不需要进行模
18、数转换。采用数据经过解算后的到偏差信号,经过一定调节规律算出输出值,再通过PWM波向传送给风机的驱动电路。对MCU来说,需要将上式离散化才能进行运用。PID离散模型为:再将离散算法再是通过软件实现:X=X.in - X.offset;increment += X;/对X进行积分if(increment > increment.max)increment = increment.max;else if(increment < -increment.max)increment = -increment.max;pid_out = kp * X + ki * increment + kd
19、 * (X - X _old);X _old = X; 其中X为偏差信号、X.in为传感器信号输入、X.offset为设定值、increment偏差信号积分,increment.max 为积分上限,kp、ki、kd为PID参数,整个程序每隔时间运行一次。2.4 摆角解算系统的由于惯性测量单元(MPU6050)直接固联在单摆中心轴线上,是一个捷联式惯导系统。MPU6050测量摆锤的角运动信息和线运动信息,MCU根据这些信息可解算出摆角。以下参数均为MPU6050的原始数据经滤波之后的得到: 参数,分别对应三个轴的角速度数据,单位是 弧度/秒;参数,分别对应三个轴的加速度数据,单位是 米/秒;先根
20、据加速度数据转换单位加速度分别为,设将地理坐标参考系转到当前的系统参考系(角速度积分)的旋转用四元数表示为:将地理重力单位向量转到当前参考系。则有:向量(,)为在当前参考坐标系的中地理重力单位向量。MPU6050的加速度计由于噪声比较大,受振动影响比其角速度计明显,在一段较短时间内的可靠性不高。而角速度计噪声小,但是由于积分是离散的,长时间的积分会出现漂移,从而产生较大误差。因此需要用加速度计求得的姿态来矫正角速度积分得到的姿态。在当前参照系上,由于摆锤只受重力作用,故加速度计输出即为测出来的重力向量是(,);根据陀螺仪工作原理,角速度积分后的姿态来推算出的重力向量是(,),它们之间的误差向量
21、,就是角速度积分后的姿态和加速度计测出来的姿态之间的误差。向量间的误差即向量积(也叫外积、叉乘):、 就是两个重力向量的叉积。这个叉积向量依然是位于当前坐标参考系上,而角速度积分误差也是在当前坐标参考系,而且叉积的大小与角速度积分误差成正比,正好拿来纠正陀螺。对叉积进行积分:用叉乘误差来做PI修正陀螺零偏,通过调节Kp,Ki两个参数,可以控制加速度计修正陀螺仪积分姿态的速度再对角速度进行直接积分:再将该四元数归一化之后,转换成欧拉角即可得到两个方向的摆角第三章 系统各模块电路设计3.1 稳压电路模块由于直流电机做执行机构,所以需要有给直流电机供电的电源,并且为了防止电机转动带来的电流对MCU的
22、影响,MCU供电和电机供电要分开。所以选用7805稳压芯片输出5V稳定电压给MCU供电。C1、C2分别为输入端和输出端滤波电容。图2 稳压电路模块原理图3.2 矩阵键盘模块键盘作为人机交互的输入设备,其在要求有充足的输入端为人机交互信息输入做好硬件基础,CH451。内置RC 振荡电路,可以动态驱动8 位数码管或者64 位LED灯,具有BCD 译码、移位等功能;同时还可以进行64 键的键盘扫描;CH451 通过1 线或者可以级联的4 线串行接口与MCU等交换数据;并且提供上电复位和看门狗等监控功能。本系统以CH451为核心的矩阵键盘,CH451芯片内部自带硬件消抖,大大方便软件处理,并可做到多达
23、64个按键,本次设计使用16个按键。图3 CH451矩阵键盘原理图3.3 风机驱动模块 风机作为本系统的动力部分,其功率要求大,对驱动承受电流值要求高,以BTN7971B驱动芯片为核心的电机驱动,可以承受068A电流,本系统每个风机驱动采用双BTN7971B大电流H桥驱动。图4 风机驱动模块原理图第四章 软件设计流程4.1 软件结构图5 软件流程图4.2 软件流程简介开始运行以后,首先进行系统各个硬件的初始化,然后进入循环体进行按键扫描,检测到有键按下通过switch判断后进入相应的功能界面中,进入界面后输入相应的参数后,按下确定键,风力摆即可安装设定参数进行动作。4.3 显示模块初始化及其界
24、面程序分析本系统使用的显示模块为ALIENTEK 推出的一款高性能 OLED 显示模块ATK-0.96 OLED,要使用这个显示模块,主要有三个步骤,首先是选择MCU与OLED通信所使用的通信协议,再根据所选的通信协议进行物理线路的连接,最后用MCU通过协议对模块寄存器进行配置。这里使用的是SPI通信协议;SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous
25、Serial Port) 的模块(Module)来实现的, 它允许 MCU 以全双工的同步串行方式, 与各种外围设备进行高速数据通信。图6 SPI写时序图(本图片摘自ATK-0.96 OLED模块用户手册_V1.0)CS:片选信号RST(RES):硬复位DC:命令/数据标志(0,读写命令;1,读写数据)。 SCLK(D0):串行时钟线SCLKSDIN(D1):串行数据线SDIN 图7 MCU与OLED通信原理图在发送数据时, MCU要先向内部缓冲区里写入将要发送出去的数据, 这些数据会被移位寄存器自动移入内部缓冲区里的数据, 然后这些数据通过MCU的SDO管脚传给OLED的SDI 管脚, OL
26、ED的移位寄存器则把从SDI管脚接收到的数据移入其内部缓冲区 里. 与此同时, OLED的移位寄存器里面的数据根据每次接收数据的大小, 通过OLED的SDO 发往 MCU的SDI, MCU的移位寄存器再把从 SDI 接收的数据移入内部缓冲区.在单次数据传输完成之后,内部缓冲区会将数据移出到相应的读寄存器中,程序可以通过从MCU读寄存器读取与OLED数据交换得到的数据。在这个过程中时钟信号又MCU的定时器生成通过SCK线传输给OLED模块,从而实现同步。MCU与OLED的数据交换之后向其控制寄存器中写入相应参数进行初始化,之后就可以对显示模块的界面进行相应的配置。界面程序分析:typedef s
27、truct u8 SET;u8 mode;u8 point;u8 pointMAX;u8 Numallow;u8 NumFlag;u8 pointFlag;float Value;KeyNum;extern KeyNum KEY_FLAG;以上为按键的结构体定义以及声明。其中定义了按键配合显示的各种标志位,以及键盘输入值的缓存空间Value。void window_main(void)switch(KEY_FLAG.mode) case 0:window0();break;case 1:window1();break;case 2:window2();break;case 3:window3(
28、);break;case 4:window4();break;case 5:window5() ;break;default:break;这是程序主循环中的内容,用于根据按键输入的值确定系统将要执行的动作以及进入对应的功能设置界面,其中window0()为主界面,window1()window5()为相应的功能界面。void window0(void)if(KEY_FLAG.mode=0) if(!KEY_FLAG.pointFlag) OLED_Fill(0x00); /清屏OLED_P6x8Str(0,0, (uint8_t *)"1.request1 and 2");
29、 OLED_P6x8Str(0,1,(uint8_t *)"2.request3 "); OLED_P6x8Str(0,2,(uint8_t *)"3.request4 "); OLED_P6x8Str(0,3,(uint8_t *)"4. request5 ");OLED_P6x8Str(0,4,(uint8_t *)"5. request6");OLED_P6x8Str(0,7,(uint8_t *)"mode= 000 "); KEY_FLAG.pointFlag=1; OLED_P6x8
30、Num_8bit(36,7,mode); 该函数设置系统主界面里面显示的元素以及实时的对mode这个功能字进行显示。void window1(void)if(KEY_FLAG.mode!=0) if(!KEY_FLAG.pointFlag) OLED_Fill(0x00); OLED_P6x8Str(0,0,(uint8_t *)"1.request1 and 2");OLED_P6x8Str(0,2,(uint8_t *)"Length: ");OLED_P6x8Str(0,4,(uint8_t *)"-");KEY_FLAG.po
31、intFlag=1;KEY_FLAG.point=1;KEY_FLAG.pointMAX=3;KEY_FLAG.Numallow=1; switch(KEY_FLAG.point)case 0: ;break;case 1:OLED_P6x8Num_8bit(42,2, KEY_FLAG.Value);break;case 2:Clength=KEY_FLAG.Value;OLED_P6x8Str(110,2,(uint8_t*)"OK");KEY_FLAG.Value=0;KEY_FLAG.point+;break;case 3: KEY_FLAG.Numallow=0;
32、 if(KEY_FLAG.SET) OLED_P6x8Str(0,7,(uint8_t *)" SET!"); request1();break;default:break;功能界面配置函数,这个函数实现的功能是对摆长的设定,并且一键启动。其中首先是对图像界面进行了设置,然后进行键盘输入值的实时显示,以及键值和相应的动作设备直接的数据传递,实现通过键盘对单摆摆长,停摆等动作的控制。这个函数是一个功能窗口模版,其他的功能配置一样是通过这个函数实现,使用时只需修改if(KEY_FLAG.SET)这个大括号的内容以及界面的显示字符。4.4 MPU6050的初始化及相关程序段分析M
33、PU6050整合了三轴陀螺仪、三轴加速度计,可同时对角速度和加速度进行测量,初始化MPU6050首先就需要在MCU上实现数据传输的通信协议。通信协议为IIC总线协议,该协议的硬件连接十分简单,只要求两条总线线路 一条串行数据线 SDA 一条串行时钟线 SCL。IIC是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。在 I2C 总线中 有起始条件和停止条件,起始条件是指SCL线是高电平时 SDA 线从高电平向低电平切换。停止条件是指当 SCL 是高电平时 SDA 线由低电平向高电平切换。起始和停止条件都由MCU产生。起始条件:SDA_H;SCL_H
34、; _NOP;/适当延时SDA_L;结束条件:SDA_L;SCL_H; _NOP; /适当延时SDA_H;SDA 线电平要在SCL 线的高电平周期保持不变。数据线的高或低电平状态只有在 SCL 线的时钟信号是低电平时才能改变。MCU在GPIO上生成开始条件后,SCL发生一次下降沿时,MCU从SDA读入一位数据,连续8次完成1byte的一个字节数据传输。每次次发送数据必须为 8 位一个字节。每次传输可以发送的字节数量不受限制 每个字节后必须跟一个响应位。数据传输顺序是从高位到低位。如果在数据传输过程中,MCU不能立即接受数据。例如有一个一个内部中断服务程序优先级在数据传输程序之上,可以使时钟线
35、SCL 保持低电平让主机进入等待状态 当从机准备好接收下一个数据字节并释放时钟线 SCL 后,数据继续传输。IIC协议配置完毕之后就开始对MPU6050的寄存器进行配置:u8 InitMPU6050(void)u8 date;date = Single_Write(MPU6050_ADDRESS, PWR_MGMT_1, 0x00); /解除休眠状态date += Single_Write(MPU6050_ADDRESS, SMPLRT_DIV, 0x07); date += Single_Write(MPU6050_ADDRESS, cONFIG, 0x03); /低通滤波date += S
36、ingle_Write(MPU6050_ADDRESS, GYRO_CONFIG, 0x10); /陀螺仪量程选择 +-1000date += Single_Write(MPU6050_ADDRESS, ACCEL_CONFIG, 0x09); /加速度计量程选择 +-4Greturn date;在寄存器配置完成之后,MPU6050就已经开始工作,通过对其数据缓存器进行读操作就能得到相应的角速度和加速度。读取完毕后的数据不能直接使用,其中的噪声很大,需要用滤波算法将其有效信号提取出来再进行使用。double IIR_I_Filter(double InData, double *x, doub
37、le *y, double *b, short nb, double *a, short na) double z1,z2; short i; double OutData; for(i=nb-1; i>0; i-) xi=xi-1; x0 = InData; for(z1=0,i=0; i<nb; i+) z1 += xi*bi; for(i=na-1; i>0; i-) yi=yi-1; for(z2=0,i=1; i<na; i+) z2 += yi*ai; y0 = z1 - z2; OutData = y0; return OutData;该函数实现的是一个I
38、IR直接I型滤波器,InData为当前数据,*x为未滤波数据缓存区,*y为已滤波数据缓存区,*b、*a为参数缓存区,nb、na 为滤波器阶,OutData为输出结果。 第五章 测试方案与测试结果5.1 测试所用仪器序号仪器名称1兆信KXN-3030D电源2数字风速计5.2 测试方案(1) 从静止开始,进行幅度可控的摆动,画出长度可设置,偏差不大于±2.5cm 的直线段,并且具有较好的重复性,用上位机观察角速度波形是否发散(或收敛)记录风力摆达到要求所需时间,实际直线段长度。测量次数设定直线段长度(cm)实际直线段长度(cm)角速度波形发散或收敛达成时间(s)130。031。0收敛52
39、35。035。0收敛4.77340。040。5收敛5.80445。044。5收敛4.98550。055。5收敛4.97655。044。5收敛5.01760。060.0收敛5.08(2)风力摆从静止开始,设定摆动方向,按照设置的方向(角度)摆动,画出不短于20cm 的直线段。记录风力摆达到要求所需时间,实际直线段长度。测量次数设定角度(°)实际角度(°)达成时间(s)130314.95250544.88370674.7041101105.8851701725.7063003004.65(3) 将风力摆拉起一定角度(30°45°)放开,记录风力摆制动达到静止
40、状态的时间。测量次数拉起角度(°)达到静止时间(s)14542452.993403.124402.955353.126353.37302.968302.86(4)以风力摆静止时激光笔的光点为圆心,驱动风力摆用激光笔在地面画圆,重复3次;在 1535cm 范围内设置圆半径,记录风力摆达到要求所需时间,设定圆半径,实际园半径。测量次数设定圆半径(cm)误差范围内的测试点个数(cm)达成时间(s)11567.4422066.6032555.7443066.1353545.94(5)作圆周运动,在距离风力摆 12m 距离内用一台 5060W 台扇在水平方向吹向风力摆,台扇吹 5s 后停止,记
41、录风力摆恢复发挥设定规定的圆周运动所需时间。设定圆半径,实际园半径。测量次数设定圆半径(cm)5S后误差范围内测试点个数(cm)达成时间(s)11537.4422056.6032555.7443066.1353545.945.3 误差分析机械结构不均匀使风力摆静止时重心不位于中轴线上,摆角解算出的角度与实际角度有误差。致谢 这篇论文是三个月来在老师悉心指导下综合运用大学这几年来所学的各种专业知识与实践相结合的结果。这篇论文能够完成,首先要感谢唐穗欣老师的悉心指导。唐老师见识广博,为我提供了大量的资源以及更为广阔的发展空间。并开放实验室,让我能将纯粹理论与实际联合在一起,得出最正确的结论。从刚开
42、始的什么都不懂到现在论文就要完成,其中的过程有许多磕磕碰碰。经历过后真正的感觉以往学到的理论知识,不仅仅只是理论。似乎许多事物都能透过现象看到它的工作本质。在这整个过程中还有许多可敬的朋友、同学、师长给了帮助,在这里请接受我最诚挚的谢意,由于笔者能力有限,文章中可能有许多错误或疏漏之处,恳请各位老师予以斧正。参考文献【1】 胡寿松.自动控制原理(第六版).科学出版社【2】 秦永元.惯性导航(第二版).科学出版社【3】 宋 岩.ARM Cortex-M3权威指南.北京航空航天大学出版社【4】 刘火良.STM32库开发实战指南.机械工业出版社【5】 童诗白.模拟电子技术基础(第四版).高等教育出版
43、社 【6】 阎石.数字电子技术基础.清华大学电子学教研组编【7】 张华清等.信号与系统分析.机械工业出版社【8】 邱关源等.电路.高等教育出版社 【9】 李元春.计算机控制系统 .高等教育出版社【10】谭浩强.C程序设计.北京:清华大学出版社【11】 杨建华 杨艳琴.MSP430系列16位超低功耗单片机原理与实践.北京航空航天大学出版社【12】罗杰 谢自美.电子线路 设计·实验·测试.电子工业出版社【13】黄根春等.全国大学生电子设计竞赛教程:基于TI器件设计方法.电子工业出版社【14】胡寿松.自动控制原理(第五版).科学出版社【15】苏金明 . MATLAB7.0实用指南
44、M .电子工业出版社【16】范超毅等.步进电机的选型与计算.机床与液压【17】金以蕊.过程控制M.清华大学出版社【18】徐科军.传感器与检测技术(第二版).北京电子工业出版社附录STM32VCT6原理图/*main.c*/#include "include.h" #define MAX(v1,v2) v1>v2?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
45、->CCR1 = 0;TIM2->CCR1 = 0;TIM2->CCR1 = 0;EnTIM3(); while(1)if(sensor.gyro.origin.x<100)TIM2->CCR1=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;
46、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_
47、s<angle.roll)max_s = angle.roll;if(angle.roll<1&&angle.roll>(-1)cnt-;if(sensor.gyro.origin.x<(100)TIM2->CCR1=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_Se
48、nser = 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_e>150) sum_e=150;pid_out = (28-l/100)*e_h+0.2*sum_e;if(pid_out<0) pid_out=0;cnt=30;max_s=0;if(sensor.gyro.origin.x<(100)TIM2->CCR1=pid_out;elseTIM2->CCR1=0;u8 fla
49、g_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.gy
50、ro.origin.x<0)pid_out=-1*kp* sensor.gyro.origin.x-kp_w*angle.roll;if(pid_out>2499)pid_out=2499;TIM2->CCR3 =pid_out ;TIM2->CCR1 = 0 ;/delay(time);/TIM2->CCR3 = 0;if(sensor.gyro.origin.x>0)pid_out=kp* sensor.gyro.origin.x+kp_w*angle.roll;if(pid_out>2499)pid_out=2499;TIM2->CCR1
51、= pid_out;TIM2->CCR3 = 0 ;/delay(time);/TIM2->CCR1 = 0;if(sensor.gyro.origin.y<0)pid_out=-1*kp* sensor.gyro.origin.y-(kp_w-0.1)*angle.pitch;if(pid_out>2499)pid_out=2499;TIM2->CCR4 = pid_out;TIM2->CCR2 = 0 ;/delay(time);/TIM2->CCR4 = 0;if(sensor.gyro.origin.y>0)pid_out=kp* sensor.gyro.origin.y+(kp_w-0.1)*angle.pitch;if(pid_out>2499)pid_out=24
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平凉职业技术学院《影视美术》2023-2024学年第二学期期末试卷
- 衡阳师范学院南岳学院《食品分析(含仪器分析)》2023-2024学年第一学期期末试卷
- 南阳职业学院《热力学与统计物理》2023-2024学年第一学期期末试卷
- 劳务分包担保合同
- 委托技术服务合同
- 委托设备维修合同
- 废旧物资回收承包合同
- 《对不良诱惑说不》学会拒绝课件-3
- 20253月合同明确的楼宇自控系统第三方接入标准
- 店房租赁合同范本
- 无人机操控技术课件:多旋翼无人机的飞行原理
- DB34∕T 3790-2021 智慧药房建设指南
- 被盗窃赔偿协议书范文范本
- 中职数学基础模块下册8-1随机事件教案
- 汽车行业系列深度五:复刻手机高端之路 华为赋能智电未来
- 物理因子治疗技术-光疗法
- 美观而安全的衣衫-包装设计 课件-2023-2024学年高中美术人美版(2019)选择性必修4 设计
- 垃圾填埋场运营合同范本
- CJT 289-2008 城镇污水处理厂污泥处置 制砖用泥质
- 2024年四川省眉山市中考地理+生物试卷(含答案)
- 当代世界经济与政治 李景治 第八版 课件 第1、2章 当代世界政治、当代世界经济
评论
0/150
提交评论