四旋翼飞行器程序.doc

上传人:数据九部 文档编号:10177038 上传时间:2021-04-25 格式:DOC 页数:16 大小:229.50KB
返回 下载 相关 举报
四旋翼飞行器程序.doc_第1页
第1页 / 共16页
四旋翼飞行器程序.doc_第2页
第2页 / 共16页
四旋翼飞行器程序.doc_第3页
第3页 / 共16页
四旋翼飞行器程序.doc_第4页
第4页 / 共16页
四旋翼飞行器程序.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《四旋翼飞行器程序.doc》由会员分享,可在线阅读,更多相关《四旋翼飞行器程序.doc(16页珍藏版)》请在三一文库上搜索。

1、四旋翼自主飞行器(B题)摘要 系统以R5F100LE作为四旋翼自主飞行器控制的核心,由电源模块、电机调速控制模块、传感器检测模块、飞行器控制模块等构成。飞行控制模块包括角度传感器、陀螺仪,传感器检测模块包括红外障碍传感器、超声波测距模块、TLS1401-LF模块,瑞萨MCU综合飞行器模块和传感器检测模块的信息,通过控制4个直流无刷电机转速来实现飞行器的欠驱动系统飞行。在动力学模型的基础上,将小型四旋翼飞行器实时控制算法分为两个PID控制回路,即位置控制回路和姿态控制回路。测试结果表明系统可通过各个模块的配合实现对电机的精确控制,具有平均速度快、定位误差小、运行较为稳定等特点。 目 录1 系统方

2、案论证与控制方案的选择- 2 -1.1 地面黑线检测传感器- 2 -1.2 电机的选择与论证- 2 -1.3 电机驱动方案的选择与论证- 3 -2 四旋翼自主飞行器控制算法设计- 3 -2.1 四旋翼飞行器动力学模型- 3 -2.2 PID控制算法结构分析- 3 -3 硬件电路设计与实现- 5 -3.1飞行控制电路设计- 5 -3.2 电源模块- 6 -3.3 电机驱动模块- 6 -3.4 传感器检测模块- 7 -4 系统的程序设计- 8 -5 测试与结果分析- 9 -5.1 测试设备- 9 -5.2 测试结果- 9 -6 总结- 10 -附录A 部分程序清单- 11 -1 系统方案论证与控制

3、方案的选择 根据题目要求,对该系统的特点及其控制特性进行了分析,进行了几种不同设计方案的比较。1.1 地面黑线检测传感器探测地面黑线的基本原理是:光线照射到路面并反射,由于黑线和白色地面对光的反射系数不同,所以可以根据接收到的反射光强弱来判断黑线。可实现的方案有:方案一:采用普通发光二极管及光敏电阻组成的发射接收方案。该方案在实际使用时,容易受到外界光源的干扰,有时甚至检测不到。主要是因为可见光的反射效果跟地表的平坦程度、地表材料的反射情况均对检测效果产生直接影响。虽然可采取超高高度发光二极管降低一定的干扰,但这又增加额外的功率损耗。方案二:红外避障传感器E18-D80NK。这是一种集发射与接

4、收于一体的光电传感器,发射光经过调制后发出,接收头对反射光进行解调输出,有效的避免了可见光的干扰。透镜的使用,也使得这款传感器最远可以检测80厘米距离。检测障碍物的距离可以根据要求通过尾部的电位器旋钮进行调节。并且具有探测距离远、受可见光干扰小、价格便宜、易于装配、使用方便等特点。比较以上二种方案,方案二占有很大优势,不但能准确完成测量,而且能避免电路的复杂性,因此选择方案二。1.2 电机的选择与论证四旋翼无人飞行器是通过控制四个不同无刷直流电机的转速,达到控制四旋翼无人飞行器的飞行姿态和位置,与传统直升机通过控制舵机来改变螺旋桨的桨距角,达到控制直升机的目的不同。在电机的选型上,主要有直流有

5、刷电机和直流无刷电机两种。方案一:直流有刷电机是当前普遍使用的一种直流电机,它的驱动电路简单、控制方法成熟,但是直流有刷电机使用电刷进行换向,换向时电刷与线圈触电存在机械接触,电机长时间高速转动使极易因磨损导致电气接触不良等问题,而且有刷电机效率低、力矩小、重量大,不适合对功率重量比敏感的电动小型飞行器。方案二:直流无刷电机能量密度高、力矩大、重量轻,采用非接触式的电子换向方法,消除了电刷磨损,较好地解决了直流有刷电机的缺点,适用于对功率重量比敏感的用途,同时增强了电机的可靠性。所以选择直流无刷电机作为动力源。1.3 电机驱动方案的选择与论证方案一:采用电阻网络或数字电位器调整电动机的分压,从

6、而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。 方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较 短、可靠性不高。方案三:采用全桥驱动PWM电路。这种驱动的优点是使管子工作在占空比可调的开关状态,提高使用效率实现电机转速的微调。并且保证了可以简单的方式实现方向控制。基于上述理论分析,选择方案三。2 四旋翼自主飞行器控制算法设计2.1 四旋翼飞行器动力学模型设计的小型四

7、旋翼飞行器适用于室内低速飞行,因此忽略空气阻力的影响。因此,简化后的飞行器动力学模型为 式1-1式中为四旋翼飞行器在导航坐标系下的线位移,为运动加速度,m为飞行器质量,分别为机体的偏航角、俯仰角和横滚角,为旋翼面中心到四旋翼飞行器质心的距离, 为轴向惯性主矩。该动力学模型对四旋翼飞行器的真实飞行状态进行了合理的简化,忽略了空气阻力等对系统运行影响较小的参数,使得飞行控制算法更加简洁。2.2 PID控制算法结构分析在动力学模型的基础上,将小型四旋翼飞行器实时控制算法分为两个控制回路,即位置控制回路和姿态控制回路。算法结构如图B-1所示。给定位置位置控制姿 态控 制电机控制飞行器机体姿态控制回路位

8、置控制回路 图2-1 四旋翼飞行器控制算法结构图使用经典PID控制算法实现位置控制回路和姿态控制回路。PID算法简单可靠,理论体系完备,而且在长期的应用过程中积攒了大量的使用经验,在飞行器位置和姿态控制应用中具有良好的控制效果和较强的鲁棒性,能提供控制量的较优解。控制回路包含了三个控制量,因此设计3个独立的PID控制器对位移进行控制。根据PID控制器的原理,设分别为比例项、积分项和微分项系数,有 式1-2其中,为航姿参考系统测量到的加速度积分得到的位移量。姿态控制回路的作用是控制四旋翼飞行器的飞行姿态,使其实际姿态与设定的姿态一致。姿态控制回路有偏航角、俯仰角和横滚角三个控制量,在此忽略三个通

9、道之间的耦合效应,设计3个独立的PID控制器对每个量进行独立控制。 式1-3根据PID控制器的原理,设分别为比例项、积分项和微分项系数,有控制器方程如B-4。 式1-4其中比例项系数为3.3积分项系数为0.14微分项系数为3.2。3 硬件电路设计与实现系统以R5F100LE单片机为核心,主要包括电源模块、电机驱动模块、飞行控制模块、传感器检测等功能模块,该系统硬件结构框图如图2-2所示。飞行控制模块电源模块数据转发控制器陀螺仪角度传感器红外避障传感器超声波传感器电子调速器无刷直流电机1电子调速器无刷直流电机2电子调速器无刷直流电机3电子调速器无刷直流电机4键盘罗盘图 2-2 系统硬件结构图3.

10、1飞行控制电路设计飞行控制模块是控制系统的核心部分。它在每个控制周期内实时处理传感器采集的数据和飞行器的姿态信息,完成PID控制的算法,得到四旋翼飞行器的姿态和位置信息,计算出控制量,转化为相应的控制信号经驱动电路后驱动四个电机工作,保持四旋翼飞行器稳定飞行。电路图如图2-3所示。图2-3 飞行控制器电路原理图3.2 电源模块电源由一块11.1V 2200ma的锂电池(重量约为166克)供电,在由电调降压给系统中的各个模块供5v电压并给电机提供电流,这样可满足可满足各个小系统的电源要求。3.3 电机驱动模块四电机驱动模块根据中心控制模块指令驱动各个电机到达指定转速,将电机的速度通过测速反馈装置

11、反馈给飞行姿态控制模块,控制无刷直流电机闭环控制转速,从而控制飞行状态,达到预期位置和姿态。通过电子调速器给电机提供电流,电子调速器模块电路图如图2-4所示。图2-4 电子调速器电流图3.4 传感器检测模块传感器模块是为四旋翼飞行器的飞行控制提供各种飞行参数的装置,包括测量机身三轴角速率的陀螺仪、测量机身三轴线加速度的加速度传感器、测量机身航向及姿态信息的罗盘,电机转速检测的测速传感器、飞行高度传感器和黑线检测传感器。其中角度传感器和陀螺仪电路图如图2-5和2-6所示。图B-5 角度传感器电路图图2-6 陀螺仪电路图4 系统的程序设计本系统以瑞萨MCU为核心,采用C语言对单片机进行编程。主程序

12、主要起导向和决策的作用,系统的控制总流程图如图所示。系统包括延时子程序,电机转速控制子程序,检测子程序,副翼子程序。系统控制的总流程图如图2-7所示。部分程序清单见附录A。按键开始系统初始化上升定高校正姿态前行红外传感器1是否检测到黑线?计黑线值减速降落YN红外传感器2是否检测到黑线?黑线值=3?寻点YNY图2-7 系统主程序流程图5 测试与结果分析5.1 测试设备 模拟区域:按题目要求设计。设备:秒表、卷尺。测试环境为室内。5.2 测试结果使系统运行,参照题目的各项要求进行多次实际定量测量,得到该系统的测量结果如表表B-1所示。表B-1 测试功能、测试工具及实现的情况表具体功能要求实际测试结

13、果基本部分四旋翼自主飞行器一键式启动,从A区飞向B区,在B区降落并停机;飞行时间不大于45s可以满足,飞行时间为15s四旋翼自主飞行器一键式启动,从B区飞向A区,在A区降落并停机;飞行时间不大于45s可以满足要求,飞行时间为17s发挥部分飞行器摆放在A区,飞行器下面摆放一薄铁片,一键式启动,飞行器拾取薄铁片并起飞飞行器携带薄铁片从示高线上方飞向B区,并在空中将薄铁片投放到B区;飞行器从示高线上方返回A区,在A区降落并停机以上往返飞行时间不大于30s其他最为完成发挥部分但以实现其在一个水平高度前行经测试,系统可以满足基本要求和部分发挥部分,并具有稳定前行的特点。6 总结本次设计按照题目要求,采用

14、模块化的硬件和软件设计方法,运用PID控制算法,成功地实现了飞行器寻黑带自主飞行并定点降落的要求。具有飞行稳定、运动迅速、接收信号灵敏等特点。完成了题目基本部分和部分发挥部分的要求。附录A 部分程序清单/* DISCLAIMER* This software is supplied by Renesas Electronics Corporation and is only * intended for use with Renesas products. No other uses are authorized. This * software is owned by Renesas Ele

15、ctronics Corporation and is protected under * all applicable laws, including copyright laws.* THIS SOFTWARE IS PROVIDED AS IS AND RENESAS MAKES NO WARRANTIES REGARDING * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A

16、PARTICULAR PURPOSE * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENT

17、IAL DAMAGES FOR * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.* Renesas reserves the right, without notice, to make changes to this software * and to discontinue the availability of this software. By using this softwar

18、e, * you agree to the additional terms and conditions found by accessing the * following link:* http:/ Copyright (C) 2011, 2013 Renesas Electronics Corporation. All rights reserved.*/* File Name : r_cg_timer_user.c* Version : CodeGenerator for RL78/G13 V2.00.00.07 22 Feb 2013* Device(s) : R5F100LE*

19、Tool-Chain : CA78K0R* Description : This file implements device driver for TAU module.* Creation Date: 2013/9/7*/*Pragma directive*/#pragma interrupt INTTM00 r_tau0_channel0_interrupt#pragma interrupt INTTM01 r_tau0_channel1_interrupt#pragma interrupt INTTM02 r_tau0_channel2_interrupt#pragma interru

20、pt INTTM03 r_tau0_channel3_interrupt#pragma interrupt INTTM04 r_tau0_channel4_interrupt#pragma interrupt INTTM05 r_tau0_channel5_interrupt#pragma interrupt INTTM06 r_tau0_channel6_interrupt#pragma interrupt INTTM07 r_tau0_channel7_interrupt/* Start user code for pragma. Do not edit comment generated

21、 here */* End user code. Do not edit comment generated here */*Includes*/#include r_cg_macrodriver.h#include r_cg_timer.h/* Start user code for include. Do not edit comment generated here */* End user code. Do not edit comment generated here */#include r_cg_userdefine.h#include r_cg_kongzhi.h#includ

22、e r_cg_lcd.h/*Global variables and functions*/* For TAU0_ch0 pulse measurement */volatile uint32_t g_tau0_ch0_width = 0U;/* Start user code for global. Do not edit comment generated here */uint32_t oko=0;/* End user code. Do not edit comment generated here */* Function Name: r_tau0_channel0_interrup

23、t* Description : This function is INTTM00 interrupt service routine.* Arguments : None* Return Value : None*/_interrupt static void r_tau0_channel0_interrupt(void) if (TSR00 & _0001_TAU_OVERFLOW_OCCURS) = 1U) /* overflow occurs */ g_tau0_ch0_width = (uint32_t)(TDR00 + 1U) + 0x10000U; else g_tau0_ch0

24、_width = (uint32_t)(TDR00 + 1U); /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */* Function Name: r_tau0_channel1_interrupt* Description : This function is INTTM01 interrupt service routine.* Arguments : None* Return Value : None*/_int

25、errupt static void r_tau0_channel1_interrupt(void) /* Start user code. Do not edit comment generated here */TDR05=2980; delayms(500); TDR05=3025; delayms(100); TDR05=2980; delayms(500); TDR05=3040; delayms(50); oko+; if(oko+=10)R_TAU0_Channel1_Stop();z(2040); /xianshi(); /* End user code. Do not edi

26、t comment generated here */* Function Name: r_tau0_channel2_interrupt* Description : This function is INTTM02 interrupt service routine.* Arguments : None* Return Value : None*/_interrupt static void r_tau0_channel2_interrupt(void) /* Start user code. Do not edit comment generated here */ /* End use

27、r code. Do not edit comment generated here */* Function Name: r_tau0_channel3_interrupt* Description : This function is INTTM03 interrupt service routine.* Arguments : None* Return Value : None*/_interrupt static void r_tau0_channel3_interrupt(void) /* Start user code. Do not edit comment generated

28、here */ /* End user code. Do not edit comment generated here */* Function Name: r_tau0_channel4_interrupt* Description : This function is INTTM04 interrupt service routine.* Arguments : None* Return Value : None*/_interrupt static void r_tau0_channel4_interrupt(void) /* Start user code. Do not edit

29、comment generated here */ /* End user code. Do not edit comment generated here */* Function Name: r_tau0_channel5_interrupt* Description : This function is INTTM05 interrupt service routine.* Arguments : None* Return Value : None*/_interrupt static void r_tau0_channel5_interrupt(void) /* Start user

30、code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */* Function Name: r_tau0_channel6_interrupt* Description : This function is INTTM06 interrupt service routine.* Arguments : None* Return Value : None*/_interrupt static void r_tau0_channel6_interrupt(vo

31、id) /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */* Function Name: r_tau0_channel7_interrupt* Description : This function is INTTM07 interrupt service routine.* Arguments : None* Return Value : None*/_interrupt static void r_tau0_channel7_interrupt(void) /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */* Start user code for adding. Do not edit comment generated here */* End user code. Do not edit comment generated here */- 15 -

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1