基于单片机微型四旋翼飞行器设计毕业论文设计(3)

2019-03-22 13:15

块,采用SPI通信协议实现与控制芯片的信息交换。其原理图如图4.5所示。

4.2 驱动程序功能及设计

硬件设备需要软件驱动才能拥有“灵魂”,本部分将附上各个模块的初始化函数库,因为论文篇幅有限,STM32的函数库,读者可以在工程中找到,笔者只给出调用的函数名。

4.2.1 最小系统板初始化

最小系统板配置包括库函数引导,锁相环时钟配置,GPIO配置等,详细的参数配置详见程序注释。RCC配置如图4.6所示。

4.2.2 MPU6050初始化

MPU6050采用IIC通信协议通信,其配置流程如图4.7所示。 三部分的程序比较多,详细配置可查阅附录代码。

4.2.3 NRF24L01初始化

NRF24L01模块采用的是SPI通信协议,SPI和IIC都是基于串行数据总线通信的协议,配置起来有许多相似的地方。配置函数如图4.8所示。NRF24L01实现遥控按键值与微控制器的指令交换,所有的控制命令和控制参数都可以通过NRF24L01来传递。选择NRF是因为该模块通信距离远,通信速率快且频段在2.4GHz。在市面上已经相当成熟。价格也不高。

4.2.4 空心杯电机驱动初始化

空心杯电机的转速通过调节PWM的占空比来实现,设定的频率为10K,100%占空比输出值为2000,采用定时器2作为PWM时钟,四旋翼飞行器一共用到4路PWM分别驱动4个空心杯电机。选择PWM频率根据电机的特性来觉得,10K是一个理想的频率值,在此频率下,电机线性度良好,振动及噪声也相对要小很多。详细的PWM配置见图4.9。

四旋翼飞行器最终的PCB图如图4.10所示,实拍图如图4.11所示。

5 四旋翼飞行器控制算法实现

控制算法单独设成一章,足见控制算法的重要性,控制算法是一个机器的灵魂,本章将探讨四旋翼飞行器的控制算法。

5.1角度及角速度数据处理算法

MPU6050通过IIC传输回来的数据需要由字符型转换位short型,应用STM32F103微控制器的一个好处是从short型到float型无需强制装换,芯片内部自行转换。认识到采集回来的数据类型是字符型,在数据处理时能少走许多弯路,详细问题解决笔者将在调试篇讲到。

5.1.1 互补滤波器可行性分析

IIC采集回来的倾角数据是有噪声的,如图5.1所示。在应用之前需要进行数字滤波。数字滤波器有很多种,因为熟悉互补滤波器,笔者在本设计中采用了互补滤波器来进行数字滤波。互补滤波的原理框图如图5.2所示。

有互补滤波器的原理图,可以得出如(2)式所示的互补滤波器的数学模型,将互补滤波器拆分成两部分,加号左边构成高通滤波器,右边构成低通滤波器。可以从陀螺仪和加速度计的物理特性来理解。

陀螺仪反映的是角速度,高频运动它的反应更灵敏而低频情况下,陀螺仪几乎没有值输出,这样的特性确定陀螺仪可以用作高通滤波器。

同理,加速度计在低频运动时输出最灵敏而到高频时输出灵敏度降低,具有低通滤波器的特性,故可以将加速度计视为低通滤波器。

由此将两者特性结合起来应用,可以满足滤除四旋翼飞行器倾角信号噪声的缺点,还原飞行器真实的角度。由此论证互补滤波器在理论上是可行的。

5.1.2 互补滤波器算法软件实现

由互补滤波器原理框图,可以得出得到如图5.3所示的算法。在程序中已经做了详细的注释,此处不再重复。参数整定将在调试部分讲解。

5.2姿态控制算法

四旋翼飞行器要稳定悬空飞行,需要稳定的控制算法。笔者在本设计中采用经典的PID控制算法来完成飞行器的姿态控制。

5.2.1 PID控制算法可行性分析

PID控制算法是比例、积分、微分、的第一个字母的大写构成的算法,分为位置式PID和增量式PID。在自动控制理论课中证明过PID控制的诸多优点,笔者选择PID除了能从书本上的证明论证可行性之外,还从飞行器自身的特性来考虑。由于论文篇幅有限,

此时不再引申课本上论述PID可行性的例子而是通过笔者自身的理解来论证可行性。

首先,四旋翼飞行器通过互补滤波得到一个较真实的角度值,同时,还有在每个方向上都具有一个角速度值,从实验的波形可以发现,陀螺仪输出的角速度是超前于角加速度的;其次,联系PID中的D,微分也具有一个超前预测变化趋势的作用,由此笔者想到了应用陀螺仪的值乘以一个系数Kd得到PID中的D。

然后,角度值与机体的角度看似呈线性变化的,联系PID中的比例分量,两者用着共同的物理意义,由此可以将角度值乘以一个Kp得到比例分量。

最后是积分分量,是否加积分量需要看前面的PD控制是否能满足四旋翼飞行器的自平衡,如果PD调节达到上限,系统还有静态偏差时,则加入积分加以修正。

在数学建模中常用类比的思想,总结出模型共同的物理特性,用已知的数学模型来替代未知的模型,再结合实际调试,总有得到真理的时候。最后的结论是:PID可以满足四旋翼飞行器的平衡控制。

5.2.2 PID控制算法软件实现

如(3)式所示,PID控制器的微分方程,为了方便编程,需要将微分方程转化成如(4)式所示的位置式PID或(5)式所示的增量式PID。本系统应用的是PID模型是根据硬件特性类比PID算法得出的控制算法,在编程上有一定的共同之处。 目前程序中只用到了PID,其框图如图5.4所示。

通过上述互补滤波得出的角度值与外部给定的角度值作差,得到偏差角度乘上比例系数nP加上nD乘以陀螺仪测回的角速度值,得到空心杯电机的PWM值。其编程语句如图5.5所示。

5.2.3 多维度控制量输出融合算法

四旋翼飞行器坐标系如图5.6所示,如果将X-Y轴的控制量输出进行分解,每个电机将得到两个轴的PWM。分解成X-Y轴后在程序中分开处理XY轴,解析出控制量后,最进行输出量融合。这样的方式能使四旋翼飞行器在XY平面内360°的倾角都有电机输出响应。

多维度角度融合算法软件实现如图5.7所示。 CCR1_Val是PWM设定寄存器,通过改变其大小,可以改变电机的转速。每个电机在XY坐标系能分别得到Speed_Out_x_x的控制分量,相关的输出值符号,需要注意,调试部分将在第六章讲到。

在所有的角度控制子程序中,所有的变量都是float型在,其它的子程序用到的变量声明可在附录A部分代码中查阅,此处不再重复说明。

本章介绍了互补滤波器的原理及可行性分析并根据笔者的理解,分享了对PID的算法的应用心得,最后介绍了多维度控制量输出算法的原理及软件实现。其中讲到相似数学模型类比的思想,在PD控制器中,可以将P理解成提供拉力的弹簧器,而D可以理解成提

供阻力的阻尼器,在调节飞行器姿态时,P过大会振荡,过小则反应滞后,如何找到一个合适的参数,需要一个漫长的调试过程。

6 四旋翼飞行器综合调试

6.1基本功能实现

基本功能是飞行器飞行的基础,如果调试不好,飞行器后续的飞行动作将很难实现,本部分将介绍姿态角度数据采集、飞行器遥控调试、空心杯电机多维度矢量输出的调试心得。

6.1.1 姿态角度数据采集功能

MPU6050通过IIC协议读写数据,该芯片能提供9自由度的输出量,在飞行器中,只用到了XYZ三轴的6自由度输出量。读取MPU6050需要先对芯片控制寄存器写入控制字,设定工作模式后,才能从存储相应轴数据的寄存器读取测量值。初始化及读取数据的函数如图6.1所示。

数据读取子程序Short getdata(uint8_t Addr)在刚开始编程时定义函数数据类型为:uint16 getdata(uint8_t Addr) ,多走了不少弯路,按照常理来看,这样定义似乎没有问题,但是这样定义的数据类型采集回来的数据转换成浮点型后,通过虚拟示波器看,是一个跳跃的量,当数值达到上限,数据从正最大值跳变到负的最大值。查阅了相关资料,发现在STM32系列芯片中,数据转换不需加强制转换符且字符型转换成short型后,可以向更高一级的数据类型转换运算。经过一番艰苦的专研后,完美的数据被采集回来如图6.2所示。 图中,方形的波形是加速度计的波形,尖波波形的是陀螺仪的波形。

6.1.2 四旋翼飞行器遥控功能

NRF24L01与控制器应用SPI协议进行通讯,初始化程序及通讯的相关子程序比较多,故附在附录A部分代码中,本部分主要讲调试的过程中遇到的问题及解决方案。

在调试无线通信过程中,笔者遇到的问题是空心杯电机带桨叶中速运行后,无线模块完全接收不到外部给的任何信息,而电机不转或者不带桨叶的情况下,通信正常,速度也不受影响。

提出假设并实验验证,排查结果如下:

(1)最小系统板设计电磁兼容性差,高频信号影响了通信:NRF24L01通信频段为2.4GHZ,最小系统板上没有能达到该频段的器件,该假设不成立。

(2)PCB布的电机动力线太靠近NRF的IRQ端已致中断信号无法产生而不能正常通信:将靠近IRQ中断端的高频线全部用飞线替代,远离IRQ端,结果依然是电机运行时无法正常通信。

(3)四个电机同时带负载运行,导致电源电压拉低使NRF无法正常工作:做了额外的电源芯片并用第二块电池供电,通信完全正常。

由此得出的结论是:无法正常通信的原因是电源电源拉低后NRF无法正常工作,总结的经验是选购电池是应该选容量大的电池或者将NRF直接独立供电。选购NRF模块一


基于单片机微型四旋翼飞行器设计毕业论文设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高考化学二轮复习选择题专练大全

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: