为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 四旋翼飞行器遥控发射接收系统设计

四旋翼飞行器遥控发射接收系统设计

2017-12-05 46页 doc 187KB 23阅读

用户头像

is_601191

暂无简介

举报
四旋翼飞行器遥控发射接收系统设计四旋翼飞行器遥控发射接收系统设计 本科毕业设计(论文) ( 2012 届 ) 题 目: 四旋翼飞行器遥控发射接收系统设计 信息工程分院 分 院: 电气工程及其自动化 专 业: 12电气本1 班 级: 赵浩锋 姓 名: 12303653144 学 号: 指导老师: 孙跃 2016年3月 完成时间: 温州大学城市学院本科毕业设计(论文) 温州大学城市学院 学位论文原创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行研究工作所取得的研究成果。除文中已经加以标注引用的内容外,本论文不包...
四旋翼飞行器遥控发射接收系统设计
四旋翼飞行器遥控发射接收系统 本科毕业设计() ( 2012 届 ) 题 目: 四旋翼飞行器遥控发射接收系统设计 信息工程分院 分 院: 电气工程及其自动化 专 业: 12电气本1 班 级: 赵浩锋 姓 名: 12303653144 学 号: 指导老师: 孙跃 2016年3月 完成时间: 温州大学城市学院本科毕业设计(论文) 温州大学城市学院 学位论文原创性声明 本人郑重声明:所提交的学位论文是本人在导师的指导下,独立进行研究工作所取得的研究成果。除文中已经加以标注引用的内容外,本论文不包含其他个人或集体已经发表或撰写过的研究成果,也不含为获得温州大学城市学院或其它教育机构的学位证书而使用过的材料。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本人承担本声明的法律责任。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权温州大学城市学院可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 本学位论文属于 1、保密?,在______年解密后适用本授权书。 2、不保密?。 (请在以上相应方框内打“?”) 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 I 温州大学城市学院本科毕业设计(论文) 摘要:四旋翼飞行器以其结构新颖、机动性强、性能卓越等特点,使其在军事、民用及科技领域都有很强的研究和应用价值。由于它用四个螺旋桨进行飞行,因此它的飞行姿态保持能力比单旋翼飞行器更强,升降所需要的空间也较小,且其在障碍物较多的情况下仍具有很强的操纵性。根据这些特点四旋翼飞行器比单旋翼飞行器更适合在室内、街道、森林等复杂环境下的进行拍摄和救灾工作。 本文以STM32处理器为核心;无线数据通讯模块采用的是NRF21L01模块实现。 经过试验,飞行器能够准确接收到来自地面的控制指令并完成相应的飞行任务,实现垂直起降、悬停等飞行姿态。 关键词:四旋翼飞行器;无线通信;微控制器 II 温州大学城市学院本科毕业设计(论文) Abstract:Four-rotor aircraft for its novel structure, high mobility, high performance features, making the military, civilian and scientific and technological fields have a strong research and application. Because it uses four propellers flight, flight attitude so that the ability to maintain greater than single-rotor, the space required for the lift is small, and it still has a strong maneuverability in case more obstacle. According to these characteristics four-rotor aircraft more suitable than single-rotor aircraft shooting and relief work in the interior, streets, forests and other complex environments. In this paper, core processor is used STM32; wireless data communication module is used NRF21L01 modules. After testing, the aircraft can accurately control commands received from the ground and complete the mission, achieve vertical takeoff and landing, hovering and other flying attitude. Key Words:Four-rotor aircraft; Wireless communication; Microcontroller III 温州大学城市学院本科毕业设计(论文) 目 录 摘要 .................................................................................................................................................. II Abstract ............................................................................................................................................III 一、绪论 ........................................................................................................................................... 1 (一)课题研究的目的和意义 .................................................................................................... 1 (二)国内外发展及研究现状 .................................................................................................... 1 1.国内四旋翼飞行器的研究......................................................................................................... 1 2. 国外四旋翼飞行器的研究 ....................................................................................................... 1 二、总体方案设计 ............................................................................................................................. 3 (一)总体设计原理 .................................................................................................................. 3 (二)总体设计方案 .................................................................................................................. 3 1.系统硬件电路设计方案 ............................................................................................................ 3 2.各部分功能作用....................................................................................................................... 3 3.系统软件设计方案 ................................................................................................................... 4 三、硬件电路设计 ............................................................................................................................. 5 2.无线通信模块电路设计 ............................................................................................................ 6 3.实物介绍 ................................................................................................................................. 9 四、系统软件设计 ............................................................................................................................10 (一)Keil MDK5.12简介 .........................................................................................................10 1(Keil MDK概述.....................................................................................................................10 2. Keil MDK功能特点 ...............................................................................................................10 (二)软件设计框图 .................................................................................................................10 结论 .................................................................................................................................................12 致 谢 ...............................................................................................................................................13 参考文献 ..........................................................................................................................................14 附录 .................................................................................................................................................15 IV 温州大学城市学院本科毕业设计(论文) 一、绪论 本章主要介绍了关于四旋翼飞行器研究的背景和意义,和国内外高校以及研究机构对四旋翼飞行器研究的现状。本章主要由课题研究的目的和意义,国内外四旋翼飞行器的研究和论文的主要研究内容等几个部分组成。 (一)课题研究的目的和意义 随着微电子、微导航、微机电技术的广泛运用,无人机技术很快就在全世界范围内掀起了研究热潮,并得到了快速且长足的发展。相对于其他无人机而言,四旋翼飞行器的结构较为简单,成本也相对较低,方便维修和护理。除此之外,四旋翼飞行器还具有体积小、重量轻、控制灵活方便、可垂直起降、悬停等特点,不论是在军事领域或是民用领域都得到了非常广泛的运用。 (二)国内外发展及研究现状 1.国内四旋翼飞行器的研究 目前,我国的一些高校和科研机构在四旋翼飞行器的研究上也取得了长足的发展。比如国防科技大学,哈尔滨工业大学和南京航空航天大学等。国防科技大学早就在2004年开始研究微小型飞行器的相关技术,是我国最早一批开展对四旋翼飞行器研究的高校之一,他们使用了自抗扰控制器(ADRC)算法以及反步法这两种方法来对四旋翼飞行器的控制系统进行设计。在接下来的几年里,南京航空航天大学、南京理工大学等等高校也进行了对四旋翼飞行器的理论分析和计算机仿真,并都制作了属于自己的四旋翼飞行器。 同时,四旋翼飞行器在商业上的应用也越来越广泛,在2013年9月3日,顺丰就在广东东莞松山湖区域进行了无人机送货内测。顺丰自主研发了该无人机的内置导航系统,该飞行器飞行高度约为100米,落点误差基本上能够控制在方圆两米以内,同时可以对路线和目的地来进行预先设定。如果测试可行,就可以大量减少人力成本。 除此以外,越来越多的四旋翼飞行器以一种娱乐设备的形式出现在大众的视线里。通常这种四旋翼飞行器都携带着摄像头,用户可以通过手持设备来对飞行器进行控制,以此来给用户带来乐趣。 2. 国外四旋翼飞行器的研究 国外四旋翼飞行器的发展非常迅速,因为他们在这一领域已经拥有了非常悠久的历史,同时还有着深厚底蕴的研发团队。四旋翼飞行器在多旋翼无人飞行器中是较为常见的一种类型,其对硬件平台的要求较高,相应的难度也较大。国外有很多高校和科研机构都做出了一定的成果,有进行室外研究和室内研究的,其中进行室外研究的有美国斯坦福大学,日本千叶大学以及美国奥克兰大学和法国贡比涅技术大学等。进行室内的有美国麻省理工大学,美国宾夕法尼亚大学和瑞士联邦技术机构等。除了高校和科研单位,国外的一些商业公司也加入到对四旋翼飞行器的研究行列,如美国的Draganfly公司和德国的Microdrone GbmH公司等。 近年来,国外研发了很多高性能的飞行器。在欧美发达国家四旋翼飞行器已经在军事和商业领域都取得了非常显著的成就。其中比较具有代表性的就是Draganflyer X4、Parrot AR.Drone Quadricopter。 1 温州大学城市学院本科毕业设计(论文) Draganflyer X4是美国Draganfly Innovations Inc研发的遥控飞机。如图1.1所示。该飞行器具有良好的可靠性和稳定性,并且它还具有悬浮功能,对于拍摄有很大的帮助。当控制器失控时,它甚至可以实现自动着陆,从而保证飞行器和摄像设备的安全。 图1. 1 2 温州大学城市学院本科毕业设计(论文) 二、总体方案设计 (一)总体设计原理 本次设计硬件主要为遥控器部分,处理器采用32位基于Cortex-M3内核的STM32F103芯片,遥控器和飞行器之间的数据通信采用的是2.4G民用无线通信频段的NRF24L01模块。遥控器外型类似与游戏手柄。遥控器通过采集蘑菇头摇杆电位器ADC电压值以及按键状态发送给飞行器。 (二)总体设计方案 1.系统硬件电路设计方案 本次设计采用IAP15W4K58S4微控制器作为MCU,并且均采用3.7V充电电池作为电源为系统供电,电池通过CAT2829芯片稳压到3.3V为MCU以及外设供电。遥控器端的主要硬件部分包括最小系统、无线NRF24L01模块、程序下载、ADC采集、蜂鸣器、LED指示灯以及串口调试,飞行器端硬件主要部分有最小系统、程序下载,无线NRF24L01模块、电机驱动、惯性测量单元MPU6050以及LED驱动电路,其系统总体框图如下所示。 NRF24L01NRF24L01 无线模块 无线模块 惯性测量单元 摇杆控制 电源 电源 遥控器遥控器复位 蜂鸣器 状态显示LED MCU MCU - 状态显示LED 电机驱动 电池电量监控 按钮 串口调试 串口调试 程序下载 程序下载 2.各部分功能作用 (1)MCU控制中心 MCU是飞行器以及遥控器的控制中心,是它们的大脑,主要功能是采集数据和处理数据并做出指示。本次设计采用的是32位的基于ARM Cortex-3为内核的STM32F103作为中央处理器。 (2)通信模块 通信模块在整个系统中起着信号交流的作用,遥控器通过MCU读取的按键信息以及油门方向值发 3 温州大学城市学院本科毕业设计(论文) 送到飞行器端,飞行器端接收到之后做出相应的动作。本次设计主要采用NRF24L01无线通信模块,选择该模块的原因是因其通信协议简单、传输距离相对较远、价格低廉等优点。 (3)LED状态指示 在硬件电路设计中,LED首先必须要有电源指示灯,从而判断系统是否上电。同时还需要有信号指示灯,指示遥控器和飞行器是否通信,最后就是状态显示LED灯显示飞行器状态等等。 3.系统软件设计方案 本次设计软件部分包括遥控器程序以及飞行器的接收程序设计。遥控器程序设计主要包括有无线NRF24L01发送、ADC电压采集之后的处理、读取按键状态和LED灯指示等,涉及的软件包括SPI通信协议、ADC数模转换、I/O口驱动等。飞行器端程序涉及部分主要包括NRF24L01接收、LED状态灯等。 4 温州大学城市学院本科毕业设计(论文) 三、硬件电路设计 (一)遥控器的硬件设计 如图3.1所示,遥控器主要由处理器、无线收发模块和4路摇杆器三部分组成。 主处理器及其最小系统的电路和飞行器的电路相同。主要利用处理器片内的AD转换器采集摇杆的信息,然后将四路电位器的输出引脚接到处理器的AD转换口,免去了外接AD转换芯片以及配置电路的麻烦,大大节省了硬件空间。无线收发模块选用E01-ML01DP3无线通信模块模块,传输距离大概在1100m左右。 图3. 1 遥控硬件配置: , MCU:STM32F103 72Mhz , 传感器:MPU6050 3轴加速度、三轴陀螺仪 , 通信方式:NRF24L01、串口蓝牙、串口WIFI、串口433等 , 通信芯片:FT232串口芯片,串口波特率可以上M,轻松稳定高速通信 1. 处理器 (1) 针对各公司单片机的优缺点比较 从总体上来讲,ARM的控制能力较强,速度快功耗也低,价格也适中,同时还可以加操作系统;DSP的速度最快,但同时价格更高,更适用于高速信号处理系统;C51更适用于简单的控制,编程也简单方便,同时价格也更加实惠。 从运算能力上看,因为C51是8位的;ARM是32位;DSP有16位,以及更高的。所以C51最弱,DSP最强,ARM比较中庸。 从结构上看,C51是一般的冯诺依曼结构,ARM和DSP一般采用哈佛结构。 从频率上看,C51工作频率最低,一般为10~24MHz,因此功耗也低。ARM的功率一般在几十到200MHz之间。而DSP的频率高达300MHz以上,同时功耗也大。 虽然C51的性能远不如其他两种,但它的性价比很高,面积也非常小,还能配比非常丰富的外围电路,同时,这些也限制了它的使用,因此C51主要应用于不需要太多计算量的系统。 ARM相对于其他两种的优点在于其内部的模块或者总线接口功能十分丰富。同时,ROM,RAM较大,管脚也多。 (2) 芯片简介 ARM Cortex-M3采用哈佛结构,采用的是分离的指令以及数据总线,相比于冯诺依曼结构而言处理速度更快。 5 温州大学城市学院本科毕业设计(论文) ARM Cortex-M3在成本以及功耗方面具有非常优秀的性能,并且非常适用于汽车以及无线通信领域。 STM32系列处理器是由 ST 公司按照ARM Cortex-M3内核打造的,其追求的是高性能、低成本、低功耗。按照其性能可以分为增强型STM32F103系列以及基本型STM32F101系列两种。 本设计中使用的是增强型STM32F103。 概述:闪存FLASH:512K字节、SRAM:64K、3 x USART、2 x SPI、2 x I2C、3 x 16位定时器、4-16 MHz主振荡器、实时钟、2 x 看门狗、复位电路 、上电/断电复位、电压、7 通道 DMA、80% 通用I/O管脚、内嵌8 MHz的RC振荡器、和 32 kHz的RC振荡器、72MHz CPU、2 x 12位ADC(1ms) 温度传感器、USB 2.0全速、CAN 2.0B、PWM定时器。 2.无线通信模块电路设计 本次设计无线通信模块采用的是NRF24L01模块。NRF24L01模块。NRF24L01具有以下特性: , 真正的GFSK单收发芯片 , 内置链路层 , 增强型ShockBurstTM , 自动应答及自动重发功能 , 地址及CRC检验功能 , 数据传输率1或2Mbps , SPI接口数据速率0~8Mbps , 125个可选工作频道 , 很短的频道切换时间可用于调频 , 与NRF24XX系列完全兼容 , 可接受5V电平的输入 , 极低的晶振要求60ppm , 工作电压1.9~3.6V 四旋翼无人机要将数据传输到地面,操作者将操作指令发送给无人机,这些都需要通过无线数据通信来实现,本设计选用了E01-ML01DP3无线通信模块,这是一款 2.4G 无线通信模块,采用原装进口的 nRF24L01P芯片,配备20dBm 功率放大芯片,使模块最大发射功率达到了 100mW(20dBm),并同时将接收灵敏度提升到 10dBm,使得模块超过 nRF24L01P 本身10 倍以上的发射距离,传输距离可以达到 1100m。E01-ML01DP3 模块实物如图 3.2 所示。E01-ML01DP3 模块引脚及尺寸下图 3.3 所示。模块与模块之间采用2.4G无线网络频段通信,其电路原理图如图3.4所示。无线NRF24L01模块与MCU之间连接口如表3-1所示。 图3.2 6 温州大学城市学院本科毕业设计(论文) 图3.3 图3.4 表3-1 MCU引脚 NRF24L01引脚 功能 使能发送或接收 PA3 CE SPI片选信号 PA4 CSN SPI时钟信号 PA5 SCK SPI数据输入脚 PA6 MOSI 7 温州大学城市学院本科毕业设计(论文) SPI数据输出脚 PA7 MISO (1)模块简介 E01-ML01DP3 模块引脚描述 引脚序号 名称 方向 描述 1 GND / 地线,连接到电源参考地 2 VCC / 供电电源,必须2.0-3.6V之间 3 CE 输入 模块控制引脚 4 CSN 输入 模块片选引脚,用于开始一个SPI通信 5 SCK 输入 模块SPI总线时钟 6 MOSI 输入 模块SPI数据输入引脚 7 MISO 输出 模块SPI数据输出引脚 8 IRQ 输出 模块中断信号输出,低电平有效 E01-ML01DP3 模块的参数 序号 参数名称 参数数值 备注 模块尺寸 不含SMA天线座 1 15*27mm 接口方式 可使用2.54标准杜邦线,可用于万能板 2 2.54*2*4 供电电压 注意:高于3.6V电压,将导致模块永久损毁 3 2.0-3.6V 通信电平 VDD指模块供电电压 4 0.7VDD-5V 实测距离 条件:市区,空旷,30?,可视,阴天,250K 5 1157m 最大功率 约合100mW 6 20dBm 空中速率 250K,1M,2M 三种速率可以软件调节 7 关断电流 nRF24L01P设置为掉电,CE低电平 8 1uA 功率等级 4级可调 PA芯片功率不可调 9 发射电流 峰值 10 95mA 接受电流 11 20mA CE=1 天线接口 外螺内孔型 12 SMA 天线要求 内螺内针,2.4G频段,50欧姆阻抗 13 SMA 通信接口 最高速率10Mbps 14 SPI 发射长度 32字节 单个数据包32字节最大,3级FIFO 15 接收长度 32字节 单个数据包32字节最大,3级FIFO 16 RSSI支持 不支持 仅支持简单的丢包统计 17 工作温度 -30~85? 无 18 工作湿度 <90%相对湿度 无 19 储存温度 -40~+120? 无 20 工作频段 2.400~2.525可调,1MHz步进 21 2.4G SPI是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而实现数据的交换。SPI接口由MOSI(串行数据输入),MISO(串行数据输出),SCK(串行移位时钟),CS(从使能信号)四种信号构成,CS决定了唯一的与主设备通信的从设备,如果没有CS信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由MISO输出, MOSI输入,数据在时钟的上升或下降沿由MISO输出,在紧接着的下降或上升沿由MOSI读入,这样 8 温州大学城市学院本科毕业设计(论文) 经过8/16次时钟改变,完成8/16位数据的传输。 3.实物介绍 实物操作细节如下所示: 第一步: 上电:首先给遥控器上电,等待遥控器LED信号灯闪烁之后再给飞行器上电。第一步必须这样做,这样做是为防止飞行器先上电之后接收到无线信号不准确从而导致飞行器出现不确定的飞行情况。 解锁:遥控器的左手油门拉到最低,就解锁了,解锁成功后,飞机上的电源指示灯旁边的一个黄色指示灯,遥控接收配对灯,会亮,表示遥控器解锁成功。否侧,解锁失败~拔掉遥控器电源,黄色无线指示灯会熄灭。 第二步: 打开飞机电源后,要等待20秒,才开始推动飞机的油门,先是慢慢推动飞机的油门,等待飞机的叶子转速都均匀,快要离开地面的时候,才突然加大油门。 注意:上电顺序不能弄反,操作需缓慢进行,飞行器别在狭小的空间飞行。 实物图如图3.5所示 图3.5 9 温州大学城市学院本科毕业设计(论文) 四、系统软件设计 (一)Keil MDK5.12简介 1(Keil MDK概述 Keil MDK,也称MDK-ARM,Realview MDK、I-MDK、uVision4 等。目前Keil MDK 由三家国内代理商提供技术支持和相关服务。 MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用。 MDK-ARM有四个可用版本,分别是MDK-Lite、MDK-Basic、MDK-Standard、MDK-Professional。所有版本均提供一个完善的C / C++开发环境,其中MDK-Professional还包含大量的中间库。 2. Keil MDK功能特点 , 完美支持Cortex-M、Cortex-R4、ARM7和ARM9系列器件。 , 行业领先的ARM C/C++编译工具链 , 确定的Keil RTX ,小封装实时操作系统(带源码) , μVision4 IDE集成开发环境,调试器和仿真环境 , TCP/IP网络套件提供多种的协议和各种应用 , 提供带标准驱动类的USB设备和USB主机栈 , 为带图形用户接口的嵌入式系统提供了完善的GUI库支持 , ULINKpro可实时分析运行中的应用程序,且能记录Cortex-M指令的每一次执行 , 关于程序运行的完整代码覆盖率信息 , 执行分析工具和性能分析器可使程序得到最优化 , 大量的项目例程帮助你快速熟悉MDK-ARM强大的内置特征 , 符合CMSIS (Cortex微控制器软件接口标准) (二)软件设计框图 系统软件设计包括遥控器程序设计以及飞行器程序设计。遥控器的主要作用就是采集操控信息发送给飞行器,飞行器部分主要是接收无线数据以及数据处理。遥控器的主要设计流程图如图4.1所示。 遥控器上电 GPIO初始化 ADC初始化 LED灯初始化 NRF24L01初始化 10 温州大学城市学院本科毕业设计(论文) 设置无线发送模式 采集ADC电压以及按 键状态并打包数据 NRF24L01发送数据 LED指示灯循环闪烁 图4.1 在遥控器程序设计中,采取循环采集ADC电压并无线发送数据。ADC电压取值范围为0~2.5V,分辨率是100,采集到的数据即为0~250,并把采集到的电压值存入无线传输缓存Buf数组里面。Buf数组定义为8位数据类型,设置了8位长度,Buf[0]里面存入帧头,Buf[1]里面存放油门,Buf[2]存放左边摇杆数据,Buf[3]里存放前后方向数据,Buf[4]存入左右方向数据,剩余部分存入按键状态信息。NRF24L01直接将读取到的8位数据发送到飞行器端,进行实时控制。 11 温州大学城市学院本科毕业设计(论文) 结论 毕业设计期间,最辛苦也是最有意义的地方就是找出问题的所在,并通过查阅相关资料,寻找解决方案并最终解决问题,这个过程虽然比较繁琐,但是对于我们的学习却极有意义。四年的大学课程学习,以及两年的实验室学习经验,学到了很多关于单片机以及嵌入式方面的知识,这也是我们电气工程专业所学的比较重要的内容,通过这次毕业设计,使得我对这方面的知识得到了提高。 想要很好的完成本次毕业设计,总体的设计思路一定要清晰。从主控芯片的选择到模块的选择方案,都需要经过深思熟虑。我的思路还算比较清晰,首先要有遥控器作为控制端,采集控制信息通过无线模块传输到飞行器端,飞行器端通过无线接收模块接收到的信息从而做出相应的反应。 经过查阅相关资料,本次设计选用基于ARM Cortex-3为内核的STM32F103作为控制芯片,采用NRF24L01作为通信模块,电源部分采用3.7V充电锂电池作为系统提供电源。 这段时间里,在老是以及同学的帮助下,还有自己的不断学习和探索下,一步一步的完成了设计的要求,这个过程非常的有意义以及值得回味。通过和老师同学的交流,不仅丰富了自己的知识面,开拓了自己的思路,同时还可以拉近与老师同学之间的关系。通过这段时间的学习,我掌握了很多书本上没有的指示,但同时又可以把书上的内容运用到实践中来,学以致用。 总之,通过本次设计,我了解了关于我所设计课题的相关内容,加深了对本专业的理解,巩固了大学四年所学到的知识,毕业设计是理论与实践相结合的一个过程,同时也是对我们大学四年锁学知识的一次总体考核。 12 温州大学城市学院本科毕业设计(论文) 致 谢 历时两个月的时间完成了本次毕业设计,从开题报告到硬件电路的设计再到程序设计最后撰写这篇论文,在这么长的毕业设计过程中,我遇到了很多困难,为此我的指导老师孙跃老师始终给予了我细心的知道和不懈的支持。孙老师为人随和、治学严谨细心,即使不是上班时间也不厌其烦的帮助我进行论文的修改,为我指点迷津,帮助我开拓思路,从开始的方案选择到最后的调试都是如此的帮助我。孙老是深厚的理论功底、丰富的实践经验以及诲人不倦的高尚师德对我能够完成本次毕业设计起到了至关重要的作用,在此,向孙跃老师致以崇高的敬意以及由衷的感谢。 同时还要感谢我的同学,在实物制作以及论文撰写过程中给予了我很多有价值的,同学之间的互相讨论,解决了很多个人难以解决的问题。 本论文的完成对我而言并不是重点,文中的不足和浅显之处则是我新的征程上的新的起点。同时我在本论文的写作过程中引用了很多学者的文献,如果没有这些前辈的研究成果,我将很难完成这篇论文的撰写,在此由衷的感谢这些文献的作者。 学业即将完成,我将带着家人、老师、同学以及朋友的鼓励和期望,迈向人生崭新的台阶。 13 温州大学城市学院本科毕业设计(论文) 参考文献 [1] 冯旭光 四旋翼无人机自主控制系统设计[学位论文]硕士 2014 [2] 陈海滨,殳国华.四旋翼飞行器的设计[J].实验室研宄与探索.2013,32(3) :41-44. [3] 杨云高,鲜斌,殷强,等.四旋翼无人飞行器架构及飞行控制的研宄现状[J].2011,22-24(7):448-453. [4] 段国强(四旋翼无人直升机仿真及控制方法比较研究[D](哈尔滨:哈尔滨工业大 学,2013 [5] 尹志林, 张 伟. 超小型红外遥控装置设计. 南京航空航天大学航空宇航学院 ,南京 , 210016 [6] 彭贞慧(小型四旋翼无人直升机控制系统设计[D](南京:南京理工大学,2010 [7] 张垚,鲜斌,殷强等(基于 ARM 处理器的四旋翼无人机自主控制系统 研究[J](中国科学技术大学学报,2012,09:753-760 [8] 高同跃.超小型无人直升机飞控系统及自主滞空飞行的研究,[博士学位论文].上海:上海大 学,2008. [9] 朱海荣,张鹤鸣,郭浩波. 基于无线遥控技术的四旋翼飞行器控制系统设计. 南通大学 电气工程学院, 江苏 南通 226019 [10] 钟佳朋(四旋翼无人机的导航与控制[D](哈尔滨:哈尔滨工业大学,2010 [11] 刘焕晔. 小型四旋翼飞行器飞行控制系统研究与设计[D]. 上海交通大学,2009. [12] 庞庆霈. 四旋翼飞行器设计与稳定控制研究[D]. 中国科学技术大学, 2011. [13] 乔维维(四旋翼飞行器飞行控制系统研究与仿真[D](太原:中北大学,2012 [14] 吴中华,贾秋玲(四旋翼几种控制方法研究[J](现代电子技术,2013,15:88- 90+94( [15] 国倩倩,微型四旋翼飞行器控制系统设计及控制方法研究吉林大学,2013 [16] 陈新泉. 四旋翼无人机飞控系统设计与研究【硕 士 学 位 论 文】, 南昌航空大学,2014 大连理工大学硕士论文】, 大连理工大学,[17] 李尧. 四旋翼飞行器控制系统设计【 2013 14 温州大学城市学院本科毕业设计(论文) 附录 遥控器端代码 //左手上下为油门,左右为旋转 //右手上下为俯仰,左右为横滚 // MCU工作频率28MHZ~~~ #include #include #include #include #include sbit RLED=P0^5; // p0^5为p0口的第六位 sbit GLED=P0^6; sbit LKEY=P4^7; sbit RKEY=P3^4; float temp1=0; volatile int idata ay,ax,by,bx; volatile int idata cy,cx,dy,dx; volatile float idata battery; unsigned char idata TxBuf[20]={0}; unsigned char idata RxBuf[20]={0}; void IO_and_Init(); #if 1 typedef unsigned char uint8_t;//typedef为类型定义 typedef unsigned short int uint16_t; typedef unsigned int uint32_t; //typedef unsigned __int64 uint64_t; int Throttle;//油门门 int Roll; //横滚角 int Pitch; //仰俯角 int Yaw; //自旋角 15 温州大学城市学院本科毕业设计(论文) int Throttle_Calibra=1500;//风门校准 int Pitch_Calibra =1500;//反转校准 int Roll_Calibra =1500;//横滚校准 int Yaw_Calibra =1500;//偏航校准 typedef uint32_t u32; typedef uint16_t u16; typedef uint8_t u8; #define AmericaMode 1 //左手油门。 u32 Mytest=0; //获取AD转换平均值。 u16 Get_Adc_Average(u8 ch,u8 times) { u32 temp_val=0; u8 t; for(t=0;t=2000)?2000:Throttle; 16 温州大学城市学院本科毕业设计(论文) Pitch= 1000+((1000*(float)(Get_Adc_Average(3,15))/256)-Pitch_Calibra); Pitch=(Pitch<=1000)?1000:Pitch; Pitch=(Pitch>=2000)?2000:Pitch; Roll= 1000+((1000*(float)(Get_Adc_Average(2,15))/256)-Roll_Calibra); Roll=(Roll<=1000)?1000:Roll; Roll=(Roll>=2000)?2000:Roll; Yaw= 1000+((1000*(float)(Get_Adc_Average(0,15))/256)-Yaw_Calibra); Yaw=(Yaw<=1000)?1000:Yaw; Yaw=(Yaw>=2000)?2000:Yaw; #else /*右手油门*/ Throttle=1500 - (Throttle_Calibra - (1000 + (1000*Get_Adc_Average(1,15))/4096)); Throttle=(Throttle<=1000)?1000:Throttle; Throttle=(Throttle>=2000)?2000:Throttle; Pitch= 1500 - (Pitch_Calibra-(1000 + (1000 - (1000*Get_Adc_Average(3,15))/4096))); Pitch=(Pitch<=1000)?1000:Pitch; Pitch=(Pitch>=2000)?2000:Pitch; Roll= 1500 - (Roll_Calibra - (1000 + (1000*Get_Adc_Average(0,15))/4096)); Roll=(Roll<=1000)?1000:Roll; Roll=(Roll>=2000)?2000:Roll; Yaw= 1500 - (Yaw_Calibra - (1000 + (1000*Get_Adc_Average(2,15))/4096)); Yaw=(Yaw<=1000)?1000:Yaw; Yaw=(Yaw>=2000)?2000:Yaw; #endif } //校准摇杆。 void controlClibra(void) { static u8 i; 17 温州大学城市学院本科毕业设计(论文) uint16_t sum[4]={0,0,0,0}; // static unsigned char lednum=1; static unsigned char clibrasumNum = 20; for(i=0;i>8)); } //发送遥控器数据。 void CommUAVUpload(uint8_t cmd) { sendCnt=0; uart8chk('$'); uart8chk('M'); uart8chk('<'); checksum = 0; switch(cmd) { case MSP_SET_4CON: uart8chk(8); //data payload len uart8chk(cmd); uart16chk(Throttle); uart16chk(Yaw); uart16chk(Pitch); uart16chk(Roll); break; case MSP_ARM_IT: 19 温州大学城市学院本科毕业设计(论文) uart8chk(0); uart8chk(cmd); break; case MSP_DISARM_IT: uart8chk(0); uart8chk(cmd); break; case MSP_HOLD_ALT: uart8chk(0); uart8chk(cmd); break; case MSP_STOP_HOLD_ALT: uart8chk(0); uart8chk(cmd); break; case MSP_HEAD_FREE: uart8chk(0); uart8chk(cmd); break; case MSP_STOP_HEAD_FREE: uart8chk(0); uart8chk(cmd); break; case MSP_AUTO_LAND_DISARM: uart8chk(0); uart8chk(cmd); break; case MSP_ACC_CALI: uart8chk(0); uart8chk(cmd); break; } uart8chk(checksum); nRF24L01_TxPacket(sendBuf); //NRF24L01_TxPacket2(sendBuf); } 20 温州大学城市学院本科毕业设计(论文) #endif //获取AD采样数据 void AD() _task_ 0 { IO_and_Init(); //初始化I/O口 os_create_task (1); //启动进程1 while(1) { cy=getADCResult(1); //油门 //读取4个摇杆通道每个通道的8位数据,取值范围0-255 Delay(10); cx=getADCResult(0); //YAW Delay(10); dy=getADCResult(3); //Pitch Delay(10); dx=getADCResult(2); //Roll Delay(10); battery=(getADCResult(4)*5.05*100)/256; //电池电压检测通道 低于3.7V亮红灯 Delay(10); if(battery<=370) { RLED=1; GLED=0; } else { RLED=0; GLED=1; } os_wait(K_IVL,3,0);//延时3个节拍 } } // 21 温州大学城市学院本科毕业设计(论文) void NRF24L01() _task_ 1 { while(1) { TxBuf[0]++; TxBuf[1]=128; TxBuf[2]=128; TxBuf[3]=128; if(cy<20) { goto EXIT; } //当油门拉至最低时遥控器解锁 if(RKEY==0) { TxBuf[5]=1; } else { TxBuf[5]=0; } if(LKEY==0) { TxBuf[6]=1; } else { TxBuf[6]=0; } //nRF24L01_TxPacket(TxBuf);//发送TxBuf数组的数据 os_wait(K_IVL,2,0); //给一定延时让数据发送完成 } EXIT: //遥控器解锁。 while(1) { if((dy-by)>=255) 22 温州大学城市学院本科毕业设计(论文) { TxBuf[1]=255; } //用上电记录的数据对采样数据进行修正,保证摇杆中位时数据为128 else if((dy-by)<=0) { TxBuf[1]=0; } else { TxBuf[1]=dy-by;//getADCResult(0)-128 } if((dx-bx)>=255) { TxBuf[2]=255; } else if((dx-bx)<=0) { TxBuf[2]=0; } else { TxBuf[2]=dx-bx; } if((cx-ax)>=255) { TxBuf[3]=255; } else if((cx-ax)<=0) { TxBuf[3]=0; } else { TxBuf[3]=cx-ax; } 23 温州大学城市学院本科毕业设计(论文) //油门:TxBuf[4] //Yaw :TxBuf[3] //俯仰:TxBuf[1] //横滚:TxBuf[2] TxBuf[4]=cy; //油门通道不需处理,直接发送AD检测的8位数据即可,根据AD采样原理 易知读取的AD采样数据不可能为负也不可能大于255 if(RKEY==0) { TxBuf[5]=1; } else { TxBuf[5]=0; } if(LKEY==0) { TxBuf[6]=1; } else { TxBuf[6]=0; } TxBuf[0]++; LoadRCdata();//获取摇杆数据。 CommUAVUpload(MSP_SET_4CON); //nRF24L01_TxPacket(TxBuf);//发射数据 os_wait(K_IVL,2,0); //给一定延时让数据发送完成 } } //IO初始化。 void IO_and_Init() { P1M0=0x00; //P1设为高阻模式 P1M1=0xFF; 24 温州大学城市学院本科毕业设计(论文) P0M0=0XFF; //其他I/O口设置为准双向,弱上拉模式 P0M1=0X00; P2M0=0X00; P2M1=0X00; P3M0=0X00; P3M1=0X00; P4M0=0X00; P4M1=0X00; P5M0=0Xff; P5M1=0X00; LKEY=1; //拉高按键检测I/O口电平,按键为低电平触发 RKEY=1; init_NRF24L01(); //初始化无线模块 adc_init(); //初始化AD检测模块 ax=(getADCResult(0)); temp1=((float)ax/256)*1000-500; Roll_Calibra=temp1;//ax*1000-500; //记录上电时摇杆的数据作为中位修正,因为摇杆中位要 为128即256/2 Delay(10); by=getADCResult(3); temp1=((float)by/256)*1000-500; //通道1,是油门值。 Pitch_Calibra=temp1; Delay(10); bx=getADCResult(2); Yaw_Calibra=((float)bx/256)*1000-500;; //校准。 Delay(10); } 由于本次毕业设计关于姿态控制部分没有完善,采取用四个LED灯来模拟上下左右。 发射端代码 #include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "lcd.h" #include "usart.h" 25 温州大学城市学院本科毕业设计(论文) #include "24l01.h" int main(void) { u8 key,mode; u16 t=0; u8 tmp_buf[2]; delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); //LED端口初始化 LCD_Init(); //初始化LCD KEY_Init(); //按键初始化 NRF24L01_Init(); //初始化NRF24L01 POINT_COLOR=RED; / LCD_ShowString(60,50,200,16,16,"VeryAI STM32"); LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST"); LCD_ShowString(60,90,200,16,16,"VeryAI@COM"); LCD_ShowString(60,110,200,16,16,"2013/9/23"); while(NRF24L01_Check()) //检查NRF24L01是否在位. { LCD_ShowString(60,130,200,16,16,"NRF24L01 Error"); delay_ms(200); LCD_Fill(60,130,239,130+16,WHITE); delay_ms(200); } LCD_ShowString(60,130,200,16,16,"NRF24L01 OK"); LCD_Fill(10,150,240,166,WHITE);//清空上面的显示 POINT_COLOR=BLUE;// LCD_ShowString(60,150,200,16,16,"NRF24L01 TX_Mode"); NRF24L01_TX_Mode(); //mode=' ';//从空格键开始 while(1) 26 温州大学城市学院本科毕业设计(论文) { if(NRF24L01_TxPacket(tmp_buf)==TX_OK) { LCD_ShowString(60,170,239,32,16,"Sended DATA:"); LCD_ShowString(0,190,239,32,16,tmp_buf); if(KEY3==1) { tmp_buf[0]=1; } if(KEY4==1) { tmp_buf[0]=2; } if(KEY5==1) { tmp_buf[0]=3; } if(KEY6==1) { tmp_buf[0]=4; } //mode++; if(mode>'~')mode=' '; tmp_buf[1]=0;//加入结束符 } else { LCD_ShowString(60,170,239,32,16,"Send Failed "); LCD_Fill(0,188,240,218,WHITE);//清空上面的显示 } LED0=!LED0; delay_ms(1500); }; } 27 温州大学城市学院本科毕业设计(论文) 接收端代码 #include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "lcd.h" #include "usart.h" #include "24l01.h" int main(void) { u8 key,mode; u16 t=0; u8 tmp_buf[2]; delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); //LED端口初始化 LCD_Init(); //初始化LCD KEY_Init(); //按键初始化 NRF24L01_Init(); //初始化NRF24L01 POINT_COLOR=RED; // LCD_ShowString(60,50,200,16,16,"VeryAI STM32"); LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST"); LCD_ShowString(60,90,200,16,16,"VeryAI@COM"); LCD_ShowString(60,110,200,16,16,"2013/9/23"); while(NRF24L01_Check()) //检查NRF24L01是否在位. { LCD_ShowString(60,130,200,16,16,"NRF24L01 Error"); delay_ms(200); LCD_Fill(60,130,239,130+16,WHITE); delay_ms(200); } 28 温州大学城市学院本科毕业设计(论文) LCD_ShowString(60,130,200,16,16,"NRF24L01 OK"); LCD_Fill(10,150,240,166,WHITE);//清空上面的显示 POINT_COLOR=BLUE;// LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode"); LCD_ShowString(60,170,200,16,16,"Received DATA:"); NRF24L01_RX_Mode(); while(1) { if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来. { tmp_buf[1]=0;//加入字符串结束符 LCD_ShowString(0,190,239,32,16,tmp_buf); if(tmp_buf[0]==1) { LED2=1; LED3=0; LED4=0; LED5=0; } else if(tmp_buf[0]==2) { LED2=0; LED3=1; LED4=0; LED5=0; } else if(tmp_buf[0]==3) { LED2=0; LED3=0; LED4=1; LED5=0; } else if(tmp_buf[0]==4) { LED2=0; 29 温州大学城市学院本科毕业设计(论文) LED3=0; LED4=0; LED5=1; } } else delay_us(100); t++; if(t==10000)//大约1s钟改变一次状态 { t=0; LED0=!LED0; } } } 30
/
本文档为【四旋翼飞行器遥控发射接收系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索