基于STM32的四旋翼飞行器设计.docx

上传人:聆听****声音 文档编号:609904 上传时间:2023-04-29 格式:DOCX 页数:30 大小:1.31MB
下载 相关 举报
基于STM32的四旋翼飞行器设计.docx_第1页
第1页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第2页
第2页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第3页
第3页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第4页
第4页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第5页
第5页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第6页
第6页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第7页
第7页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第8页
第8页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第9页
第9页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第10页
第10页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第11页
第11页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第12页
第12页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第13页
第13页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第14页
第14页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第15页
第15页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第16页
第16页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第17页
第17页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第18页
第18页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第19页
第19页 / 共30页
基于STM32的四旋翼飞行器设计.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于STM32的四旋翼飞行器设计.docx

《基于STM32的四旋翼飞行器设计.docx》由会员分享,可在线阅读,更多相关《基于STM32的四旋翼飞行器设计.docx(30页珍藏版)》请在冰点文库上搜索。

基于STM32的四旋翼飞行器设计.docx

第十一届中国研究生电子设计竞赛

基于STM32的四旋翼飞行器系统设计

第十一届中国研究生电子设计竞赛

技术论文

论文题目:

基于stm32的四旋翼飞行器设计

DesignofQuadrotorAircraftBasedonSTM32

参赛单位:

南京信息工程大学

队伍名称:

weare伐木累

指导老师:

行鸿雁

参赛队员:

张兰戴学飞钱坤

完成时间:

2016.6.18

摘要

四轴飞行器是一种结构紧凑、飞行方式独特的垂直起降式飞行器,与普通飞行器相比,具有结构简单、故障率低和单位体积能够产生更大升力等优点,所以在军事和民用多个领域都有广阔的应用前景,非常适合在狭小空间内执行任务。

本设计采用stm32f103zet6作为主控芯片,3轴加速度传感器mpu6050作为惯性测量单元,通过2.4G无线模块和遥控板进行通信,最终使用PID控制算法以PWM方式控制电子调速器驱动电机实现了四轴飞行器的设计。

关键词:

四轴飞行器,stm32;mpu6050,2.4G无线模块.PID.PWM

Abstract

Quadrocopterhasbroadapplicationprospectintheareaofmilitaryandcivilianbecauseofitsadvantagesofsimplestructure.Smallsize,lowfailurerate,takingoffandlandingertically.etc.itissuitableforhavingtaskinnarrowspace.

ThisdesignusesSTM32f103zet6asthemasterchip,andtriaxialaccelerometermpu6050inertialmeasurementunit,via2.4Gwirelessmoduleandremotecontrolpanelforcommunication.Finallyusingpidcontrolalgorithmwithpwmdrivestheelectronicspeedcontrollertochangemototorealizethedesignofquadrocopter.

Keyword:

quadrocopter,stm32,mpu6050,2.4Gwirelessmodule;pid;pwm

目录

第一章作品难点与创新 1

1.1作品难点 1

1.2创新点 1

第二章方案论证与设计 2

2.1飞控部分硬件框图 2

2.2遥控器部分硬件框图 2

2.3各部分元器件介绍 3

2.3.1stm32介绍 3

2.3.2电子调速器 4

2.3.3mpu6050六轴传感器 5

2.3.4无线通信NRF24L01 6

第三章原理分析与硬件电路图 8

3.1飞行器空气动力学分析 8

3.2飞控部分硬件电路图设计 10

3.3遥控部分硬件电路图设计 10

第四章软件设计与流程 11

4.1pid算法分析 11

4.2串级pid系数的整定 12

4.3串级pid系统框图 13

4.3.1飞控部分程序设计 14

4.3.2遥控部分程序设计 14

第五章系统测试与误差分析 15

第六章总结 19

参考文献 21

25

第一章作品难点与创新

1.1作品难点

对于一种芯片,最麻烦的就是底层的驱动了,很多驱动得自己编写,为了最大发挥处理器的性能,做了很多驱动优化,将不必要的延时降到最低,比如I2C总线驱动,官方的代码不符合自己的要求,通信效率低,我们花了几天的时间去优化这个驱动,使用了模拟的IIC接口,最后在保证稳定性的前提下,速度提高了一倍。

这个设计遇到的最大问题就是怎样保持飞行器的平衡。

开始的时候,我们以为很简单,不就是简单的闭环控制么,随着深入研究和实验,发现有些东西已经不能用我现有的知识来解答了,比如姿态的解算。

我想姿态解算也是这个项目的难点,怎样时时刻刻都准确的跟踪到飞行器的姿态。

很多人都知道使用加速度和陀螺仪检测物体的姿态,很多手机就有这些传感器,但是这两传感器在飞行器上貌似水土不服,陀螺仪随时间推移漂移了,加速度计由于电机的高速运转震动基本上处于半瞎状态。

所以我们使用了串级pid算法,并且优化了串级pid算法,使得在只用一个mpu6050的情况下,可以实现稳定的飞行,并且在飞行20层楼层的高度时可以飞出定高的效果。

调试过程中,采用无线通信芯片nrf24l01和stm32单片机作为控制端,同时用匿名四轴上位机显示状态。

1.2创新点

设计的创新点有两个,一是在于遥控器的控制方面,传统的飞行器控制飞行在于通过遥杆控制,通过对遥杆的物理操作实现飞机的左右前后飞行,我们则采用感应式姿态控制,通过遥控器上板载的mpu6050,去跟踪手的姿势,然后将手的物理动作对应到相应的角度,发送给飞控部分,飞控部分将接受到的信号作为期望的角度,实现飞行器的左右前后飞行。

本次设计的第二个创新点在于优化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作为主要芯片,nrf24l01f负责和飞控部分无线通信,遥杆主要控制油门大小,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封装。

图2-3

2.3.2电子调速器

电调全称电子调速器,英文ElectronicSpeedControl,简称ESC。

针对电机不同,可分为有刷电调和无刷电调。

它根据控制信号调节电动机的转速。

本文采用好盈电调20A。

对于它们的连接,一般情况下是这样的:

1、电调的输入线与电池连接;

2、电调的输出线(有刷两根、无刷三根)与电机连接;

3、电调的信号线与接收机连接;

另外,电调一般有电源输出功能,即在信号线的正负极之间,有5V左右的电压输出,通过信号线为接收机供电,接收机再为舵机等控制设备供电。

电调的输出为三~四个舵机供电是没问题的。

因此,电动的飞机,一般都不需要单独为接收机供电,除非舵机很多或对接收机电源有很高的要求。

2.3.3mpu6050六轴传感器

MPU6050是InvenSense公司推出的全球首款整合性6轴运动处理组件,内带3轴陀螺仪和3轴加速度传感器,并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(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总线与主控板通信。

图2-4

2.3.4无线通信NRF24L01

NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK调制,集成NORDIC自家的EnhancedShortBurst协议。

可以实现点对点或是1对6的无线通信。

无线通信速度最高可达到2Mbps。

NRF24L01采用SPI通信,可以很方便的连接到MCU上面。

①2.4G全球开放的ISM频段,免许可证使用。

②最高工作速率2Mbps,高校的GFSK调制,抗干扰能力强。

③126个可选的频道,满足多点通信和调频通信的需要。

④内置CRC检错和点对多点的通信地址控制。

⑤可设置自动应答,确保数据可靠传输。

NRF24L01模块介绍

图2-5

CE:

模式控制线。

在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中,由于结构对称,所以倾向飞行的工作原理与前后运动完全一样。

3.2飞控部分硬件电路图设计

图3-3

3.3遥控部分硬件电路图设计

图3-4

第四章软件设计与流程

4.1pid算法分析

PID控制器(比例-积分-微分控制器)是一个在工业控制应用中常见的反馈回路部件,由比例单元P、积分单元I和微分单元D组成。

PID控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性系统响应速度以及减弱超调趋势。

PID(比例(proportion)、积分(integral)、导数(derivative))控制器作为最早实用化的控制器已有近百年历史,现在仍然是应用最广泛的工业控制器。

PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。

PID控制器的数学模型:

输入量为r(t);

输出量为y(t);

偏差量为e(t)=r(t)-y(t);

PID算法的定义:

(1)

其流程框图如图4-1。

图4-1

PID算法公式适用于连续系统,因此单片机控制系统不能够直接使用,因此在此基础上使用离散的控制模型,也叫0阶保持器的离散系统,将上式离散化,需要使用后向差分法。

首先将上式的积分传递函数转化为连续的S域模型:

(2)

使用后向差分法可以得到s域到z域的映射关系:

(3)

于是可以得到:

(4)

其中:

因此得到离散的PID表达式:

(5)

在编程时,可写成:

(6)

P-----改变P可提高响应速度,减小静态误差,但太大会增大超调量和稳定

时间。

I-----与P的作用基本相似,但要使静态误差为0,必须使用积分。

D-----与P,I的作用相反,主要是为了减小超调,减小稳定时间。

e(n)--------------------------本次误差。

e(n)+e(n-1)+...+e(0)------所有误差之和。

e(n)-e(n-1)------------------控制器输出与输入误差信号的微分(即误差的变化率),具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。

因此,可以改善系统的动态性能。

在微分时间选择合适情况下,可以减少超调,减少调节时间。

微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。

4.2串级pid系数的整定

内环P:

从小到大,拉动四轴越来越困难,越来越感觉到四轴在抵抗你的拉动;到比较大的数值时,四轴自己会高频震动,肉眼可见,此时拉扯它,它会快速的振荡几下,过几秒钟后稳定;继续增大,不用加人为干扰,自己发散翻机。

特别注意:

只有内环P的时候,四轴会缓慢的往一个方向下掉,这属于正常现象。

这就是系统角速度静差。

内环I:

PID原理可以看出,积分只是用来消除静差,因此积分项系数个人觉得没必要弄的很大,因为这样做会降低系统稳定性。

从小到大,四轴会定在一个位置不动,不再往下掉;继续增加I的值,四轴会不稳定,拉扯一下会自己发散。

特别注意:

增加I的值,四轴的定角度能力很强,拉动他比较困难,似乎像是在钉钉子一样,但是一旦有强干扰,它就会发散。

这是由于积分项太大,拉动一下积分速度快,给的补偿非常大,因此很难拉动,给人一种很稳定的错觉。

内环D:

这里的微分项D为标准的PID原理下的微分项,即本次误差上次误差。

在角速度环中的微分就是角加速度,原本四轴的震动就比较强烈,引起陀螺的值变化较大,此时做微分就更容易引入噪声。

因此一般在这里可以适当做一些滑动滤波或者IIR滤波。

从小到大,飞机的性能没有多大改变,只是回中的时候更加平稳;继续增加D的值,可以肉眼看到四轴在平衡位置高频震动(或者听到电机发出滋滋的声音)。

D项属于辅助性项,因此如果机架的震动较大,D项可以忽略不加。

外环P:

当内环PID全部整定完成后,飞机已经可以稳定在某一位置而不动了。

此时内环P,从小到大,可以明显看到飞机从倾斜位置慢慢回中,用手拉扯它然后放手,它会慢速回中,达到平衡位置;继续增大P的值,用遥控器给不同的角度给定,可以看到飞机跟踪的速度和响应越来越快;继续增加P的值,飞机变得十分敏感,机动性能越来越强,有发散的趋势。

4.3串级pid系统框图

图4-2

4.3软件设计流程图

4.3.1飞控部分程序设计

图4-3

4.3.2遥控部分程序设计

图4-4

第五章系统测试与误差分析

5.1PID调试一般原则 

· 1)在输出不振荡时,增大比例增益P 

· 2)在输出不振荡时(能消除静态误差就行),减小积分时间常数Ti

3)在输出不振荡时,增大微分时间常数Td 

5.2matlab仿真模拟测试pid参数

图5-1

纯P调节(Kp大,稳态误差小,响应快,但超调大)

PI调节(TI小,响应速度快,超调大,系统震荡加剧)

PI调节(在同样积分常数Ti下,减小比例增益Kp可减小 

超调,增加系统的稳定性)

PD调节(引入微分项,提高了响应速度,增加了系统的稳定性但不能消除系统的余差)

PD调节(微分时间越大,微分作用越强,响应速度越快,系统越稳定)

PID调节(PD基础上I作用的引入消除了余差,达到了理想的多项性能指标要

求:

超调、上升时间、调节时间、余差等) 

5.3心得

在整定PID参数时,PID三个参数的大小都不是绝对的,而是相对的。

也就是说,如果发现一个参数比较合适,就把这个参数固定死,不管别的参数怎么变化,永远不动前 面固定的参数。

这是要不得的。

串级调节系统,在整定参数时,一般把主、副调隔离开来,先整定一个回路,再全面考虑。

一般而言,先整定内回路。

把PID参数隔离开来,先去掉积分、微分作 用,让系统变为纯比例调节方式,再考虑积分,最后考虑微。

第六章总结

首先,为了让四轴平稳的悬停或飞行在半空中,四个电机必须提供准确的力矩->假设力矩与电机PWM输出呈线性关系,也就是必须提供准确的4路PWM->4路PWM由遥控器输入(期望角度)、PID算法及其参数和姿态解算输出(当前角度)组成,假设遥控器输入不变(类似脱控)、PID算法及其参数也较为准确(PID参数无需十分精确,但只要在某个合理的范围内,控制品质差不了多少),也就是姿态解算的输出必须是十分准确的,可以真实反应飞行器的实际角度->姿态解算的结果由加速度计和陀螺仪给出,根据前述惯性导航的描述,加速度计补偿陀螺仪,因此要得到精确的姿态解算结果,务必要求加速度输出精确的重力加速度g->这里仅讨论悬停飞行,因此忽略掉额外的线性加速度(事实证明,在四轴强机动飞行过程中,线性加速度必须要考虑并消除),假设加速度计输出重力加速度g,这个重力加速度g必须十分“精确”。

 

 总结一下:

精准力矩->精准PWM->精准姿态->加速度计输出“精确”重力加速度g。

这里的“精确”打了引号,意思不是说加速度的性能十分好,要输出精确的当地加速度g,而是说它能够准确反应机架的角度。

为了达到悬停、平稳的飞行效果,控制算法输出的PWM会让加速度计输出的重力加速度g在XOY平面内的分量就可能少,也就是说:

PID控制算法控制的不是机架水平,而是加速度计水平,PID不知道机架是什么东西,它只认加速度计,它的使命就是让加速度计水

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2