摘要本文对四桨碟形飞行器进行了初步的研究和设计。
首先,对飞行器各旋翼的升力做了测试,分析了升力产生效率与PWM频率的关系并选择了此样机的最优工作频率,并重点对飞行器进行了硬件和软件的设计。
本飞行器采用R5F100LE单片机为主控制器,通过四元数算法处理传感器MPU6050采集机身平衡信息并进行闭环的PID控制来保持机身的平衡。
整个控制系统包括电源模块、角度传感器模块、电子调速模块、超声波测距模块及微处理器模块等。
角度传感器和角速率传感模块为整个系统提供飞行器当前姿态和角速率信号,构成飞行器的增稳系统。
本系统经过飞行测试,可以达到设计要求。
关键字:R5F100LE单片机、角度传感、PWM频率、PID控制。
目录1系统方案 (2)1.1 电子调速模块的选择 (2)1.2角度传感模块的论证与选择 (2)1.3 超声波测距的选择 (3)1.4 电源的论证与选择 (3)2系统理论分析与计算 (3)2.1 控制理论的分析 (3)2.1.1控制方式 (3)2.1.2 PID算法 (4)2.1.3 PID计算 (4)3电路与程序设计 (4)3.1电路的设计 (4)3.1.1系统总体框图 (4)3.1.2 电机驱动电路 (5)3.1.3 HC-SR04子系统电路 (6)3.1.4电源 (6)3.2程序的设计 (6)3.2.1程序功能描述 (6)3.2.2主程序流程图 (6)4测试方案与测试结果 (7)4.1测试方案 (7)4.2 测试条件与仪器 (10)4.3 测试结果及分析 (10)4.3.1测试结果(数据) (11)4.3.2测试分析与结论 (11)附录1:电路原理图 (12)附录2:源程序 (14)四旋翼自主飞行器()1系统方案本系统主要由电子调速模块、角度传感模块、超声波测距模块、电源模块组成,下面分别论证这几个模块的选择。
1.1 电子调速模块的选择由于飞行器需要强大的动力,普通的电机不适合飞行器的开发,无刷直流电动机是采用半导体开关器件来实现电子换向的,即用电子开关器件代替传统的接触式换向器和电刷。
它具有可靠性高、无换向火花、机械噪声低等优点,更重要的是无刷电机经常被使用在控制要求比较高,转速比较高的设备上,如航模,精密仪器仪表等对电机转速控制严格,转速达到很高的设备上。
所以我们采用A2208型号无刷电机,通过电子调速器根据R5F100LE单片机控制PWM的占空比输出的大小来控制电机,使这个电子调速模块能准确实时的控制电机的转速,来控制飞行器的各项指标。
1.2角度传感模块的论证与选择方案一:采用角度传感器:这个模块实际上是加速度传感器,内部是测X,Y,Z轴方向上的三个加速度,然后单片机或者arm通过读取三个加速度值,通过反正切artan 运算来算出角度值。
因为是间接得到,所以在外部设备有抖动的状态下误差较大,一般还动过一个陀螺仪得出的角速度值,两者通过卡尔曼滤波融合,得到一个相对抗扰动的角度值。
方案二:采用陀螺仪mpu6050模块: 陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。
人们根据这个道理,用它来保持方向,制造出来的东西就叫陀螺仪。
陀螺仪在工作时要给它一个力,使它快速旋转起来,一般能达到每分钟几十万转,可以工作很长时间。
然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。
陀螺仪的作用是测定加速度的矢量,优点是不受磁场影响。
最终方案:相比较后,我们认为mpu6050模块较适合飞行器姿态的控制,最终选择方案二。
1.3 超声波测距的选择我们采用HC-SR04模块进行超声波测距,来控制飞行高度。
HC-SR04模块能提供2cm--400cm的非接触式距离感测功能,其基本工作原理为采用IO口TRIG触发测距,给至少10us的高电平信号,模块自动发送8个40khz的方波,自动检测是否有信号返回,有信号返回通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
测试距离=(高电平持续的时间*声速(340m/s))/2。
基于它的工作原理,我们决定用HC-SR04来采集数据来控制飞行器的飞行高度。
1.4 电源的论证与选择方案一:采用铅酸电池:铅酸电池(VRLA),是一种电极主要由铅及其氧化物制成,电解液是硫酸溶液的蓄电池。
铅酸电池荷电状态下,正极主要成分为二氧化铅,负极主要成分为铅;放电状态下,正负极的主要成分均为硫酸铅。
方案二:采用锂聚合物电池:它也是锂离子电池的一种,但是与液锂电池(Li-ion)相比具有能量密度高、更小型化、超薄化、轻量化,以及高安全性和低成本等多种明显优势,是一种新型电池。
在形状上,锂聚合物电池具有超薄化特征,可以配合各种产品的需要,制作成任何形状与容量的电池。
该类电池可以达到的最小厚度可达0.5mm。
相同容量的铅酸电池比锂聚合物电池便宜很多,但重量比锂聚合物电池重很多!而飞行器的载重能力有限,所以最终选择方案二锂聚合物电池。
2系统理论分析与计算2.1 控制理论的分析2.1.1控制方式本次比赛的难点在于如何使飞行器在空中较好的实现平衡控制,然后使其进行巡线飞行和降落。
文中所研究的四旋翼结构属于X型分布即螺旋桨M1和M4与M2和M3关于X轴对称螺旋桨M1和M2与M3和M4关于Y轴对称如图1所示对于四旋翼的模型践行简单的数学物理建模。
通过陀螺仪返回的留个数据进行四元数拟合处理得到空间欧拉角。
然后返回给系统进行闭环PID控制。
2.1.2 PID算法当被控对象的结构和参数不能完全掌握或得不到精确的数学模型,控制理论的其他技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID 控制技术最为方便. 即使当我们不完全了解一个系统和被控对象,或是不能通过有效的测量手段来获得系统参数时,也适合采用PID 控制技术.PID 控制器就是根据系统的误差,利用比例、积分、微分计算。
2.1.3 PID计算PID计算方式如图2-1所示。
图2-1 PID计算方式经过测算和推导,我们得出了PID的计算公式为2-1。
(2-1)在该飞行器系统中,PID各个参数经过调试得出:K=1P=300I=0D=1253电路与程序设计3.1电路的设计3.1.1系统总体框图系统总体框图如图3-1所示。
图3-1系统总体框图3.1.2 电机驱动电路图3-2电机驱动系统电路3.1.3 HC-SR04子系统电路图3-3 HC-SR04子系统电路3.1.4电源电源由变压部分、滤波部分、稳压部分组成。
为整个系统提供5V或者12V电压,确保电路的正常稳定工作。
这部分电路比较简单,都采用三端稳压管实现,故不作详述。
3.2程序的设计3.2.1程序功能描述根据题目要求软件部分主要实现传感检测和PWM输出的更改。
(1)传感检测功能:设置高度和角度的输出信号类型。
(2)PWM输出:根据检测的数据,通过PID算法更改PWM的输出。
3.2.2主程序流程图图3-4 主程序流程图4测试方案与测试结果4.1测试方案1、硬件测试测量飞行器距离地面距离使用超声波模块。
之前没有使用过瑞萨单片机,所以先用51单片机编程用1602显示超声波所测就离进行调试。
然后再将51单片机的程序改到瑞萨单片机里。
飞行器的不确定因素很多,最先使用电源箱进行测试比使用电池更容易控制。
为防止飞行器飞出伤人,用四根结实的尼龙绳将飞行器的四个底座固定在地面进行基础测试。
2、软件仿真测试配置仿真器图4-1 选择仿真器图4-2 配置仿真器(1)如图4-1所示,CubeSuite+ 适用多种仿真器(IECUBE、E1、E20、EZ Emulator、 Simulator),在 Project Tree Panel 中单击 RL78 Simulator 右键,选择 Using Debug ToolRL78 E1,为本次调试选用仿真器 E1 。
(2)如图4-2所示,在 Project Tree Panel 中双击 RL78 E1(Serial),开启 Property 窗口,设置 E1 输出 5V 驱动电源。
下载目标文件目标文件就是由用户程序编译成的二进制文件,扩展名是 *.lmf。
CubeSuite+面板上的 Download (快捷键 F6 ) 按钮,或从菜单中选择Debug– > Build & Download ,即可开始下载目标文件。
执行与停止程序下载目标文件后,自动启动如下窗口。
源程序区执行按钮汇编程序区图4-3 CubeSuite+ 调试主面板(1)执行程序:点击主面板工具栏上的执行按钮(快捷键 F5),或从Debug 菜单中选择 Go。
(2)单步执行:点击主面板工具栏上的 Execution Step in 按钮(快捷键 F11),或从 Debug 菜单中选择 Step in。
( Execution Step over 按钮(快捷键F10)也是单步执行,但执行时,将整个函数作为一步,跳过函数实现代码。
)(3)停止执行:在程序执行期间,按停止按钮(快捷键 Shift+F5),或从 Debug 菜单中选择 Stop。
(3)重启:点击重启钮(快捷键 Ctrl+F5),或从 Debug 菜单中选择 CPU Reset,无论程序是否在执行,都可以执行重启操作。
调试功能变量监控功能(1)观察变量:在代码中,选择用户需要观察的变量,单击右键,选择 Register to Watch1,将变量添加到 W atch 1窗口,这样就可以观测到该变量的当前值。
随着程序的执行,变量的值也会刷新。
图4-4 启动变量监控图4-5 Watch 窗口(2)修改变量值:在 Watch 窗口的显示变量值(Value)区域,双击需要改变的变量值,即可修改该变量的值。
通过这种操作,就可以在调试中很方便地测试变量的各种数值,而不必重新修改和编译程序。
这个监控功能也可以用来观察和修改 SFR 的值。
Action Event 功能通过简单的设定,Action Event 功能可以方便的显示调试中的变量的变化。
(1)开启 Action Event 功能:在代码中,选择用户需要观察的变单击右键,选择 Register Action Event,开启 Action Event 对话框,设定输出名称。
○1输出名称○K图4-6 开启 Action Event 功能图4-7 3.8 Action Event 对话框设定完成后,该变量的行就会显示红色,并且在行号旁边显示 Action Event 标志。
程序执行时,在 OutPut Panel 中,根据程序的运行情况,会输出该变量的变化过程。
(2)关闭 Action Event 功能:程序停止时,在设定变量的行,选中 Action Event 标志,单击右键,选择 Delete Events ,关闭 Action Event 功能。