5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 140665|回复: 409
打印 上一主题 下一主题

150元,用模块DIY开源四轴飞控玩四轴(主贴更新完毕!现在是答疑时间)

  [复制链接]
跳转到指定楼层
楼主
发表于 2012-4-17 17:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这里是DIY技术讨论区,自然是讨论技术了,论坛上各方商家挺多,请理性拍砖:

首先说为什么用模块DIY开源四轴飞控:

1. 四轴不是直升机,从遥控的感觉上没多少好玩的。(为了玩那种直机遥控惊心动魄的感觉的话,请慎选四轴)
2. 玩四轴,能持久的玩下去,我能见到的,只有两条路,一个是做FPV载机,一个是玩四轴程序。
3. 想用四轴做FPV载机的,我不反对您买商品飞控,但哪天销路不好了,就不会有人维护代码,而此时如果您一直碰到的bug还没被改掉,或者您一直想有的功能一直没有,那就悲剧了。
4. 四轴程序开源的,自然可以自己修bug,自己弄不来也可以找英文官方论坛上的人帮忙,当然前提是自己英文好,bug是普遍的。
5. 开源更大大好处是,可以利用别人的代码,搭建自己想要的功能,做得好的话,把代码共享出来,为开源社区贡献自己的力量。就像之前我在一个直机和四轴飞控的讨论中提到的,现在的四轴飞控可能不具有控制直机的功能,但有代码懂代码的话,自己动手改两句,支持直机肯定可以。我在代码里反转舵机只要改一句话,没代码的飞控,就只能反装舵机。
6. 选择用模块DIY而不是购买成品,这是因为开源,许多人都在贡献最新的代码,如GPS和最新的传感器。买的成品,万一哪天要加个GPS,接线没引出来,就死翘翘了。但自己用模块DIY的飞控,升级自己的飞控,不过就是买个新传感器模块,重新焊一块洞洞板。而且哪天不想玩四轴了,所有模块都是可回收资源。
7.学习编程是一种乐趣。

当然,要DIY开源四轴还想要便宜,就要有足够的动手能力,至少要会焊接洞洞板。要玩得好,则要能看懂修改C语言,(英语也是很重要的)。

MWC全称是MultiWii Copter,最初是由一个叫Alex的外国人用arduino模块和wii鸡腿DIY出来的开源三轴项目,后来改成了现在的名字,支持的也不光是三轴,到8轴都能支持了,最新的版本还能支持飞翼。官网是www.multiwii.com

相对MK和ArduCopter等其他开源项目,在我看来,便宜是MWC这个开源项目最大的优点。硬件上最低只需要一块arduino promini和一个wii鸡腿,再加一些连线插针等。

感谢智能手机的飞速发展,现在的硬件价格已经很白菜了,比如,一个arduino nano 69元,一个MPU-6050模块 59元,其他的零碎部件加邮费,粗略估算150元,自己的MWC飞控就能做出来了。(买散件自己焊,还能省一半左右)
(待续)

[ 本帖最后由 dongfang 于 2012-4-20 15:56 编辑 ]

评分

参与人数 5威望 +9 收起 理由
pig884 + 2 很给力!
59471963 + 2 赞一个!
yaybig + 1 很给力!
yiyp77 + 2 魔界的又一个深坑
howard1977 + 2 Good

查看全部评分

欢迎继续阅读楼主其他信息

沙发
 楼主| 发表于 2012-4-17 17:32 | 只看该作者

150元飞控采购篇:

具体零件清单:
1. Arduino nano(328p)一个
2. MPU-6050 模块/测试板一个
3. 50mm*50mm以上的洞洞板一块
4. 40针,2.54mm间距单排母4个
5. 2.54mm间距单排针1个
6. 导线若干

有些便宜的东西可以多买一些,免得弄坏了没有备份,下面是我提供的参照(申明:本人和任何网店都无正常交易以外的利益关系)
3
 楼主| 发表于 2012-4-17 17:34 | 只看该作者

150元飞控硬件DIY篇:

本帖最后由 dongfang 于 2013-6-12 22:11 编辑

参照
自己安排接线布局,几点说明:
1. Arduino 的3,9,10,11线是四个电机的控制线,接电调的控制线
2. Arduino 的A4接传感器的SDA,A5接传感器的SCL
3. Arduino 的VCC接电调的电压输出,同时接传感器的VCC。四个电调(不使用开关电源的)的电压输出并联是没问题的。
4. Arduino 的GND接电调的GND,同时接传感器的GND

看不懂图的,看我的图,不过我用的不是MPU-6050模块,而是L3G4200D+MMA7455+BMP085+HMC5883L。安排好位子,焊上排针排母,把图上的相同颜色的圈,用导线连起来,导线尽量不要交叉,最后插上模块,就行了。这样做法,连烙铁的静电防护都不用做,但安全起见,请使用带接地的电烙铁焊接。

注明一下:
1. MPU-6050模块只是加速度传感器和角速度传感器,因此150元没有包含磁传感器和气压传感器,也就是不能Head Free和定高。但做最基本的MWC绰绰有余了,这个传感器芯片可以不依赖Arduino,自己计算姿态,是已知常见芯片中很强的了。
2. 我设计的接收器接口是把TDF-6A的接收器反扣在线路板上的,请判断自己的接收器是不是可以这样做,并作相应修改。

4
 楼主| 发表于 2012-4-17 17:35 | 只看该作者

飞控软件安装篇

飞控软件安装篇:
Arduino,是一个很方便的单片机模块。

1.下 载arduino的软件,在http://arduino.cc/hu/Main/Software
2.解压缩上面的包,运行arduino.exe,查看配置一下自己的sketch目录
3.用USB线把Arduino nano连上PC之后,应该会“发现新硬件”
4.在arduino中找一个Blink的sample,选择正确的端口和arduino板,编译上传,你可以发现Arduino nano就按照程序的指示,一闪一闪
5.下 载最新版本的MWC固件,在http://code.google.com/p/multiwii/downloads/list
6.解压到arduino的sketch目录
7.重新打开arduino,打开MWC的sketch
8.以上几步有问题的,请查找arduino的入门介绍资料。

这里要说的是MWC的特有配置。
MWC解压后,有两个文件夹,比如MultiWii 2.0的有:
1.MultiWii_2_0
2.MultiWiiConf_2_0

第一个是固件目录,第二个是配置软件。配置软件能配置的只是一部分参数,大部分是PID和选项。有些参数则必须通过修改代码来配置,这包括飞行器的类

型,传感器的类型选择和传感器的方向选择。

MWC代码中包含了常见的传感器的代码,但下 载下来的代码中没有一个传感器代码是被打开的,在arduino中,翻一下def.h和

config.h的内容,就应该知道MWC支持哪些传感器和飞行器了。然后把需要的传感器前面的注释去掉,比如从
//#define QUADX
改成
#define QUADX
就把飞行器改成了四轴X模式。

针对MPU-6050模块X模式,把这两句写进config.h的最上面
#define MPU6050

#define QUADX

另外还要把传感器方向的定义加在上面两句后面。

#define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = -X; accADC[PITCH]  = -Y; accADC[YAW]  =  Z;}
  
#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] =  Y; gyroADC[PITCH] = -X; gyroADC[YAW] = -Z;}


这两句话仅供参考,取决于传感器板的安装位置,可能需要对调X和Y,也可能需要把他们正负反转。但一开始,先写成这样就可以了。

再加一句
#define RCAUXPIN12

以使用第六通道


另外,由于我给出的接收器和NANO的接线不是标准接线,我用的是TDF-6A的接收器,从左往右依次是(副翼、俯仰、油门、垂直尾翼、起落架、襟翼/螺距)

对应于MWC四轴就是(ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2)而他们依次接在了(2,4,5,6,7,12)脚上,因此要修改下面这段代码
  #define THROTTLEPIN                2
  #define ROLLPIN                    4
  #define PITCHPIN                   5
  #define YAWPIN                     6
  #define AUX1PIN                    7
  #define AUX2PIN                    0 // optional PIN 8 or PIN 12

  #define THROTTLEPIN                5
  #define ROLLPIN                    2
  #define PITCHPIN                   4
  #define YAWPIN                     6
  #define AUX1PIN                    7
  #define AUX2PIN                    0 // optional PIN 8 or PIN 12



然后就是编译上传了。应该没有任何问题才对。

[ 本帖最后由 dongfang 于 2012-4-19 17:10 编辑 ]
5
 楼主| 发表于 2012-4-17 17:35 | 只看该作者

飞控调试硬件篇

上图:


不要接电调,也不要装上四轴,把已经上传好软件的飞控板,插上USB接口,再打开MultiWiiConf(MultiWiiConf_2_0.exe),选择飞控板对应的串口,按一下Start,传感器数据就应该出来了。见软件的左下方和下方图表。这一步不正确者,请检查代码和传感器连线。

此时晃动遥控器的摇杆,右上方的控制区相应的数值应该是跟着相应变化的,如果变化的方向反了,请修改遥控器的设置,如果是搞错了通道,那就要检查一下焊接了。

最初的调试要解决几个问题:传感器姿态和遥控器行程

观察右下方的ROLL、PITCH和3D模型,他们应该是和你手上的飞控板的姿态是一致的,如果是这样:
1.短时间内:晃动ROLL横滚,但PITCH俯仰发生变化,是GYRO_ORIENTATION的ROLL和PITCH错了交换。
2.短时间内:晃动ROLL或者PITCH,相应的姿态是变化了,但反了,那是GYRO_ORIENTATION的ROLL或者PITCH的正负符号错了。
3.短时间内没问题,但保持一个姿态一会儿ROLL或者PITCH发生异常,那是ACC_ORIENTATION写错了,参照以上两点修改。
4.因为用的是MPU-6050,加速度传感器和角速度传感器是固定的,因此,不需要做任何代码修改,只要把你的线路板的“正前”定义好就行了。

把遥控器设置为3D模式,晃动遥控器的各个通道,记录标准的那4个通道的最低数值(假设是1100)和最高数值(假设是1900),4个通道的最低数值取最大的一个,比如(1100,1111,1122,1090)取1122,4个通道的最大数值取最小的一个,比如(1900,1911,1922,1890)取1890。

然后回到Arduino,查找“#define MINCHECK”和“#define MAXCHECK”,并修改代码:

#define MINCHECK 1122
#define MAXCHECK 1890

或者安全起见,把数值加减20:

#define MINCHECK 1142
#define MAXCHECK 1870

然后重新编译上传。(记得在上传时不能打开配置软件。)

重新打开配置软件。遥控器油门向下到底、方向舵向右到底,解锁(ARM),这时能看到马达输出部分的数据上升了,此时推油门,马达输出上升,反之亦然。然后遥控器油门向下到底、方向舵向左到底,加锁,马达输出部分降为1000。

此时把飞控板装上四轴,接上电调电机,不要装螺旋桨,接上电池,重新测试,电机应该按照正常的方向运动,如果是,基本上硬件部分的调试就完成了。
安装参照:http://www.multiwii.com/connecting-elements

[ 本帖最后由 dongfang 于 2012-4-19 17:53 编辑 ]
6
发表于 2012-4-17 17:50 | 只看该作者
:em26: :em26: :em26: 期待
7
发表于 2012-4-17 18:13 | 只看该作者
:em17: 硬件还可以自己解决。学编程就难了哦。
8
发表于 2012-4-17 18:21 | 只看该作者
:em24: 期待,我也正有玩这个的想法,
9
发表于 2012-4-17 18:30 | 只看该作者
看上直播了:em26: 加油
10
发表于 2012-4-17 18:32 | 只看该作者
学习了:em26:
11
发表于 2012-4-17 18:39 | 只看该作者
比较高深看不懂!
12
发表于 2012-4-17 18:47 | 只看该作者
好帖,一定火
13
发表于 2012-4-17 19:16 | 只看该作者
期待LZ的后续
14
发表于 2012-4-17 19:17 | 只看该作者
太好了,感谢你的贡献!:em00:
15
发表于 2012-4-17 21:04 | 只看该作者
:em26:
16
发表于 2012-4-17 21:20 | 只看该作者
很期待啊
请LZ继续啊
17
发表于 2012-4-17 21:23 | 只看该作者
:em26: LZ太强了,不过俺还是买成品吧:em17:
18
发表于 2012-4-17 21:24 | 只看该作者
不懂但一定要顶
19
发表于 2012-4-17 21:27 | 只看该作者
好贴!
20
发表于 2012-4-17 21:37 | 只看该作者
技术贴一定要顶的,我是有心杀贼,无力回天啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表