艾巴生活网

您现在的位置是:主页>科技 >内容

科技

解读ATmega2560无人机摇杆微控制器设计方案

2024-06-03 19:04:58科技帅气的蚂蚁
随着无人机成为新的经济增长点和国民收入水平的提高,近年来在高校和民间受到更多关注。无人机(Unmanned aerial vehicle)是无人机(unmann

解读ATmega2560无人机摇杆微控制器设计方案

随着无人机成为新的经济增长点和国民收入水平的提高,近年来在高校和民间受到更多关注。无人机(Unmanned aerial vehicle)是无人机(unmanned aerial vehicle)的缩写,是一种可重复使用的无人飞行器,具有无线电遥控(包括遥控驾驶)、预设程序控制和/或基于机载传感器的自主飞行。目前大部分带无线电遥控的无人机都使用JR或双叶公司生产的专用遥控器。这些遥控器的优点是手感好,便于携带,但价格昂贵,通道少,难以满足无人机执行任务时需要更多通道的要求。少数人使用PC作为控制平台,飞行操纵杆作为控制器,可以实现更专业的功能,通道也更多,但携带不方便,需要带笔记本电脑或PC到外场调试,还必须考虑续航,同样价格昂贵,需要专业的计算机软件知识进行编程。

为了解决以上不便,我提出了一种基于Arduino的无人机控制器设计方案。Arduino由米兰交互设计学院的两位老师David Cuartielles和Massimo Banzi于2005年1月创立。Arduino是一个基于开放源代码的简单I/O平台。Arduino有类似java和C语言的开发环境,功能有AVR微控制器相关的一些寄存器参数设置。即使是对AVR单片机不太了解的朋友,也能轻松上手,设计出各种实用的电路开发系统。这是一种廉价且易于开发的方法。Arduino的整个平台,包括硬件和软件都是完全开源的。由于采用了Arduino平台,该方案可以快速开发出低成本的飞行摇杆来控制航模,体验真实飞行的感觉。因为接口多,可以做到20多个通道,不需要携带电脑就可以完成各种扩展任务。

系统原理和架构设计

如图1所示,系统框图分为两部分,即地面控制部分和控制执行部分。在地面控制部分,通过单片机读取飞行操纵杆的数据,可以得到飞行操纵杆各通道的实时电压,经过模式转换可以得到各通道的数值。上述数值经编码后通过无线数据传输模块发送出去。

空中命令执行部分:

机载无线数传接收到信号后,将命令发送给单片机,单片机对命令进行解析,转换成飞控系统常用的PPM信号,可以直接驱动飞控系统做出响应,从而控制无人机。

模块原理、设计和制造

1.摇杆信号采集原理

获取飞摇杆当前杆数的一种方法是通过摇杆的usb接口读取。因为各厂商的通讯协议不兼容,所以其中一部分必须授权,实现起来比较麻烦。另一种方法是直接获得摇杆的电位器值。其实市面上除了非常高端的摇杆,大部分都是用普通的电位器,根据可变电阻来读数。这个模块采用市面上常见的飞摇杆FLY5,外壳是拆开的。所有电位计都通过3P白色连接插座连接到电路板上。XYZ三轴用于控制飞机姿态(升力、副翼和方向),油门由拉杆控制,苦力帽可用于控制fpv相机云台,其他按钮可映射到其他通道,如空中抛物体、自动回家、切换飞行模式等。

2.杆量分析处理模块

我们采用的单片机系统采用了Arduino EGA 2560开发板。开发板是以ATmega2560为核心的微控制器开发板,有54组数字I/O,其中14组可以PWM输出),16组模数转换输入端,4组串口,采用16MHz晶振。要读取摇杆XYZ轴的电阻值,只需将电位器的电源和地连接到电调输出的5v和地,将信号线连接到Arduino板的模拟输入口。因为Arduino的AD读取精度最高是10位,所以程序中电阻值映射为0到1023的一个值,FLY5飞摇杆的分辨率大概是800~900。飞摇杆的电位器是线性的,灵敏的。在实际测试中,摇杆回到中心,打到最大最小处后,数据会有一些波动和噪声,使用卡尔曼滤波算法进行处理,可以得到一条平滑的曲线。

3.无线收发器模块

无线数传模块采用一对功率为250mW的X b e e P R O900HP无线收发模块,分别用于连接地面控制板的单片机和飞控的单片机。配备原装天线,最远可达10KM,相比传统遥控器大大增加了距离。标准串行TTL接口,将RX和TX分别连接到单片机板上的TX和RX端口。波特率设置为115200,数据传输为半双工,通信中加入CRC校验,防止数据包丢失和篡改。

4.指令解析模块

有了良好的通信协议,空中控制面板在分析地面发来的命令后,会做出相应的动作来驱动舵机。标准PPM信号的周期固定在20ms,理论脉宽(脉冲的高电平部分)在1 ms-2 ms之间,但实际上脉宽可以在0.5 ms-2.5 ms之间,脉宽对应的是0-180的舵机转角。目前大多数无人机飞行控制器的接收部分遵循1-2ms规范,数据刷新率为50HZ。本设计采用DJI公司的NAZA-M飞行控制模块。

5.失控保护模块

在空气指令执行部分的单片机控制系统中,设计了一种失控保护装置。在Arduino中设计定时器中断,每隔一段时间检查是否收到指令(正常情况下每秒应该收到50条指令)。由于飞机速度高,变化快,可以设置为一秒钟不接收任何指令进入悬停状态,原地悬停待命。在30秒内没有收到地面的命令后,应进入失控保护,切换到飞机管制员的GPS自动返回模式。

用飞行摇杆来控制更逼真,这是传统遥控器体验不到的。左手油门,右手控制升降,副翼,扭动Z轴控制方向舵。地面站配备9dBi全向天线,空中配备3dBi原装天线。野外实测控制距离为8KM。单向传输无明显延迟和方向舵颤振,适用于直升机或多旋翼无人机等低延迟控制要求,实测延迟小于20 ms,双向传输时延迟较大,甚至超过500ms,仅适用于固定翼和滑翔机等延迟要求较低的飞行器。通过对数据传输模块的分析,原因是大部分数据传输模块处于单频,只能实现半双工无线传输,发送和接收之间的切换需要延时。如果数据量大,会造成拥塞,从而增加延迟。

本文提供的解决方案具有成本低、开发方便、易于实现的优点。缺点是单向传输虽然时延低,但无法实时回传飞机的各种数据。为了解决这个问题,只能使用两对无线模块,或者可以用MIMO天线实现全双工的无线模块。后期将继续研究实现低成本双向传输和OSD以及实时数据回传的低延迟控制。