《四旋翼飞行器PID控制器的设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《四旋翼飞行器PID控制器的设计毕业设计论文.doc(54页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、(2014届)本科毕业设计(论文)资料题 目 名 称:四旋翼飞行器PID控制器的设计 湖南工业大学教务处 2014届本科毕业设计(论文)资料第一部分 毕业论文(2014届)本科毕业设计(论文)2014年5月 33摘 要近年来,随着新材料的涌现及新传感技术的发展,四旋翼飞行器迅速发展起来。四旋翼飞行器是一种具有四个对称旋翼的直升机,结构简单,机动性强,飞行灵活,可垂直起降,悬停甚至完成一些高难度飞行动作。它所具备的优越性能,使其应用前景十分广阔。本设计主要介绍一种四旋翼飞行器的实现方案,以意法半导体公司生产的基于AMR Cortex-M3内核的STM32F103C8T6微型控制器作为计算控制单元
2、,以Invensense公司生产的MPU6050作为惯性测量单元,整合飞行器姿态,以NRF24L01无线通信模块作为通信渠道,实现了上位机与下位机各项数据的实时传输,使用WFLY07遥控器实现了对四旋翼飞行器的无线遥控。本文详细介绍了四旋翼飞行器的飞行原理、硬件构造和软件设计,设计了一种PID控制器,实现了四轴飞行器的各项动作控制。关键词: 四旋翼飞行器,STM32F103,MPU6050,姿态解算,PID控制器ABSTRACTIn recent years, with the new material and new MEMS technology, the quad-rotor obtai
3、ns a rapid development .And that made it become a popular flight model among many model aircraft enthusiasts. Quad-rotor is a kind of symmetry with the advantages of simple structure, strong flexibility, It can take off and land vertically, In addition, it can also hover in the air and even do some
4、difficult maneuver. Its superior performance has the very broad application prospects.This design will introduce a scheme to make a quad-rotor. The design used STM32F103C8T6 which worked with the new-fashioned ARM Cortex-M3 micro processer as the control unit. In addition, a chip named MPU6050 was u
5、sed to measure the attitude data of the quad-rotor, and the wireless communication module named NRF24L01 to make the PC and the quad-rotor communicate well. Besides, a WFLY07 remote was used to control the quad-rotor. We stated the flight theory, and the structure of the hardware and software in det
6、ail importantly, a PID controller was designed to control the attitude and made it really worked.Keywords:Quad-rotor,STM32F103,MPU6050,Attitude calculation,PID controller 目 录摘 要IABSTRACTII第一章 四旋翼飞行器概述11.1引言11.2四旋翼飞行器的国内外研究现状11.2.1 国外研究现状11.2.2 国内研究现状21.3设计意义及应用前景3第二章 四旋翼飞行器飞行原理4第三章 四旋翼飞行器常用部件及安装63.1
7、四旋翼飞行器部件介绍63.1.1 风火轮450机架63.1.2 新西达2212 930kv无刷电机63.1.3 新西达30A电子调速器73.1.4 1045正反浆83.1.5 2200mAh 11.1V 30C 充电锂电池93.1.6 飞行主控stm32f103c8t693.1.7 惯性器件MPU6050103.1.8 天地飞7遥控器113.1.9 天地飞7无线接收机123.1.10 5V稳压电路133.2 四旋翼飞行器的安装143.2.1 飞行器硬件连接图143.2.2 x模式和+模式的区别143.2.2 安装事项15第四章 四旋翼上位机及下位机164.1匿名上位机软件平台164.1.1 匿
8、名上位机功能164.1.2 匿名上位机通信协议164.2下位机程序模块174.2.1 DMP使用方法174.2.2 NRF24L01无线通信184.2.3 无线接收机解码程序184.2.4 电调驱动程序194.2.5 姿态解算程序194.2.6 PID控制器程序20第五章 四旋翼飞行器姿态解算215.1 捷联式惯性导航系统介绍215.2 姿态解算22第六章 四旋翼飞行器PID控制器设计236.1 PID控制器介绍236.2 PID控制思想246.3 PID控制器程序实现246.4 PID控制器参数整定25第七章 结论及存在的问题27第八章 心得体会28参考文献29致谢30附录31湖南工业大学本
9、科毕业设计(论文)第一章 四旋翼飞行器概述1.1引言目前国内外对飞行器的研究主要包括三种:固定翼、旋翼及扑翼式,四旋翼飞行器在布局形式上属于旋翼式的一种。国外早在上世纪初期就开始研究四旋翼飞行器。这种飞行器由军方率先研发并制造用于情报侦查等领域。很多科技企业、大学及研究所也研发并实现了自己的四旋翼飞行器。2012年2月,由美国种子基金会(The Sapling Foundation)运营的非盈利组织TED大会请出了美国宾夕法尼亚大学(University Of Pennsylvania)动力科学院(School of Engineering and Applied Science)的一位教授和
10、他所带领的一个四旋翼飞行器研发团队,他们陈述了目前一些无人机的不足之处和四旋翼飞行器的优越性,并多元化展示了他们研发的四旋翼飞行器在军事,勘探等多种行业的多种用途。事实上,很多无人机都需要专业的飞行控制团队进行远程操控,包括几个专业的飞行员,远程雷达感应操作员和团队协调员。除此之外,这些无人机在自身结构、体积、重量及成本等方面都有缺点。而四旋翼飞行器结构简单,体积小巧,重量轻便,机动性强,飞行灵活,可垂直起降,悬停甚至完成一些高难度飞行动作。这些优势使四旋翼飞行器迅速成为无人机领域冉冉升起的新星,也让人看到了它的研发价值和应用前景。很多行业如军事打击、公安追捕、灾害搜救、农林业调查、输电线巡查
11、、航拍等都成为四旋翼飞行器体现其优越性的平台。1.2四旋翼飞行器的国内外研究现状1.2.1 国外研究现状目前,国内外对四旋翼飞行器的研究主要集中在3个方面:基于惯性导行系统的自主飞行控制、基于视觉功能的自主飞行控制和自主飞行器系统方案,典型代表有:瑞士洛桑联邦理工大学(EPFL)的OS4、宾夕法尼亚大学的HMX4。OS4是EPFL自动化系统实验室开发的一种电动小型四旋翼飞行器,研究的重点是机构设计和自主导航算法,目标是实现室内和室外完全自主飞行。OS4I最大长度约73cm,质量为235g;它使用了Draganflyer的旋翼和机架,4个Faulhaber1724电机,以及一个Xsense的MT
12、9-B微惯性器件。通过万向节将飞行器固定在飞行测试平台上,使其在三个方向都可以灵活运动,便于调试。飞行器的能源供给、数据处理、电机驱动以及飞行控制都由外部提供。OS4已经基于PID、LQ、Backstepping及Sliding-mode等多种控制算法实现了飞行器姿态控制。OS4第二代OS4II的机身最大长度72cm,重520g。机载230g的锂电池,可以自主飞行30min。它与OS4I的区别主要是:旋翼的桨叶面积更大,无刷电机更轻、功率更大,不用电机减速箱而改用皮带减速装置,主控器、惯性器件、电池和电机驱动模块等直接装在机体上。最终在室内实现了OS4II基于惯性导行系统的自主悬停。宾夕法尼亚
13、大学的HMX4最大长度76cm,重700g,机体底部有5个彩色标记。地面摄像头会实时跟踪并飞行器底部标记的位置与面积,从而计算出飞行器 的3个姿态角和位置。研究人员将整个系统安装在一个实验平台上,使飞行器实现了自主悬停,使用的控制算法是Backstepping。之后HMX4的研究人员又研发出一种基于机载与地面双摄像头的视觉定位与定姿系统,进一步提高了测量精度。这种基于视觉的四旋翼飞行器控制可以很好地被用于执行一些特殊任务,如,在固定平台自主起飞、降落,又如,与地面可移动机器人协同工作等。 宾夕法尼亚大学的四旋翼飞行器研究已经从对单个飞行器的控制上升到对多个飞行器的控制。研究重点是多个飞行器之间
14、协调实现队形排列,运动计算等算法设计,完成对飞行器机群的控制。比如宾法尼亚大学实现的四旋翼飞行器群可以分别演奏一种乐器,并可以实现相互之间的协调,完成一首交响乐的演奏。目前国外四旋翼飞行器的研究发展迅速,美国、日本、韩国、澳大利亚和德国等在此项目上经验丰富,技术较为成熟。部分国外研发的飞控算法及制作的飞控板很多都已经进入我国并受到航模爱好者青睐,比如MWC飞控、KK飞控,MK飞控,因其开源,使用得较多。1.2.2 国内研究现状国内对四旋翼飞行器的研究也比较多。清华大学、北京航空航天大学、上海交通大学、浙江大学等都有对此项目有很大的研发投入并获取了一定研究成果。深圳市大疆创新科技有限公司(DJI
15、-Innovations,简称DJI),成立于2006年。是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商。凭借对创新的高度投入,大疆研发并推出了多个具有业界最顶尖水平的产品系列,包括Ace系列工业无人直升机智能飞行控制系统和地面站控制系统,WooKong-M系列多旋翼控制系统级地面站系统,Spreading Wings筋斗云系列多旋翼专业影视航拍飞行器,包含了高清数字图传的Ruling如来系列多功能手持地面控制终端。此外,大疆还推出了专门针对模型和玩具市场的WooKong-H遥控直升机飞控系统,Naza系列飞控系统,Flame Wheel 风火轮系列轻型多轴飞行器等产品。目前,国
16、内有很多致力于开源四旋翼飞行器研发的科技企业及技术团队,最受欢迎的有匿名科创开发的匿名四轴,圆点博士小四轴等。匿名四轴的控制方法主要是对姿态欧拉角进行控制,圆点博士小四轴主要是对姿态四元数进行控制,控制效果都很好。这给很多电子技术爱好者提供了丰富的学习资料。国内有很多针对多旋翼飞行器的技术论坛,也有很多技术论坛专门开设了四旋翼飞行器讨论版块,汇聚了众多四旋翼飞行器的爱好者,提供了飞行器技术学习和提升的平台。 1.3设计意义及应用前景四旋翼飞行器的控制有很多难点。首先,对四旋翼飞行器很难建立准确的动力学模型。因为飞行过程中,影响因素较多,且具有不确定性。其次,现代控制理论的控制器都要基于对被控对
17、象的精确建模上,如果建模不准确,控制器的性能就会不理想。第三,利用惯性器件测算四旋翼飞行器姿态信息的准确度也是实现稳定控制的关键。毋庸置疑,对此飞行器的研究将会推进这三个问题的解决,是得人类对于复杂环境下的运动控制更进一步。所以,其研究价值非同一般。四旋翼飞行器所具备的优越性能,应用前景十分广阔。可应用于军事侦察、监视、巡逻、获取情报等。可用于自然灾害之后的救援、搜索。可用于人难以到达的高压线、水坝、桥墩和地震后路段的检查,航拍和成图。还可用于各类勘探工作等。所以,从工程和理论的角度来讲,四旋翼飞行器的研究具有重要意义。本设计做的飞行器就从小方面来讲,可以为我院的同学做一个引子。第一,可以引起
18、大家对四旋翼飞行器的兴趣和热情。第二,对四旋翼飞行器的飞行原理和基础知识有详细认知,为后续同学打好基础。第三,在技术上进行一些先导性的尝试,总结相关的经验和教训,以供借鉴。四旋翼飞行器集成了惯性导航技术、软硬件设计技术、自动控制技术、是一个多学科的综合平台,也是提高能力的平台。第二章 四旋翼飞行器飞行原理四旋翼飞行器机架呈十字状,有四个螺旋桨分别位于十字架的端点处,如下图:图1 四旋翼飞行器原理示意图在任何一种模式下,四个螺旋桨顺时针编号为1、2、3、4号,其中1、3号为A组,2、4号为B组,其中,A组螺旋桨顺时针旋转,为正桨;B组螺旋桨逆时针旋转,为反桨。四旋翼飞行器可分为两种模式,即模式和
19、模式。上图展示的是模式。首先,以模式介绍飞行器的姿态角:Roll,Pitch,Yaw。这三个角反应了飞行器的对地姿态。Roll角为横滚角,如图,设螺旋桨1为飞行器机头。机体绕X轴旋转产生与水平面的夹角,即为横滚角,角度正负与惯性器件的安装有关。Pitch角为俯仰角,如图,机体绕Y轴旋转产生与水平面的夹角,为俯仰角,角度正负与惯性器件安装有关。Yaw角为偏航角,如图,机体绕Z轴旋转产生原来XOZ面的夹角,为偏航角。在模式下,A组螺旋桨与B组螺旋桨基本没有关系。实现基本的飞行动作只需调节一组螺旋桨的转速。当四个螺旋桨转速相同时,螺旋桨间的扭力矩相互抵消,实现飞行器姿态水平,如果增加螺旋桨的转速,可
20、实现飞行器上升,下降等动作。当1、3号螺旋桨转速增加,而2、4号螺旋桨转速不变时,飞行器可以实现偏航。当1、3号螺旋桨转速不变,2号螺旋桨转速增加,4号螺旋桨转速减小,飞行器可实现横滚运动,即飞行器向左飞。当2、4号螺旋桨转速不变,1号螺旋桨转速增加,3号螺旋桨转速减小,飞行器可实现俯仰运动,即飞行器向前后飞。由此,可以想像飞行器在不同螺旋桨转速下的飞行动作。X模式与模式不太相同。在X模式下,飞行器的四个螺旋桨都要参与到飞行动作的调节中,将图1中机体坐标绕Z轴顺时针旋转45,就是X模式下的机体坐标。此时,飞行器要实现飞行动作就要靠螺旋桨两两协调完成。当2、3好螺旋桨转速增加,1、4号螺旋桨转速
21、减小,飞行器实现Roll方向的运动。当1、2号螺旋桨转速增加,3、4号螺旋桨转速减小,飞行器是实现Pitch运动。当1、3号螺旋桨转速增加,2、4号螺旋桨转速不变,飞行器实现Yaw运动。第三章 四旋翼飞行器常用部件及安装3.1四旋翼飞行器部件介绍3.1.1 风火轮450机架风火轮450机架是深圳市大疆创新科技公司设计的多旋翼飞行器套装。其电机轴距450mm,使用尼龙+纤材料,硬度高,耐摔。其自身重量非常轻便,加上螺旋桨大约在285g左右。图3.1.1 风火轮450机架3.1.2 新西达2212 930kv无刷电机无刷电机运用于航模,优越性非常明显:无刷电机工作效率很高,一般的有刷电机摩擦大,损
22、耗大,发热多,寿命短,效率低,输出功率小。而无刷电机无电刷,低干扰,噪音低,运转顺畅,效率高,可达到80%以上,寿命长,基本不需要维护。无刷电机通常适用于控制要求比较高,转速比较高的设备。航模无疑是一个理想平台。电机参数解释:2212前两位是指无刷电机转子的直径为22mm,后两位是指无刷电机转子高度为12mm。kv值是指外加1v电压对应的每分钟空转转速。所以930kv就说明电机供电电压增加1v,电机每分钟空转转速提升930转。因为输入的是直流电,而无刷电机需要三相交流电才能驱动,所以,无刷电子调速器对无刷电机的使用至关重要。图3.1.2 XXD2212 930KV无刷电机3.1.3 新西达30
23、A电子调速器新西达电子调速器是航模无刷电子调速器的一种。因为无刷电机运行起来之后,其需要很大的电流,这个电流是微控制器无法承受的,而电子调速器的作用就是将控制信号转化为控制所需的三相电流,输出到无刷电机可以直接驱动。电子调速器有三根输出线。红色和黑色线分别接入到电源正负极,白色线用于接收无线接收机的PWM信号。四旋翼飞行器就是通过控制电子调速器达到控制无刷电机的转速从而使飞行器做出相关动作的。新西达30A电子调速器参数解释:30A是指其最大能够提供的电流不能超过30A。电子调速器的使用:电子调速器只接收舵机信号。所谓舵机信号就是指频率为50Hz,高电平为1-2ms的PWM信号。第一次使用电子调
24、速器要对电子调速器初始化,初始化就是对电子调速器设置油门行程,确定电子调速器输出最小和最大电流,还有其他一些保护模式,详细的操作设置,可以参考新西达电子调速器说明书。图3.1.3 XXD30A电子调速器3.1.4 1045正反浆为了抵消螺旋桨的自旋,需要正反桨使得相隔的桨旋转方向不同,正反桨的风都是向下吹,顺时针旋转的桨为正桨,逆时针旋转的桨为反桨。正反桨是四旋翼飞行器常用的螺旋桨,一般选用碳纤和尼龙复合材料制成,硬度强。正反桨参数解释:1045是指桨的直径为10英寸(1英寸=254mm),桨的角度是45。图3.1.4 1045正反桨3.1.5 2200mAh 11.1V 30C 充电锂电池同
25、样容量的电池中,锂电池的质量最轻,所以本设计选择锂电池。电池参数解释:2200 mAh表示电池的容量,如果电池以2200mA放电的话可以放电一小时。11.1V表示电池的额定电输出压。C是普通锂电池与动力锂电池的最大不同,动力锂电池的容量与C值的乘积即为锂电池的最大放电强度。本设计中的电池放电强度为2200*30=66000mA。随着电池容量的增加,电池的质量就会增加。这个必须考虑到设计中,因为选定电机,螺旋桨,飞行器的升力就大致确定了。所以,如果飞行器自身过重就会飞不起来,所以电池的容量要选择合适。图3.1.5 2200mAh 11.1V 30C 充电锂电池3.1.6 飞行主控stm32f10
26、3c8t6STM32系列是意法半导体公司基于ARM公司专为要求高性能、低成本、低功耗的嵌入式应用专门设计内核而设计的32位高性能,低功耗高级微控制器。本设计采用STM32系列的增强型F103系列。STM32F103C8T6是STM32系列中增强型中的中等容量微型控制器。其具有非常丰富的内部资源。1、带有128KB字节闪存的。2、最高主频达到72MHz3、具有时钟、复位、电源管理、低功耗功能。4、2个12位内置模式转换器,多大16个转换通道,转化之间仅1us。5、7通道DMA控制器,支持定时器、ADC、SPI、I2C和USART等外设。5、多达8个定时器,其中2个高级定时器,4个普通定时器,2个
27、基本定时器。6、2个I2C接口,2个SPI接口,3个USART接口,1个CAN接口,1个USB2.0全速接口。7、具有调试模式,包括串行单线调试SWD,和JTAG接口。8、芯片内置了一个温度传感器。9、具有CRC计算单元。10、96位芯片唯一代码。操作STM32微型控制器目前有两种主流方式,即:寄存器操作法和库函数操作法。意法半导体公司为所有STM32系列的控制器撰写了完整的固件库,目前已经更新到v3.5版本。固件库中包含了STM32所有内部资源的操作源文件,使得用户在对STM32编程时变得相当简洁方便,尤其是在对控制器的配置中显得尤为突出。作为初学者,建议使用库函数操作法,其操作一目了然,如
28、同阅读一篇英文文章一样,简单易懂,省去了查询寄存器的繁琐工作。但是,这种操作方法对硬件本身的了解程度不如操作寄存器的方法。因为寄存器的操作具体到了寄存器的每一位配置。这对使用数据手册的能力和编程能力要求较高。这两种方法各有所长,依个人喜好和能力选择。在线调试器和编程器方面,建议使用意法半导体的STLink。STLink是意法半导体为STM8和STM32系列专门设计制造的,其易于安装,使用方便。此外,J-Link也可以,效果相同。图3.1.6 主控stm32f103c8t63.1.7 惯性器件MPU6050MPU6050是美国InvenSense公司研发的全球首例9轴运动处理传感器。它集成了3轴
29、MEMS陀螺仪,3轴MEMS加速度传感器。预留出了XDA,XCL两个管脚,可以扩展其他的IIC设备,比如电子罗盘。主控器可以通过XDA,XCL直接访问扩展设备的寄存器,使其输出9轴的运动数据。MPU-6050的陀螺仪和加速度传感器的测量范围都是可以编程的,陀螺仪的量程有250,500,1000,2000/秒(dps),加速度计可测范围为2,4,8,16g。MPU6050与所有设备寄存器之间的通信采用I2C接口。其片内集成了一个精度很高的振荡器,可用来为MPU6050提供工作时钟。MPU-6050可支持的电源范围可以是2.5V、3.0V也可以到3.3V。要特别说明的是,MPU6050的内部集成了
30、一个可以扩展的数字运动处理器DMP(Digital Motion Processor),可谓功能强大,用户可以通过对其编程,实现MPU6050内部自动对ACC,GRYO数据进行滤波,校准,并融合ACC、GRYO数据,计算直接输出姿态四元数,非常方便,省去了姿态融合的算法,减小了主控器的计算负担。DMP寄存器有专门配置的操作文件库,最初是针对MSP430单片机写的,用户可以在此基础上稍加修改,便可以移植到STM32上来,这样读出姿态数据经过本人测试,非常准确。但有个问题需要注意,在开机或者复位8秒之内,MPU6050的DMP寄存器要进行自身稳定,所以这段时间输出的数据都是假数据,8秒之后输出的数
31、据就会很准确。很多网友对DMP寄存器的评价也非常高。MPU6050集成度高,相比单个的电子陀螺仪和加速度传感器成本低,精度高,性价比非常好,堪称运动传感器的典范。图3.1.7 mpu60503.1.8 天地飞7遥控器天地飞遥控器是深圳天地飞科技开发有限公司开发设计并制造的专用航模遥控器,可用在固定翼、直升机及多旋翼等飞行器上。目前天地飞遥控器已经发布到天地飞9版本。本设计使用天地飞7,如下图。可以看到,天地飞7遥控有超大图形点阵LCD,中文、图形显示,人机交互界面设计人性化。该遥控器采用原生2.4G技术,采用总线数据传输,极大提升了操控敏捷度。具有超强的抗干扰能力,使用了高端扩频(DSSS)+
32、 跳频技术,可以60台遥控器同时开机工作而不互相影响。航模遥控器分美国手和日本手两种,区分这两种遥控器的依据是遥控器油门在左边还是右边。油门在左手边的是美国手,在右手边的是日本手。本设计中采用美国手,即左边摇杆上下围油门,左右为方向舵。右边摇杆上下为升降舵,左右为副翼。这种模式是可以通过遥控设置菜单中进行设置的。一般常用的设置就是这些。详细的设置说明可以参考WFT07中文说明书V1.3遥控器油门是控制四旋翼飞行器的螺旋桨转速,油门大,则无刷电机转速加快,螺旋桨转速加快。方向舵是控制飞行器的飞行方向,副翼是控制飞行器的横滚角,升降舵是控制飞行器的俯仰角的。图3-1-8 天地飞7遥控器3.1.9
33、天地飞7无线接收机天地飞7无线接收机是配套天地飞7遥控器一起使用的。工作电压为4.8V6V。工作电流30mA。第一次使用接收机要将无线接收机与天地飞7遥控器进行对码。一旦实现对码之后,以后的使用将无需进行对码,只要双方都接通了电源,遥控器会自动与接收机对接。具体对码操作可以参考WFT07中文说明书V1.3天地飞7遥控器有7个接收通道,按照通道号分别为:第一通道-AIL副翼第二通道-ELE升降舵第三通道-THR油门第四通道-RUD方向舵第五通道-GRY起落架第六通道-PIT螺距第七通道-辅助通道图3.1.9 天地飞7无线接收器3.1.10 5V稳压电路由于电池输出的电压有11V以上,而STM32
34、的供电电压只有5V,天地飞7无线接收机的工作电压为4.8V6.0V,所以需要一个5V的稳压电路,专门对主控器和无线接收机供电。这样可以解决电调BEC供电使电调发热的问题采用常规5V稳压电路即可,对电池输出电压滤波,稳压,然后输出即可。原理图如下图3.1.10 5V稳压电源电路图3.2 四旋翼飞行器的安装3.2.1 飞行器硬件连接图 STM32F103C8T6 电机电调MPU5060电机电调电机电调电调电机5V稳压电路电池遥控器STM32F103C8T6NRF24L01NRF24L01NRF24L01接收机图3.2.1 飞行器硬件连接关系图 3.2.2 x模式和+模式的区别在上文四旋翼飞行器原理
35、中已经介绍过四旋翼飞行器的两种模式。X模式与模式在硬件安装和软件设计编写都有区别。硬件上的区别在于惯性器件的安装位置:模式的四旋翼飞行器的惯性器件X轴与一条机臂平行,Y轴与另外一条机臂平行。X模式的四旋翼飞行器的惯性器件安装位置是把模式的惯性器件顺时针或者逆时针旋转45就得到X模式的四旋翼飞行器。3.2.2安装事项安装四旋翼飞行器要注意以下事项:1、由于,四旋翼飞行器螺旋桨旋转起来,产生的力矩很大,机体旋转会产生非常大的离心力,如果机架没有安装好,就会在离心力的作用下散架,发生螺旋桨打到人的危险事故。所以在安装风火轮机架时,一定要确保螺丝都拧紧了。2、电机的安装要注意,每个电机都与机架所在的水
36、平面呈90度角。3、螺旋桨的安装也要注意螺旋桨的翼面要与机架所在水平面保持平行。同时,四个螺旋桨的翼面也要在一个平面内。当然有一点误差也没有太大关系。4、由于调试需要,要将主控器安装在可以拆卸,容易插拔线的地方。5、将电池放在容易更换的地方。将飞行器安装好之后,需要检验是否安装正确,检验方法为:在有保护措施的情况下打开电机,遥控油门不要推太大,来检查飞行器的螺旋桨的旋转方向,是否正确。如果飞行器比较平稳,没有很大幅度的震荡就说明安装正确。建议最好是把自己的飞控程序下载到主控器,在检验飞行器安装正确与否的同时也可以检验自己PID程序中ROLL,PITCH,YAW输出量的符号问题。安装好如下图:图
37、3.2.2 安装效果图第四章 四旋翼上位机及下位机4.1匿名上位机软件平台4.1.1 匿名上位机功能 匿名科创开发的上位机软件平台目前最新的版本具有地面站功能,可以下载飞控程序。本设计中使用的上位机版本较低,但是功能方面已经足够使用。该上位机具有以下功能:(1)基本功能。可以当做普通的串口收发数据,可以选择串口,选择波特率范围1200-500000,有数据校验功能,具备两种收发码格式:CHR、HEX。(2)高级收码。可以将下位机发送至上位机的每帧数据显示出来,可以分别显示数据校验位,数据和功能帧。共有10中帧格式可选,可以就一种功能的数据进行筛选显示。(3)波形显示。可以实时显示出惯性器件测出
38、的ACC的XYZ三轴波形,GRYO的XYZ三轴波形,3个姿态角的波形等。波形可以放大可以缩小,可以保存至PC机。(4)飞控状态。可以实时显示飞行器的3D状态,实时显示出3个姿态角,加速度计3轴数据,陀螺仪3轴数据,地磁计3轴数据。同时还可以实时显示四个电机状态,7个遥控通道数据,及电池的电量使用情况。(5)飞控设置。可以通过无线向飞控写入PID参数,也可以读取飞控的PID参数。这对整定PID控制器的参数有很大的帮助,使得参数调节方便高效。4.1.2 匿名上位机通信协议下位机发送数据格式为:0x88+FUN+LEN+DATA+SUM。FUN可以是0xA1到0xAA,共10个;LEN为DATA的长
39、度。SUM是0x88一直到DATA最后一字节的和,uint8格式。FUN表示下位机的功能帧头。以下介绍几个常用到的功能帧:飞控姿态显示对应的功能帧为0xAF,帧格式为:0x88+0xAF+0x1C+ACC DATA+GYRO DATA+MAG DATA+ANGLE DATA+ 0x00 + 0x00+ 0x00+SUM,共32字节。遥控,电机pwm,电压显示对应的帧FUN为0xAE,帧格式为:0x88+0xAE+0x12+THROT YAW ROLL PITCH +AUX1 2 3 4 5 + PWM:1 2 3 4 + VOTAGE + SUM,共28字节。下位机发送PID数据给上位机的数据
40、帧格式为:0X88 0XAC 0X1C 0XAD + PID数据 + 无用数据 + SUM上位机发送PID数据给下位机的格式为:0X8A 0X8B 0X1C 0XAE +PID数据+ 无用数据 + SUM就四旋翼飞行器本身来讲,上位机软件平台是可要可不要。因为上位机的功能就是提供一个四旋翼飞行器与人交互的平台,使人可以看到飞行器实时的内部数据和状态。如果不要上位机,只要下位机做的好,飞行器也可以很好的起飞,可以完成所有动作。4.2下位机程序模块本章将详细介绍下位机的任务,模块功能及实现方法。总体来说,下位机的任务就是测量四旋翼飞行器的实时姿态并返回主控,主控根据返回的姿态进行PID控制,计算出
41、能够使飞行器达到目标姿态的各个电机输出的PWM量。同时,下位机将四旋翼飞行器的姿态数据,电机动作量,遥控器数据通过无线模块发送至上位机。4.2.1 DMP使用方法MPU6050有官方的DMP寄存器操作库。该操作库下包含了DMP操作的源文件。原本是基于MSP430单片机写的,经过一些修改就可以移植到STM32F103微控制器上。所有对DMP寄存器的操作都必须通过这个库才能打开DMP引擎,进行加速度传感器和陀螺仪数据的滤波,融合,输出姿态数据。由于MPU6050的要通过IIC通信协议才能对寄存器操作,所以必须确保程序中的IIC程序正确。对于DMP寄存器的操作,主要是用到了以下操作函数:mpu_in
42、it();对MPU进行初始化mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL);设置加速度传感器和陀螺仪的最大量程mpu_configure_fifo(INV_XYZ_GYRO|INV_XYZ_ACCEL);配置FIFO通道mpu_set_sample_rate(DEFAULT_MPU_HZ);设置MPU采样频率。dmp_load_motion_driver_firmware();这个函数非常重要,它的作用是使能DMP寄存器的。如果这个函数执行失败,将无法使用DMP寄存器的功能。dmp_set_orientation(inv_orientation_ma
43、trix_to_scalar(gyro_orientation);与DMP计算输出四元数有关。dmp_enable_feature(hal.dmp_features);dmp_set_fifo_rate(DEFAULT_MPU_HZ);设置FIFO通道的频率 run_self_test();这个是MPU的自检程序。自检程序可以消除MPU测得数据的漂移。自检结束后,传感器才有输出。mpu_set_dmp_state(1);在一切设置完成之后,DMP就被成功使能,要得到实时姿态数据,只需要在程序主函数的while(1)循环中调用dmp_read_fifo(gyro, accel, quat, &s
44、ensor_timestamp, &sensors, &more);这个函数,就可以读取飞行器的陀螺仪,加速度传感器数据,可以读取姿态四元数。4.2.2 NRF24L01无线通信NRF24L01无线模块与主控器之间通过SPI协议进行通信。STM32F103C8T6主控器中含有两个SPI模块。所以我们的SPI程序就有两种选择,即:A、使用GPIO口进行SPI模拟,B、直接使用SPI模块进行编程。这两种方法都有一定的好处当然也有缺点。A方法的好处是不用局限于特定的GPIO口,但缺点是可能通信的质量不如SPI模块。而B方法刚好与A相反。总体来讲,主控器自身的SPI模块还是相对好用一些,我们只需要对其
45、特定寄存器进行配置就可以完成通信,使得代码量大大减少。我们需要两块NRF24L01通信模块实现飞控与PC机的通信。同时要将其配置为双线全双工模式,实现两个无线模块间的相互通信。程序的关键在于SPI模块的初始化和NRF24L01的初始化。程序流程图如下:图4.2.2 无线通信程序流程图4.2.3 无线接收机解码程序天地飞7无线接收机向主控输入的信号为PWM信号,该信号也为舵机信号,即:周期为20ms,高电平为1-2ms。遥控器发出的命令的不同就在于PWM信号的高电平时间的长短,所以我们解码的关键问题就是捕捉无线接收机输入到主控中的PWM信号高电平的时间。本设计使用了无线接收机的四个通道即:副翼通
46、道、升降舵通道、油门通道、方向舵通道。所以要将这四个通道的PWM高电平时间采集出来并保存至主控的寄存器中。STM32F103支持一个普通定时器的四个通道捕捉外部PWM。支持上升沿触发中断或者下降沿触发中断。我们将此捕获中断设置为优先级最高。而且这个设置是必须的,只有让捕获中断的优先级最高,主控器才能实时接收到遥控器的命令而不被其他中断打断。捕获PWM高电平时间的思路是这样的:首先,定义两个全局变量,一个用于标记捕获状态status(8bits),我们读bit0为第1位。一个用于记录捕获到一次下降沿时的TIM_CNT的值value。捕获状态变量的后6位用于记录捕获高电平后定时器溢出的次数,第7位用于表示捕获到高电平标志,第8位是捕获完成标志。我们在TIMER的初始化中将每个通道设为上升沿中断的,当上升沿到来时,程序进入捕获中断的服务函数中,判断status的第7位是否为0,如果为0,则说明还未捕获到新的上升沿,那么就把status、value和TIM_CNT置零。再将status第7位置1,表示捕获到高电平,之后就把该通道设置为下降沿中断,如果在等待下降沿的过程中发生率定时器溢出,那么status就对溢出次数计数。如果达到了最大溢出次数,即使还没有捕获到下降沿,也强制标记捕获完成。当下降沿到来的时候,先将status第8位置1,