|
利用春 节和周末业余时间制作了一个用在固定翼上的飞行摇杆发送和接收方案。 用一个原来在pc上玩飞行模拟游戏的摇杆,来控制天行者进行FPV和航拍。我开始玩航模到现在已经2个月了,得到了论坛上很多热心模友和广州天河飞友群里朋友的帮助,还有我的机械师CN,在这里要谢谢他们,让我体验到了飞行的快乐。
一.介绍
简单的说,我要先介绍一下我制作的这个系统,它将实现以下目标:
n 用低成本的飞行摇杆来进行操控航模,体验真实飞行的感觉。
n 使用自己的发射和接收,取代原来的遥控和接收机。
n 不需要手提电脑,外场带着电脑多重啊,还担心手提电池续航问题。
n 实现遥控的基本功能:微调,正反舵,混控,失控保护,大小舵
n 20通道,以后再也不怕通道不够了,拉烟,发射dao dan都小菜
n 兼容平衡仪和osd,因为我有一套。。。
n 教练机接口,可以用两套遥控设备同时进行控制,实际上,开发这个系统的最初设想是让老婆大人也能不经训练直接开飞机。
二.系统架构和性能
使用摇杆代替控来操控飞机相信是很多人的共同的梦想,论坛里有前辈用pc通过 DirectX SDK中的API JoyGetPosEx 读取摇杆的信号,然后进行PPM编码,再通过声卡到控发射出去。 他们做的很棒,但我不喜欢这样的方案,原因是要利用原来的控,再带上一台电脑。 实际上我本是windows程序员,I hate PC , 我玩航模就是为了业余时间远离电脑, 如果再带一个电脑去我不如在家玩模拟飞行算了。所以我决定用单片机来完成这个不复杂的事情,简洁就是美。
下面给出这个系统的流程图:
我们在地面用单片机作为大脑,读取出飞行摇杆的杆量,经过分析处理,进行数据平滑滤波,和诸如叠加微调量,混和几个通道的比例之类的处理,通过无线串口发射出去。 飞机上的另一个无线串口和单片机收到命令后,映射成各个舵机的PWM(占空比),驱动舵机。
在具体介绍各个模块之前,人们总说有图有真相,我们先贴上地面和飞机上的实物图:
地面的摇杆和发射连接图
飞机上的接收和舵机连接图
三.各模块的原理,设计和制作
实物图看起来是不是很简洁呢,实际上这个系统用到的电子元件并不多,而且都是可以直接从网上购买的。整个过程我都没有用电焊,直接用杜邦线接插,元件清单如下:
n 飞行摇杆一个
n Arduino 控制板二块
n 数传电台一对
n 电脑键盘一个
n 各类连接线数条
我们按照上面的流程的顺序来介绍各个模块。
1.摇杆信号的获取
要得到飞行摇杆当前的杆量,一个办法是通过摇杆的usb接口读取,那得实现usb的通信协议和摇杆厂家五花八门自己定制的协议,这很麻烦。另一个办法是读取摇杆的电位器的值,实际上现在市面上的摇杆除了非常高端的摇杆用了霍尔传感,其它都是用普通的电位器,我把它当成可变电阻来读取就可以了。我从太平洋电脑城买了一个160元的赛钛客Cyborg v1摇杆,拆开来一看,实际上它的所有电位器都是用3P的白色连接插座和电路板连接的,xyz三轴用来控制飞机姿态,油门,苦力帽用来控制fpv摄像头云台,还有n多按键,用来拉烟,发射烟花,切换平衡仪状态,这么多的通道,我都想不到还可以用来干嘛了。引出电位器的线实际上只用了十分钟,完全不用电焊,直接将电位器的插头从电路板上拔下来,用延长线插进单片机的模拟输入口里去,搞掂。以后有时间还可以做个并联的母头,再插回摇杆的电路板里去。这样既能在家里飞模拟游戏,又能带出去飞航模。
2.解析和处理摇杆的杆量
这里要先介绍一下我们采用的单片机系统,Arduino 是一款价格不高、易于使用的电子平台。包括硬件和软件在内的整个平台是完全开源的,并且使用的是松散地基于C/C++ 的语言,它由一个基于简易单片机并且开放源码的计算机平台,和一套为主板编写程序的开发环境组成。
接下来我们要用arduino来读取摇杆的xyz轴的电阻值了,我们将电位器的电源和地接在电调输出的5v和地上,信号线接在arduino 的模拟口上,在程序里将电阻值映射成0 到1024 的数值, 这个廉价的摇杆的分辨率大概在800左右 ,电位器是线性的,测试了一下反应还是很灵敏的。实际测试中摇杆回中后,和打到最大和最小的地方,数据会有一些波动和噪点,用卡尔曼滤波算法处理一下,曲线就很平滑了。
[ 本帖最后由 auuuux 于 2011-2-10 16:05 编辑 ] |
评分
-
查看全部评分
欢迎继续阅读楼主其他信息
|