毕业设计(论文)-基于AVR的四旋翼无人机控制.doc_第1页
毕业设计(论文)-基于AVR的四旋翼无人机控制.doc_第2页
毕业设计(论文)-基于AVR的四旋翼无人机控制.doc_第3页
毕业设计(论文)-基于AVR的四旋翼无人机控制.doc_第4页
毕业设计(论文)-基于AVR的四旋翼无人机控制.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

基于AVR的四旋翼无人机控制郑州大学毕业设计(论文)题 目基于AVR的四旋翼无人机控制院 系软件学院(北)专 业计算机科学与技术班 级20112学生姓名学 号 指导教师职称副教授 2015年 5 月 3143摘要伴随计算机与控制理论的发展,无人飞行器已经成为一种热门的研究实践平台。四旋翼无人机作为无人机的一种结构简单的机型,其控制方式是研究的重点。本文重点研究对控制有重要影响的姿态解算和PID控制思想,并在此基础上实现四旋翼的控制飞行。本论文实现基于Atmel公司出品的ATmega328p的单片机为主控芯片,用以实现四旋翼空中停留,俯仰,翻滚飞行。整体系统可划分为处理单元、遥控单元、姿态结算单元与控制输出单元。针对设计目标,本论文采用MPU6050姿态传感器内部的运动引擎(DMP)作为姿态感知单元,运用PID控制理论,由主控芯片整合各方面数据完成对飞行器的姿态调整,并通过PPM信号遥控器对飞行器实行飞行控制。通过现实飞行,验证方法的科学性与稳定性。经过反复调试与试验,解决飞行过程中飞行器震动及其他外界因素对控制造成的影响,最终完成了对飞行器的控制。关键字:ATmega328p、运动引擎DMP、PID控制,PPMAbstractWith the development of the computer and control theory, unmanned aerial vehicles has become a hot research practice platform. Four rotor unmanned aerial vehicle (uav) as a kind of simple structure model of the unmanned aerial vehicle (uav), the control mode is the key of the research. This paper research has important influence on the control of attitude algorithm and PID control, and on this basis to realize four rotor of flight control.This thesis implemented based on Atmel company produces ATmega328p single-chip microcomputer as main control chip, to realize the four rotor aloft, pitch and roll. The whole system can be divided into processing units, remote control unit, posture and settlement unit and control unit of output.In view of the design goal, this paper adopts the MPU6050 attitude sensor Digatal Motion Processor engine (DMP) as a gesture sensing unit, using PID control theory, the main control chip integrated data to complete all aspects of aircraft attitude adjustment, and through the PPM signal remote control of the aircraft flight control.By real flight, validation method is scientific and stability.After repeated debug and test, solve in the process of the flight vehicle vibration to control and other external factors, finally complete the control of the aircraft.Key Word:ATmega328p、MotionProcessing、PID Control、PPM目录摘要IAbstractII目录III第一章绪论11.1 研究意义11.2 研究状况21.3 研究重点3第二章理论基础52.1 工作原理52.2 姿态描述62.2.1 欧拉角62.2.2 四元数72.3 姿态控制8第三章硬件结构113.1 硬件整体设计113.2 姿态传感器113.2.1 MPU6050模块123.2.2 运动引擎123.3 主控芯片133.4 无线模块143.5驱动电调15第四章程序设计164.1 程序整体设计164.2 系统初始化164.3 遥控器解码184.4 姿态处理194.5 决策模块224.6 电机驱动25第五章测试与试验265.1 遥控解码测试265.2 姿态数据测试265.3 信号输出285.4 参数整定285.4.1 整定方法285.4.2 实际整定方式305.5 整机测试30第六章总结32致谢33参考文献34附录I35附录II35第一章 绪论1.1研究意义四旋翼(Quadrotor)是无人飞行器(UAV)的一种特殊机型,如图1-1,其具有十字排列的四个螺旋桨方便起飞与控制,在低空低速状态,可以在狭小的空间里执行任务。与其他无人机比较,由于结构简单,方便携带且维护成本低。图1-1:四旋翼结构无人自主飞行平台能够自主飞行并完成相应任务,与通用有人飞机相比,其造价低廉,可维护性,使用费用都具有明显优势。比如在近年来的历次战争中,美国为了减小战争开销并缩小人员伤亡,大量使用了无人机代替有人机完成危险任务,施行对战场监视,情报中专,甚至发起攻击。让美军在取得硕硕战果的同时,极大减小人员伤亡和战争开销。在现在战争中,日益强调信息化,快速反应的战场,无人机将会越来越发挥重要的角色。在民用领域无人机的应用也比较广泛。例如无人机可在发生灾害后及时实施监控灾情,如图1-2,对救灾和灾害处理产生有益影响。图1-2:四旋翼在救灾中的应用本论文通过研究四旋翼控制算法和数据解算方式,实现灵活运用理论,完成理论到实践的转化过程。进一步加深对硬件处理器与程序设计之间的相互协作,共同达到设计目标。1.2研究状况四旋翼结构最早在20世纪初就已经出现,对于当时的科技水平人们尝试了许多方法,都没很好的完成控制飞行。图1-3为第一架四旋翼飞行器。图1-3:第一架飞行器结构直到上世纪90年代,随着微型计算机、传感器、通讯技术、能源以及控制理论的发展,给四旋翼的发展带来了质的飞跃,四旋翼的研究已经成为时代的热点。其中一部分四旋翼项目主要研究在系统建模和不同控制策略的优异与否,例如宾夕法尼亚大学GRASP实验室设计制造的室内四旋翼飞行器,如图1-4,它以红外光惯性测量单元来确定自身姿态,能够在室内进行稳定飞行和着陆,且鲁棒性很。图1-4:宾夕法尼亚四旋翼项目图1-5则为麻省理工学院所设计的四旋翼飞行器,它运用的为扩展卡尔曼算法对姿态传感器得到的数据进行融合滤波,达到稳定控制的目标。可以根据要求按照计划进行自主飞行,并可用过Wi-Fi与地面控制站交互信息。图1-5:麻省理工学院四旋翼项目另一部分则更加侧重飞行器在具体应用中的研究,比较为人熟知的有亚马逊的“首要飞行”无人机送货项目。如图1-6,该无人机结合全球定位系统(GPS)从96个仓库之一直飞订货人门口派送低于5磅的货物,亚马迅86%的运送物品质量都满足此要求。到2013年亚马逊持续对该项目进行安全测试,以获得美国联邦航空管理局的批准。图1-6:亚马逊PrimeAir无人机1.3研究重点本设计基于AVR单片机,包括四旋翼飞行器的控制程序和硬件设计两部分。重点在飞行器控制程序的设计。完成飞行器的悬停,俯仰和翻滚运动。属于四旋翼研究的第一部分:研究重点偏向系统建模和控制算法的优异与否。第一章绪论说明本论文所处方阵,研究目标以及四旋翼研究中的重点问题。第二章简单描述四旋翼系统的理论基础。第三章硬件结构中描述硬件系统的设计。飞行平台硬件主要包括姿态传感器和遥控接收机,数据由中央处理器ATmega328p处理后,由电调改变电压的大小控制电机转速。第四章程序设计中描述程序部分,根据硬件功能和完成目标编写,包括数据采集,数据处理和数据输出三个部分。数据采集包括单片机对姿态传感器的数据和遥控器数据的采集;数据处理由PID控制理论作为思想基础对采集到的数据处理得到控制量;数据输出通过给电调信号达到控制转速的目标。其中涉及的重点有:(1) 理论基础四旋翼飞行器为高度耦合的,非线性,多变量,欠驱动系统。但由于外界干扰源多,受到多种物理因素的制约,很难建立一个准确的数学模型,这对飞行器的控制起到不理的作用,仍需要继续探索。本论文对飞行器的姿态控制部分进行数学描述,辅助程序的编写。(2) 姿态数据的融合姿态数据对飞行器的控制起到决定性作用,但由于干扰源较多,往往不能得到准确的实时姿态,直接影响飞行器的姿态调整。本论文通过MEMS(Micro-Electro-Mechanical System)自带的运动引擎对飞行器数据融合与滤波获得姿态数据。(3) 飞行控制算法四旋翼飞行器为四输入,六输出系统,其本身并不像固定翼那样稳定,这对控制算法提出了苛刻要求。目前控制算法主要有PID、PD、神经网络控制、鲁棒控制等。PID控制基本可以满足一般性控制要求,本文则采用PID控制作为飞行器的控制算法。本设计在解决以上问题后并在第五章测试与试验部分观察实验结果。通过第六章总结部分回顾整个实验,描述问题解决的不足与长处。第二章理论基础本章首先说明四旋翼能够飞行的原理,在此基础上得到一般性数学描述,并在最后通过控制量解析飞行姿态的实际控制过程。2.1 工作原理四旋翼无人机通过四轴连接的电机转动,带动桨叶产生升力F。设自身重力为f,如图2-1。l F=f时,飞行器悬停。l Ff时,飞行器做垂直爬升运动。l FF(2-2)产生多余升力将飞行器沿Y轴倾斜,达到改变翻滚角的目标。l 俯仰角的改变:如图2-6图2-6:俯仰角的改变F(3+3)F(1-1)产生多余升力将飞行器沿X轴倾斜,达到改变俯仰角的目标。l 偏航角的改变:如图2-7图2-7:偏航角的改变同时让1=30,2=40飞行器无法克服多余转动力矩,就会引起自身旋转,达到自身旋转的目标。第三章硬件结构本章完成无人机系统的硬件部分内容,其中主控芯片ATmega328p、姿态传感器为本设计的核心硬件。3.1硬件整体设计(1) 整体硬件由四部分构成:无线控制系统,姿态传感器,执行机构和中央数据处理单元,如图3-1。3-1:硬件系统构成l 无线控制系统由发射机和接收机组成,为外界对飞行器的操控单元l 姿态传感器是由MPU6050三轴陀螺仪和加速度计传感器,实时提供飞行器的当前姿态,为处理器提供当前姿态参考。本论文使用其内部DMP处理器的数据为姿态数据l 中央数据处理单元则整合无线模块和姿态传感器信息,经过 PID控制理论计算,输出最终输出值l 执行机构由电调和电机组成,负责真正控制飞机的飞行和姿态调整(2) 连接方式:各部分由电线物理连接l 无线控制系统与中央处理单元通过PWM信号线交互信息l 姿态传感器与中央处理单元通过IIC总线与一个处理器中断交互信息l 中央处理器与电调单元通过PWM信号线完成信息交互3.2姿态传感器姿态传感器实时报告当前飞行器的翻滚角,俯仰角,偏航角。本文采用MPU6050三轴加速度计与陀螺仪集成芯片模块。3.2.1MPU6050模块姿态传感器采用MPU6050电路模块,模块电路图如图3-2图3-2:MPU6050模块电路图使用时需要把VCC接入+5V到+3.3V之间的电压,GND接地。IIC总线的SDA与SCL引脚分别与处理器SDA与SCL引脚相连。AD0接低电平时,传感器IIC地址为0x68,接高电平时,传感器IIC地址为0x69,图中AD0引脚接地,所以传感器IIC地址为0x68。INT引脚为MPU6050 DMP数据输出中断,当DMP完成一份姿态角度计算后会拉高INT引脚以通知处理器数据准备完成。本设计使用到了INT引脚接控制器INT0引脚。XDA与XCL为连接其他IIC总线传感器接口,本文没有使用。传感器量程:l 加速度量程范围 2g 4g 8g 16gl 陀螺仪量程范围 250/s 500/s 1000/s 2000/s感器缺省设置量程为2g,250/s3.2.2 运动引擎DMP(Digital Motion Processing)是MPU6050传感器内部数字运动引擎5,它将采集自身传感器数据,对数据融合滤波后转换为四元数(quaternion)形式放进FIFO缓冲池等待处理器读取。如图3-3为MPU6050传感器内部结构关系图图3-3:MPU6050内部结构l MPU通过用户定义的速率,让DMP采集三轴加速度计数据与三轴陀螺仪数据。所有能够从MPU传感器的数据有3轴加速度值,3轴陀螺仪值和温度值。l FIFO队列保存完整的DMP处理后的姿态数据,允许系统处理器突发地读取他们,以减少系统处理器读取数据时间开销。当读取完FIFO数据后系统处理器可进入休眠模式以节约能源,直到MPU再次提供完整的姿态数据。l DMP还包含数字可编程的低通滤波器。3.3主控芯片从姿态传感器接受到的数据与遥控器数据的需要进行计算后才能交给执行单元完成实际控制。对本实验目标四旋翼飞行器进行控制需要对处理器有以下要求:l 4路输出PWM引脚l IIC总线接口l 硬件中断引脚l 至少4个引脚用于遥控器信号接收由于AVR编程简便、速度快、价格也适用,本文采用ATmega328p芯片作为主控芯片。图3-4为ATmega328p芯片引脚定义说明3。图3-4ATmega328引脚定义图3-5为本实验选用ATmega328p最小系统电路图6图3-5ATmega328p最小系统l RESET引脚接高电平,当需要复位时按下按键使RESET引脚为低电平l XTAL1、XTAL2接外部16MHz晶振l AREF为AD参考电压输入端,本实验没使用AD单元,接地l AVCC、AGND为模拟单元电压与地l VCC、GND为数字电压l PD3、PB1、PB2、PB3引脚驱动电调4路PWM信号l PC0、PC1、PC2、PC3接收遥控系统接收机信号l PC4、PC5为IIC总线接口l PD1引脚为MPU6050 DMP数据处理中断引脚3.4 无线模块无线模块采用2.4GHz、PPM信号发送机和接收机,如图3-6为六通道接收机,每一通道发送出一个PWM信号,高电平持续时间代表遥控器遥感位置。接收机接到遥控器PPM信号并解码为PWM信号从六个引脚输出。图3-6:无线接收机本实验将接收机1-4通道接单片机Channel1-4,通过软件解码见4.3遥控器解码得到遥控位置。3.5驱动电调电调在项目中的作用为接受处理器PWM信号,通过改变电压控制电机转速。如图3-7电调连接图,选用电调接收1-2ms高电平信号,分别对应0-5V电压即电机的停和最高转速,转速刷新率范围为50-500Hz。图3-7:电调第四章程序设计本章说明控制程序的各个模块组成与信息交流方式,重点讨论姿态数据的获得。4.1程序整体设计软件系统由5部分构成:初始化模块、遥控器解码、姿态处理、综合处理单元和电机驱动。如图4-1图4-1:程序整体结构l 初始化模块进行处理器引脚初始化,定时器初始化,IIC端口初始化等工作,为整个系统工作所需操作做铺垫l 遥控器解码单元解码接收机发来的PWM信号,转化成规则数据,用于综合处理单元l 姿态处理接受MPU6050发送的数据并换算成欧拉角l 综合处理单元结合所有数据确定当前应输出量l 电机驱动模块根据输出值直接控制定时器寄存器,控制电机转速4.2系统初始化系统初始化完成对IIC总线初始化,串口初始化(仅调试),普通端口设置,以及定时器设定。初始化流程图如图4-2图4-2:初始化流程图l 普通端口初始化完成对引脚的输入输出定义,使能上拉电阻等操作。在本程序中设置遥控器接收端口为输入方向,PWM端口为输出方向l IIC总线初始化完成IIC总线的使能,使能IIC总线后PC4、PC5则从普通端口变为SCL、SDA信号线。其中SCL为IIC总线时钟线,SDA为IIC总线信号线l MPU6050初始化完成对姿态传感器的初始化任务。其中设置DMP输出频率为40Hz,实验发现高频率输出对信号将影响滤波效果。l 定时器初始化初始Timer1、Timer2两个定时器作为PWM信号产生控制器,其中Timer1在PB1、PB2输出2路PWM信号,Timer2在PB3、PD3引脚输出两外2路PWM信号。每路PWM分别控制某个电机转速。PWM(Pulse Width Modulation)及脉冲宽度调制,根据高电平占整个周期的比例控制功率的输出。如图4-11图4-11:PWM占空比由于本实验所选电调接受1-2ms高电平信号作为输入,分别对应最低功率和最高功率输出,转速刷新率在50-500Hz。根据以上要求设定定时器值。已知处理器晶振为16MHz,8位定时器,采用256分频可以达到16000000/256/256=244Hz刷新速度,满足50-500Hz刷新率要求。1-2ms高电平在8位比较寄存器中为62.5-125,为方便定义65-125共60个转速控制量。定时器PWM功能初始化代码:4.3遥控器解码本实验遥控器与接收机之间为PPM信号4,由遥控器发送接收机接收。如图4-3为PPM信号样式。图4-3:PPM信号说明PPM信号为周期为20ms的逻辑脉冲。相隔两个高电平之间为一个通道信号,代表一个摇杆位置,其中每个通道高电平时间在1ms-2ms之间,所以理论上最多可支持10通道信号传输。接收到的PPM信号由接收机解码为PWM信号通过引脚发送给处理器,每通道对应一个引脚。处理器接受到的PWM信号依次出现在各个引脚上,对其进行解码就是对高电平时间的记录。图4-4为信号解码流程图图4-4:信号解码流程图4.4姿态处理姿态处理单元基于MPU6050姿态传感器,通过IIC总线得到四元数数据,并通过四元数向欧拉角的转换得到姿态角。l 数据获得MPU6050数据手册中说明最大IIC总线速度为400kHz,根据IIC总线时钟计算公式SCL=CPU CLOCK Frequency16+2(TWBR)(PrescalerValue)设定TWBR寄存器值为24。IIC总线信息传输需要遵循规则,根据MPU6050数据手册可得到如图4-5,4-6信息图4-5:IIC总线数据发送规则图4-6:IIC总线数据接收规则传送数据中系统处理器始终为主机,MPU6050传感器始终为从机。当MPU6050运动引擎DMP处理完一次姿态数据后,便拉高INT引脚通知系统处理器数据的到来,系统处理器通过IIC总线访问MPU6050传感器FIFO队列,得到姿态传感器准备好的四元数数据。四元数获得代码为:此时四元数Q=w+x+y+z全部数据在Quaternion数据结构中。l 四元数转欧拉角四元数、姿态矩阵关系为:其中并且I3*3为单位矩阵单位额矩阵为对角线为1的矩阵,如3*3单位矩阵为式(2.5)中CEB与式(4.1)比较可知arctan与arcsin的值为-2,2,因此要用atan2代替arctan,及式(4.5)变为以式(4.6)用C语言描述为这样Roll,Pitch,Yaw角就都确定了下来,完成了姿态解算。4.5决策模块遥控器控制信息和当前姿态信息获得之后就到了将他们综合起来计算控制量了。控制理论“他完全不去考虑能量,质量和效率等因素”2,经过一百多年的发展,已经产生许多控制方法如神经网络控制、模糊控制、自适应控制等等,而PID控制作为最经典的控制理论被许多控制理论部分包含或者全部包含,本文采用经典PID控制作为飞行器综合处理方法。控制系统可分为开环控制和闭环控制两种如图4-7,图4-8所示,开环控制输出量对控制系统不产生影响,如子弹飞行。闭环控制有反馈单元反馈当前系统状态,影响控制系统,如导弹飞行。图4-7:开环控制系统图4-8:闭环控制系统本实验控制系统为闭环控制,PID控制器接受遥控器给定值控制马达转速大小产生升力F,控制被控对象整个飞行器姿态,由姿态传感器测量反馈现时姿态与遥控器对比,作为新输入参与下一轮控制过程。PID控制又名比例、积分、微分控制。在本实验整个系统中的PID控制如图4-9所示图4-9:本实验PID控制图PID控制公式为其中Kp为比例系数,Ti为积分系数,Td为微分系数。以求和代替积分,差分代替微分可以得到数字PID公式本文采用的是增量型PID控制及uk=uk-u(k-1),这里把积分和微分时间简化,根据式(4.8)可以得到根据式(4.9)写出C语言程序,其中PID程序流程图如图4-10图4-10:PID程序流程图转化为C语言为4.6电机驱动电机驱动就是对输出PWM信号占空比的改变。电调接受到PWM信号后转化成电压的变化控制电机的转速。图4-11:电机控制框图电机控制部分收集各控制量汇总后写入AVR定时器比较寄存器,产生当前PWM占空比信号,控制电机转速。转化为C语言为第五章测试与试验本章根据实际测试资料获得硬件、程序正确与否,通过串口或设备查看控制各个部分工作情况。重点说明测试PID控制部分参数整定。5.1遥控解码测试主控芯片接受到遥控器接收机发送的PWM信号并记录高电平时常,单位为微秒,最后通过串口发送给计算机显示各通道信息。操作:打开遥控器,无操作如图5-1从左至右依次为一通道,二通道,三通道信号,单位为微秒。图5-1:遥控器信号解码结果l 结论:图中可以看出遥控器各通道信号接收解码正常,高电平时间记录无误。5.2姿态数据测试姿态传感器输出数据为四元数各量值(w,x,y,z),经过四元数换算欧拉角转化为机体参考系B(oxyz)相对地面参考系E(OXYZ)姿态数据,经过串口发送给计算机,单位为度。可视化软件为SerialChart。图5-2为改变飞机翻滚姿势即翻滚角Roll角度值。l 操作:保持Pitch、Yaw角度不变,只改变翻滚角Roll图5-2:姿态数据结果翻滚角Roll图5-3为改变飞机俯仰姿势即俯仰角Pitch角度值l 操作:保持Roll、Yaw角度不变,只改变俯仰角Pitch图5-3:姿态数据结果俯仰角Pitch图5-4为改变飞机偏航方向即偏航角Yaw角度值l 操作:保持Roll、Pitch角度不变,只改变偏航角Yaw图5-4:姿态数据结果偏航角Yaw图5-5为欧拉角各方向角度综合改变l 操作:同时改变欧拉角各角度值图5-5:姿态数据结果l 结论:根据以上数据测试,姿态数据获得正常,且能正确反映机体姿态。5.3信号输出将飞行器置于地面,接通遥控器,改变遥控器控制量,并使AVR芯片PWM输出引脚接入示波器查看信号输出数据,如图5-6,图5-7数据显示图5-6:PWM波形输出遥控器最小值(1ms高电平)图5-7:PWM波形输出遥控器最大值(2ms高电平)l 结论:遥控器改变输出,PWM信号输出引脚高电平持续时间改变,且在1-2ms电调接收值范围内,PWM信号输出正常。5.4参数整定5.4.1整定方法控制过程由不稳定状态到稳定状态可能会出现如下4个状态。如图5-8四种震荡曲线图a) 发散震荡:被控系统姿态与给定系统姿态偏差随时间逐渐增大。b) 等幅振荡:被控系统姿态与给定系统姿态偏差随时间基本保持不变。c) 衰减震荡:被控系统姿态与给定系统姿态偏差随时间慢慢减小。d) 非周期震荡:被控系统姿态与给定系统姿态偏差随时间无规则变化。一种情况为控制量选取不合适导致系统紊乱;当控制参数选取合适时也会使系统出现特殊非周期震荡无震荡。图5-8:PID过渡过程状态图比例项,积分项,微分项对飞行控制有如下影响:l 比例系数Kp:比例调响应速度快,是调节控制主要参数。由式(4.9)可知只要存在误差就会输出调节量。比例系数过大时会使衰减震荡次数增多,过小时姿态调整缓慢。稳定前提下适当增大比例系数将起到减小稳态误差的作用。l 积分系数Ki:积分调节随时间的积累增大调节量,当系统有小幅度静态偏差时随时间积累会引起积分项调节,在控制过程中起到消除静态误差的作用,是比例系数辅助调节项。积分系数过大将引起系统震荡,过小时系统消除静差时间增长。l 微分系数Kd:微分项由式(4.9)当角度变化快(角速度大)时输出调节量较大,飞行器震荡时在平衡位置出现角速度峰值,微分项在本实验中有“阻尼”的作用。参数整定步骤:1) 将Ki,Kd参数设置为零,Kp参数逐渐增大,到系统出现等幅振荡;若系统误差范围合适,响应速度合适,只需比例调节。2) 若此时静态误差较大,可加入积分调节。将Kp保持不变,Kd设置为零,逐渐增加Ki使系统消除静态误差并不引起明显震荡即可。3) 若此时震荡经反复调节PI项无法消除,可加入微分调节。使Kd逐渐增大,同时适当更改Kp,直到系统调节稳定可靠。5.4.2实际整定方式如图5-9将飞行器固定并只打开需要的通道,测试飞行器在模拟空中状态的变化。图5-9:飞行器模拟测试l 结论:根据5.4.1方法反复调试,最终得到P=0.045、I=0.0001、D=1较合适。5.5整机测试通过姿态传感器获得实时姿态,遥控器获得期望姿态并通过PID控制完成姿态变化。如图如图5-10,5-11,5-12为室外飞行状态图。飞行稳定,但实际飞行中方向控制过程并不理想。PID参数还有待完善。图5-10:本实验四旋翼低高度观察图图5-11:本实验四旋翼中等高度观察图图5-12:本实验四旋翼高高度观察图l 结论:四旋翼完成了空中停留的目标,但仍不能可靠控制。第六章总结本设计运用AVR芯片和姿态传感器MPU6050完成了对飞行器姿态控制,但效果并不好。主要核心任务为姿态传感器DMP四元数到欧拉角的转换和PID控制部分。经过测试与实验的关观察,MPU6050姿态传感器能够获得稳定、准确姿态数据,可以满足飞行器姿态要求。PID控制在一定条件下可以使飞行器得到稳定控制,PID参数在没有完整数学模型的情况下需要反复调试,本实验PID参数在自然环境中并没有达到理想要求。通过实验的整个过程,对项目的流程有了一个清晰的认识,锻炼了程序健壮性编写能力,加深了对PID控制理论的理解,四旋翼飞行器的设计经验可以运用到以后工作和学习中。致谢此论文的完成受到逯鹏老师的指导与关切,提供了遇到困难时的方向与心灵帮助,逯老师的哲学性指导是本毕业设计中得到的最大收获。感谢电气工程学院陈立伟老师的帮助。同时大学四年所有老师都间接参与了本论文的实践与写作,他们在不同方向,不同力度的影响了本实验的思考与实践。感谢他们对我四年的悉心栽培。感谢Arduino项目对本试验开发带来的便利,愿他们未来能发展顺利。同时感谢父母给予我一个温暖的家,一直支持着我的选择。也感谢同学的四年陪伴。参考文献1张天光.捷联惯性导航技术(第二版).北京:国防工业出版社.2007年12月2钱学森.工程控制论(第三版).北京:科学出版社.2011年3(美)Dale Wheat.arduino技术内幕.北京:人民邮电出版社.2013年3月4陈生潭.信号与系统第二版.西安:西安电子科技大学出版社.2001年8月5MPU-6000 and MPU-6050 Product Specification Revision 3.26(美)麦克罗伯茨(McRoberts,M.)著.arduino从基础到实践.北京:电子工业出版社.2014年7月附录I器件清单:1Arduino uno开发板x12MPU6050姿态传感器x13中特威电调甲壳虫30A电调 x44朗宇2212 800kv电机x45野蝎子11.1v 2200mAH 30C锂电池x26SYprop榉木正反桨(对)x27直径500cm机架x18天地飞遥控器+接收机+电池x19充电器x1附录II程序清单:#include I2Cdev.h#include MPU6050_6Axis_MotionApps20.h #if I2CDEV_IMPLEMENTATION = I2CDEV_ARDUINO_WIRE#include Wire.h #endif#define Yaw 0#define Pitch 1#define Roll 2#define Up 3#define chanNum 4 /5#define chanRoll A0#define chanPitch A1#define chanUp A2#define chanYaw A3#define pwm1A 9#define pwm1B 10#define pwm2A 11#define pwm2B 3#define pwm1ALBase (65)#define pwm1BLBase (65)#define pwm2ABase (65)#define pwm2BBase (65)int PWM1AL = 0, PWM1BL = 0, PWM2A = 0, PWM2B = 0;int ppmInValuechanNum = 0 , 0 , 0 , 0 ;int ppmValuechanNum = 0 , 0 , 0 , 0 ;MPU6050 mpu;bool dmpReady = false;uint8_t mpuIntStatus;uint8_t devStatus;uint16_t packetSize;uint16_t fifoCount;uint8_t fifoBuffer64;Quaternion q;VectorFloat gravity;float ypr3;float u_Roll = 0;float u1_Roll = 0;float Kp_Roll = 0.045;float Ki_Roll = 0。0001;float Kd_Roll = 1.2;float ek_Roll = 0;float ek1_Roll = 0;float ek2_Roll = 0; float u_Pitch = 0;float u1_Pitch = 0;float Kp_Pitch = 0.045;float Ki_Pitch = 0.0001;float Kd_Pitch = 1.2;float ek_Pitch = 0;float ek1_Pitch = 0;float ek2_Pitch = 0;float u_Yaw = 0;float u1_Yaw = 0;float Kp_Yaw = 0;float Ki_Yaw = 0;float Kd_Yaw = 0;float ek_Yaw = 0;float ek1_Yaw = 0;float ek2_Yaw = 0;volatile bool mpuInterrupt = false;void dmpDataReady() mpuInterrupt = true;void ppmValue_Height() if(ppmInValueUp = 1800) ppmValueUp = 60; else ppmValueUp = ( ppmInValueUp - 1200 ) / 10;void ppmValue_Roll() if(ppmInValueRoll = 1800) ppmValueRoll = 10; else ppmValueRoll = ( ppmInValueRoll - 1500 ) /30;void ppmValue_Pitch() if(ppmInValuePitch = 1800) ppmValuePitch = 10; else ppmValuePitch = ( ppmInValuePitch - 1500 ) /30;void ppmValue_Yaw() if(ppmInValueYaw = 1800) ppmValueYaw = 10; else ppmValueYaw = ( ppmInValueYaw - 1500 ) /30;void ppmValue_Make() ppmValue_Height(); ppmValue_Roll(); ppmValue_Pitch(); ppmValue_Yaw();/*/void PID_Control_Roll(float sv_Roll,float fv_Roll) float pError=0,iError=0,dError=0; ek_Roll = sv_Roll - fv_Roll; pError = ek_Roll - ek1_Roll; iError = ek_Roll; dError = ek_Roll - ek1_Roll * 2 + ek2_Roll; ek2_Roll = ek1_Roll; ek1_Roll = ek_Roll; u_Roll = Kp_Roll * pError + Ki_Roll * iError + Kd_Roll * dError + u1_Roll; u1_Roll = u_Roll;void PID_Control_Pitch(float sv_Pitch,float fv_Pitch) float pError=0,iError=0,dError=0; ek_Pitch = sv_Pitch - fv_Pitch; pError = ek_Pitch - ek1_Pitch; iError = ek_Pitch; dError = ek_Pitch - ek1_Pitch * 2 + ek2_Pitch; ek2_Pitch = ek1_Pitch; ek1_Pitch = ek_Pitch; u_Pitch = Kp_Pitch * pError + Ki_Pitch * iError + Kd_Pitch * dError + u1_Pitch; u1_Pitch = u_Pitch;void PID_Control_Yaw(float sv_Yaw,float fv_Yaw) float pError=0,iError=0,dError=0; ek_Yaw = sv_Yaw - fv_Yaw; pError = ek_Yaw - ek1_Yaw; iError = ek_Yaw; dError = ek_Yaw - ek1_Yaw * 2 + ek2_Yaw; ek2_Yaw = ek1_Yaw; ek1_Yaw = ek_Yaw;

温馨提示

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

评论

0/150

提交评论