基于STM32的四旋翼飞行器设计_第1页
基于STM32的四旋翼飞行器设计_第2页
基于STM32的四旋翼飞行器设计_第3页
基于STM32的四旋翼飞行器设计_第4页
基于STM32的四旋翼飞行器设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

第十一届中国研究生电子设计竞赛技术论文论文题目:基于stm32的四旋翼飞行器设计DesignofQuadrotorAircraftBasedonSTM32参赛单位:南京信息工程大学队伍名称:weare伐木累指导老师:行鸿雁参赛队员:张兰戴学飞钱坤完成时间:2016.6.18四轴飞行器是一种结构紧凑、飞行方式独特的垂直起降式飞行器,与普通飞行器相比,具有结构简单、故障率低和单位体积能够产生更大升力等优点,所以在军事和民用多个领域都有广阔的应用前景,非常适合在狭小空间内执行任务。本设计采用stm32f103zet6作为主控芯片,3轴加速度传感器mpu6050作为惯性测量单元,通过2.4G无线模块和遥控板进行通信,最终使用PID控制算法以PWM方式控制电子调速器驱动电机实现了四轴飞行器的设计。关键词:四轴飞行器,stm32;mpu6050,2.4G无线模块.PID.PWMAbstractQuadrocopterhasbroadapplicationprospectintheareaofmilitaryandcivilianbecauseofitsadvantagesofsimplestructure.Smallsize,lowfailurerate,takingoffandlandingertically.etc.itissuitableforhavingtaskinnarrowspace.ThisdesignusesSTM32f103zet6asthemasterchip,andtriaxialaccelerometermpu6050inertialmeasurementunit,via2.4Gwirelessmoduleandremotecontrolpanelforcommunication.Finallyusingpidcontrolalgorithmwithpwmdrivestheelectronicspeedcontrollertochangemototorealizethedesignofquadrocopter.Keyword:quadrocopter,stm32,mpu6050,2.4Gwirelessmodule;pid;pwm目录TOC\o"1-5"\h\z\o"CurrentDocument"第一章作品难点与创新 1\o"CurrentDocument"作品难点 1\o"CurrentDocument"创新点 1\o"CurrentDocument"第二章方案论证与设计 2\o"CurrentDocument"飞控部分硬件框图 2\o"CurrentDocument"遥控器部分硬件框图 2\o"CurrentDocument"各部分元器件介绍 3stm32介绍 3.2电子调速器 4mpu6050六轴传感器 5无线通信NRF24L01 6\o"CurrentDocument"第三章原理分析与硬件电路图 8\o"CurrentDocument"飞行器空气动力学分析 8\o"CurrentDocument"飞控部分硬件电路图设计 10\o"CurrentDocument"遥控部分硬件电路图设计 10\o"CurrentDocument"第四章软件设计与流程 11\o"CurrentDocument"pid算法分析 11\o"CurrentDocument"串级pid系数的整定 12\o"CurrentDocument"串级pid系统框图 13飞控部分程序设计 14遥控部分程序设计 14\o"CurrentDocument"第五章系统测试与误差分析 15\o"CurrentDocument"第六章总结 19\o"CurrentDocument"参考文献 21第一章作品难点与创新作品难点对于一种芯片,最麻烦的就是底层的驱动了,很多驱动得自己编写,为了最大发挥处理器的性能,做了很多驱动优化,将不必要的延时降到最低,比如I2C总线驱动,官方的代码不符合自己的要求,通信效率低,我们花了几天的时间去优化这个驱动,使用了模拟的IIC接口,最后在保证稳定性的前提下,速度提高了一倍。这个设计遇到的最大问题就是怎样保持飞行器的平衡。开始的时候,我们以为很简单,不就是简单的闭环控制么,随着深入研究和实验,发现有些东西已经不能用我现有的知识来解答了,比如姿态的解算。我想姿态解算也是这个项目的难点,怎样时时刻刻都准确的跟踪到飞行器的姿态。很多人都知道使用加速度和陀螺仪检测物体的姿态,很多手机就有这些传感器,但是这两传感器在飞行器上貌似水土不服,陀螺仪随时间推移漂移了,加速度计由于电机的高速运转震动基本上处于半瞎状态。所以我们使用了串级pid算法,并且优化了串级pid算法,使得在只用一个mpu6050的情况下,可以实现稳定的飞行,并且在飞行20层楼层的高度时可以飞出定高的效果。调试过程中,采用无线通信芯片nrf24l01和stm32单片机作为控制端,同时用匿名四轴上位机显示状态。创新点设计的创新点有两个,一是在于遥控器的控制方面,传统的飞行器控制飞行在于通过遥杆控制,通过对遥杆的物理操作实现飞机的左右前后飞行,我们则采用感应式姿态控制,通过遥控器上板载的山口口6050,去跟踪手的姿势,然后将手的物理动作对应到相应的角度,发送给飞控部分,飞控部分将接受到的信号作为期望的角度,实现飞行器的左右前后飞行。本次设计的第二个创新点在于优化pid算法,单纯的pid算法是不足以控制动力如此大的大四轴,再加上只有一个六轴传感器mpu6050是不足以控制好大四轴的,通常市面上的飞行器姿态测量这方面会用到多个传感器,以实现飞行器姿态的跟踪。但是我们只用了一个六轴传感器mpu6050就可以做到非常稳定的飞行,主要原因在于对算法的优化。第二章方案论证与设计本次设计选择的材料如下:主控芯片:STM32F103ZET6无线通信:NRF24L01传感器:MPU6050六轴传感器遥控主芯片:STM32F407ZGT6机架的型号:F450,重量282克。电机轴距450mm,螺旋桨采用1045型。电机则采用银燕MT-2216,810KV无刷电机,最高转速2极马达210000转/分钟,重量:37g。电调为好盈20A电子调速器,持续电流30A,短时电流40A。电池则采用了2200mah锂电池。2.1飞控部分硬件框图图2-1从图中可以看出,STM32是电路的核心,它受5V电源控制,它负责和mpu6050,nrf24l01进行通信,处理数据,输出pwm信号给电子调速器,以得到控制电机的转速,实现飞行姿态的调整。2.2遥控器部分硬件框图图2-2遥控部分STM32F407ZGT6作为主要芯片,nrf24101f负责和飞控部分无线通信,遥杆主要控制油门大小,mpu6050负责跟踪手的姿势。2.3各部分元器件介绍本次设计主要的工作在于程序的编写,所以就需要对所需要的主芯片和各个模块有一个详细的了解,接下来给大家介绍下我们所用的芯片口和模块介绍。2.3.1stm32介绍内核:ARM32位的Cortex-M3,最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHZ(DhrystONe2.1)单周期乘法和硬件除法。存储器:从32K到512K字节的闪存程序存储器(STM32F103XXXX中的第二个X表示FLASH容量,其中:“4”=16K,“6”=32K,“8”=64K,B=128K,C=256K,D=384K,E=512K),最大64K字节的SRAM。电源管理:2.0-3.6V供电和I/O引脚,上电/断电复位(POR/PDR)、可编程电压监测器(PVD),4-16MHZ晶振振荡器,内嵌经出厂调教的8MHz的RC振荡器,内嵌带校准的40KHz的RC振荡器,产生CPU时钟的PLL,带校准的32KHz的RC振荡器低功耗:睡眠、停机和待机模式,Vbat为RTC和后备寄存器供电。模数转换器:2个12位模数转换器,1us转换时间(多达16个输入通道),转换范围:0至3.6V,双采样和保持功能,温度传感器。

DMA:2个DMA控制器,共12个DMA通道:DMA1有7个通道,DMA2有5个通道。支持的外设:定时器、ADC、SPI、USB、IIC和UART,多达112个快速I/O端口(仅Z系列有超过100个引脚),26/37/51/80/112个I/O口,所有I/O口一块映像到16个外部中断;几乎所有的端口均可容忍5V信号。调试模式:串行单线调试(SWD)和JTAG接口,多达8个定时器,3个16位定时器,每个定时器有多达4个用于输入捕获/输出比较/PWM或脉冲计数的通道和增量编码器输入,1个16位带死区控制和紧急刹车,用于电机控制的PWM高级控制定时器,2个看门狗定时器(独立的和窗口型的),系统时间定时器:24位自减型计数器。多达9个通信接口:2个I2C接口(支持SMBus/PMBus),3个USART接口(支持ISO7816接口,LIN,IrDA接口和调制解调控制),2个SPI接口(18M位/秒),CAN接口(2.0B主动),USB2.0全速接口。计算单元:CRC计算单元,96位的新批唯一代码。封装:ECOPACK封装。BOOTOOSC1N/PLX)n机「OUTYPniPAiGPAHPAi2FAB/JTNtS.^WDIOBOOTOOSC1N/PLX)n机「OUTYPniPAiGPAHPAi2FAB/JTNtS.^WDIOPA]4.-JTCK..JS\VCLKPAi5/JTDINRSTV13ATVDD1VDD-2VDD23VDDAPWM广WN12PWM4VSSVSS'2VSS二3VSSAPCB-lAMPER-KrCPC14OSC32INVSSVSS'2VSS二3VSSAPCB-lAMPER-KrCPC14OSC32INPCI5-OSC5:OUTIaIRQ内包众T2.3.2电子调速器电调全称电子调速器,英文ElectronicSpeedControl,简称ESC。针对电机不同,可分为有刷电调和无刷电调。它根据控制信号调节电动机的转速。本文采用好盈电调20A。对于它们的连接,一般情况下是这样的:1、电调的输入线与电池连接;2、电调的输出线(有刷两根、无刷三根)与电机连接;3、电调的信号线与接收机连接;另外,电调一般有电源输出功能,即在信号线的正负极之间,有5丫左右的电压输出,通过信号线为接收机供电,接收机再为舵机等控制设备供电。电调的输出为三〜四个舵机供电是没问题的。因此,电动的飞机,一般都不需要单独为接收机供电,除非舵机很多或对接收机电源有很高的要求。mpu6050六轴传感器MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二1式接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP:DigitalMotionProcessor)硬件加速引擎,通过主IIC接口,可以向应用端输出完整的9轴姿态融合演算数据。有了DMP,我们可以使用InvenSense公司提供的运动处理资料库,非常方便的实现姿态解算,降低了运动处理运算对操作系统的负荷,同时大大降低了开发难度。DMP是InvenSense公司的MPU器件独特的硬件功能,它能够直接从传感器读出计算好的四元数的数据,获取设备的姿态。DMP功能保存在主处理机的易失性内存中,若需要使用DMP功能,则每次芯片上电后都需要初始化。DMP程序库项目中提供的示例应用程序中给出了更新映像和初始化DMP功能的一系列步骤。加载并启用DMP功能的步骤包括:(1)通过函数dmp_load_motion_driver_firmware()把DMP载入MPU内存。(2)通过dmp_set_orientation()函数更新定位矩(3)当DMP检测到运动或撞击时会触发DMP回调功能。(4)通过函数dmp_enable_feature()启用DMP功能。四旋翼飞行器运用姿态解算计算出空间三轴欧拉角。MPU6050与MCU连接方式如图2-4所示,陀螺仪采样三轴角速度值,加速度传感器采样三轴加速度值,而磁力传感器采样得到三轴地磁场值,将陀螺仪、加速度传感器、磁力传感器采样后的数据进行标定、滤波、校正后得到三轴欧拉角度,其中陀螺仪和加速度传感器选用MPU6050芯片,采用IIC总线与主控板通信。

MPU6050位ape伯400kHzI2CMPU6050位ape伯400kHzI2C图2-4无线通信NRF24L01NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK调制,集成NORDIC自家的EnhancedShortBurst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。NRF24L01采用SPI通信,可以很方便的连接到MCU上面。①2.4G全球开放的ISM频段,免许可证使用。②最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。③126个可选的频道,满足多点通信和调频通信的需要。④内置CRC检错和点对多点的通信地址控制。⑤可设置自动应答,确保数据可靠传输。NRF24L01模块介绍图2-5CE:模式控制线。在CSN为低的情况下,CE协同CONFIG寄存器共同决定NRF24L01的状态(参照NRF24L01的状态机)CSN:SPI片选线SCK:SPI时钟线MOSI:SPI数据线(主机输出,从机输入)MISO:SPI数据线(主机输入,从机输出)IRQ:中断信号线。中断时变为低电平,在以下三种情况变低:TxFIFO发完并且收到ACK(使能ACK情况下)、RxFIFO收到数据、达到最大重发次数。第三章原理分析与硬件电路图3.1飞行器空气动力学分析四旋翼对称分布在机体的前后、左右四个方向,四个旋翼处于同一高度平面,且四个旋翼的结构和半径都相同,四个电机对称的安装在飞行器的支架端,支架中间空间安放飞行控制计算机和外部设备。结构形式如图3.1所示。图3-1四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置。四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统。四旋翼飞行器的电机1和电机3逆时针旋转的同时,电机2和电机4顺时针旋转,因此当飞行器平衡飞行时,陀螺效应和空气动力扭矩效应均被抵消。图3-2在图3-2中,电机1和电机3作逆时针旋转,电机2和电机4作顺时针旋转,规定沿x轴正方向运动称为向前运动,箭头在旋翼的运动平面上方表示此电机转速提高,在下方表示此电机转速下降。垂直运动:同时增加四个电机的输出功率,旋翼转速增加使得总的拉力增大,当总拉力足以克服整机的重量时,四旋翼飞行器便离地垂直上升;反之,同时减小四个电机的输出功率,四旋翼飞行器则垂直下降。俯仰运动:在图(b)中,电机1的转速上升,电机3的转速下降(改变量大小应相等),电机2、电机4的转速保持不变。由于旋翼1的升力上升,旋翼3的升力下降,产生的不平衡力矩使机身绕y轴旋转,同理,当电机1的转速下降,电机3的转速上升,机身便绕y轴向另一个方向旋转,实现飞行器的俯仰运动。(3)滚转运动:与图b的原理相同,在图c中,改变电机2和电机4的转速,保持电机1和电机3的转速不变,则可使机身绕x轴旋转(正向和反向),实现飞行器的滚转运动。(4)偏航运动:旋翼转动过程中由于空气阻力作用会形成与转动方向相反的反扭矩,为了克服反扭矩影响,可使四个旋翼中的两个正转,两个反转,且对角线上的各个旋翼转动方向相同。当电机2和电机4的转速下降时,机身便在富余反扭矩的作用下绕z轴转动,实现飞行器的偏航运动。(5)前后运动:要想实现飞行器在水平面内前后、左右的运动,必须在水平面内对飞行器施加一定的力。在图e中,增加电机3转速,使拉力增大,相应减小电机1转速,使拉力减小,同时保持其它两个电机转速不变,反扭矩仍然要保持平衡。飞行器首先发生一定程度的倾斜,从而使旋翼拉力产生水平分量,因此可以实现飞行器的前飞运动。(6)倾向运动:在图f中,由于结构对称,所以倾向飞行的工作原理与前后运动完全一样。图图#-44.3.1飞控部分程序设计MPU605O外工大用理回口内环地速吃PI口PWM亩出DMVjj性:|1前姿上fla废NFW4L01强%来门遥押也分期盟一度初始化MRF24U01WPU6050.OMP??□flfij'ErtCPEKUC2丸门图4-34.3.2遥控部分程序设计第五章系统测试与误差分析PID调试一般原则1)在输出不振荡时,增大比例增益P2)在输出不振荡时(能消除静态误差就行),减小积分时间常数Ti3)在输出不振荡时,增大微分时间常数Tdmatlab仿真模拟测试pid参数B10

B10PI调节(TI小,响应速度快,超调大,系统震荡加剧)Kp=Q7,Ti=r5PIKp=Q7,Ti=r5PI调节(在同样积分常数Ti下,减小比例增益Kp可减小广g7.Ti=O5超调,增加系统的稳定性)7 ■ .7,Td=CL3PD调节(引入微分项,提高了响应速度,增加了系统的稳定性但不能消除系统的余差)

PID调节(PD基础上I作用的引入消除了余差,达到了理想的多项性能指标要求:超调、上升时间、调节时间、余差等)心得在整定PID参数时,PIDm个参数的大小都不是绝对的,而是相对的。也就是说,如果发现一个参数比较合适,就把这个参数固定死,不管别的参数怎么变化,永远不动前面固定的参数。这是要不得的。串级调节系统,在整定参数时,一般把主、副调隔离开来,先整定一个回路,再全面考虑。一般而言,先整定内回路。把PID参数隔离开来,先去掉积分、微分作用,让系统变为纯比例调节方式,再考虑积分,最后考虑微。图图6-1第六章总结首先,为了让四轴平稳的悬停或飞行在半空中,四个电机必须提供准确的力矩->假设力矩与电机PWM输出呈线性关系,也就是必须提供准确的4路PWM->4路PWM由遥控器输入(期望角度)、PID算法及其参数和姿态解算输出(当前角度)组成,假设遥控器输入不变(类似脱控)、PID算法及其参数也较为准确(PID参数无需十分精确,但只要在某个合理的范围内,控制品质差不了多少),也就是姿态解算的输出必须是十分准确的,可以真实反应飞行器的实际角度->姿态解算的结果由加速度计和陀螺仪给出,根据前述惯性导航的描述,加速度计补偿陀螺仪,因此要得到精确的姿态解算结果,务必要求加速度输出精确的重力加速度g->这里仅讨论悬停飞行,因此忽略掉额外的线性加速度(事实证明,在四轴强机动飞行过程中,线性加速度必须要考虑并消除),假设加速度计输出重力加速度g,这个重力加速度g必须十分“精确”。总结一下:精准力矩->精准PWM->精准姿态->加速度计输出“精确”重力加速度g。这里的“精确”打了引号,意思不是说加速度的性能十分好,要输出精确的当地加速度g,而是说它能够准确反应机架的角度。为了达到悬停、平稳的飞行效果,控制算法输出的PWM会让加速度计输出的重力加速度g在XOY平面内的分量就可能少,也就是说:PID控制算法控制的不是机架水平,而是加速度计水平,PID不知道机架是什么东西,它只认加速度计,它的使命就是让加速度计水平。我现在假设加速度计与机架存在某个角度,比如右倾30°,四轴主视图如图6-1所示。四轴机架水平面X速度计起飞后水平面四轴移动方向四轴机架水平面X速度计起飞后水平面四轴移动方向加速度计加速度计(红线)与四轴机架的水平面(虚线)呈30°。起飞后,PID控制算法会尝试将加速度计调整至水平位置,因此四轴就会往图中左边飘,倾斜角度也为30°这就是为什么飞机无法垂直起飞,或者飞行过程中往一个方向飘的原因:加速度计和机架没有水平。因此在加速度计的机械安装时,尽量保证加速度计与机架水平。如果有些朋友已经将加速度计固定在飞控板上,可以通过遥控器的通道微调功能设置悬停时的期望角度,软件上校正这种机械不水平。除了上述讨论的加速度计安装水平问

温馨提示

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

评论

0/150

提交评论