自制MWC无人机飞控教程
MWC固件简介
MWC是MultiWii Copter的缩写,它并不是指硬件产品,而是开源固件。此固件的原创作者是来自法国的Alex,他为了打造自己的Y3飞行器而开发了最初的MWC固件(原创交流帖与官网的链接在最下方)。几年来经过许多高手的参与及共同努力,开发进度越来越快。现在MWC已经基本成熟,可以支持更广泛的硬件平台、外围设备及更多飞行模式,让运行MWC的飞控硬件成为国外开源飞控市场上占有率最高之一的产品。
MWC固件支持的硬件平台
MWC固件是用Arduino IDE来编写,支持Arduino发布的几种主要的AVR开发板Pro Mini/Pro Micro/Mega等,也可支持使用STM32的Arduino兼容平台,但STM32目前无法体现出任何性能与端口上的优势,所以仍以AVR为主流,成熟、够用且稳定。
MWC固件支持的外围设备
1 蓝牙调参模块 - 用安卓手机/平板电脑来调试参数(推荐使用)
2 OLED显示屏模块 - 可作为机载状态/参数显示器,也可搭配遥控器进行参数调试(不建议使用)
3 I2C-GPS导航板 - 328P飞控可通过它连接GPS,用于定点/自动返航以及航点飞行功能
4 GPS - 用于定点/自动返航
5 OSD - FPV必备,可显示飞控与GPS数据
6 数传模块 - APC2XX/Xbee/3DR Radio等,用于遥测功能
7 光流模块 - 用于定点飞行
8 声呐模块 - 用于低空高精度定高飞行
MWC固件支持的飞行器模式
下载最新的固件可支持以下飞行器模式,可自由在源代码中选择所需的模式并上传到飞控。
◆GIMBAL - 独立的云台稳定器(非飞控用途)
◆SINGLECOPTER - VTOL单轴
◆BICOPTER - 2轴阿凡达飞行器
◆Tricopter - Y型3轴
◆QUADP - 经典4轴+模式
◆QUADX - 4轴×模式
◆Y4 - Y型4轴
◆Y6 - Y型6轴
◆HEX6 - 6轴+模式
◆HEX6X - 6轴×模式
◆OCTOX8 - 8轴×4模式
◆OCTOFLATP - 8轴水平+模式
◆OCTOFLATX - 8轴水平×模式
◆FLYING WING - 飞翼
◆VTAIL4 - V型尾翼4轴(飞行方式同×模式,转向更灵活,主要作为固定翼来飞行)
◆AIRPLANE - 固定翼
◆HELI_120_CCPM - 直升机/120°倾斜盘,开发中,不建议使用
◆HELI_90_DEG - 直升机/90°倾斜盘,开发中,不建议使用
MWC固件对遥控器的规格要求
◆MWC需要至少4通道,但4通道遥控器无法切换飞行模式,强烈推荐6通道以上并带有至少两个开关通道
◆需具有子微调(Sub Trim)及通道行程(ATV)调整功能
◆需支持固定翼模式(无混控模式) CRIUS SE标准版飞控用于多轴飞行器时可实现以下基本功能
◆ACRO(无自稳,与KK类似)
◆自稳
◆定高
◆锁定航向
◆HeadFree(无头模式,MK称"CareFree",ACM称"Simple")
可通过遥控器开关通道指定为几项基本功能的组合,例如:
自稳+定高+锁定航向,可短时间脱控;
自稳+定高+锁定航向+定点悬停*,可完全脱控
自稳+定高+锁定航向+自动返航*
带有*表示需要连接I2C-GPS导航板与GPS接收机,可以另咨询
MWC飞控N年历史了,玩过航模的很多都做过,成本不高,制作简单,稳定性挺好,设置方便,易于上手等不少优势注定这款飞控对新手来说经久不灭啊!百度搜索教程虽然也不少,但没有几个系统的详细的,如果一点不懂的小白,要费很大功夫整理才能摸索出来。
这款飞控支持很多模型:三轴、四轴、六轴、八轴、单旋翼、双旋翼、固定翼、V尾、甚至云台等,都支持!这里就整理了常用的四轴无刷、四轴有刷、固定翼固件。鉴于很多重复的设置,这三样一块写,想做的仔细看,注意代码修改和接线区分就行了。末尾附件也有修改好的三种代码,各位可以测试下,我们用的是pro mini 328p和gy521最低配置,这种DIY的飞控练手玩玩即可,再贵了真不如买成品了,成品有大把的好飞控。
教程最下面有需要用到的所有工具下载!
一、焊接模块
就两个模块,焊接只需要简单接线就行,下面把各种飞机的接线上图,按照图示接好线就行。


有刷电机的正极直接连动力电池,负极连MOS管,还有有刷电机尽量并联104电容和二极管,图中没画,当时忘了。

二、刷固件
刷固件我用的是CH340,另外也可用PL2303引出了DTR(Data Terminal Ready数据终端就绪,表示终端设备准备好了可以接受数据)接口,一般的串口模块也能刷,不过必须要把握时间重启。我有修改过的模块没用过其他的,没手动重启过,具体怎样手动重启,这个去百度下吧,应该也很多。CP2102我也有,不过不好用,就没用。
CH340和PL2303很便宜,不过一般买回来是没有DTR接口的,这个芯片有这个接口,一般没引出而已,我百度下了引脚定义,引出了DTR。这样直接连接PRO MINI 328P就行,不用重启,CH340或PL2303驱动请自行百度。具体引出效果看下图:

这样分别连上 5V-VCC GND-GND RX-TX TX-RX DTR-DTR,一共5根线,连好就可以刷固件了。
刷固件图:

三、电脑安装所需要的编程软件JAVA和arduino
附件的工具中有JAVA和arduino安装程序,32位系统和64位系统的程序都有,注意区分安装即可,这里就不详细说了。先安装JAVA再安装arduino。
1.下 载arduino的软件,在http://arduino.cc/hu/Main/Software
2.解压缩上面的包,运行arduino.exe,查看配置一下自己的sketch目录
3.用USB线把Arduino nano连上PC之后(或者用USB to TTL模块插入PC的USB口之后),应该会“发现新硬件”
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的入门介绍资料。
四、arduino设置MWC飞控
下面连接中有修改好的,可以省略修改步骤直接刷到mega328用,也有官方原版的2.3和2.4程序。由于当时用2.4固件时不正常,修改好的全是2.3版本的,一样用。
(一)MWC程序的概况
首先我们从整体上了解一下MWC程序的概况,MWC 程序开源,但是并不简单。它里面的内容不单单针对四旋翼,而是涵盖了小型无人机中几乎所有的内容,四轴,八轴,直升机,阿凡达等等。
研究程序的意义就不多说了,喜欢某种硬件的可以看看硬件程序;喜欢算法的可以研究其导航算法, 控制算法;喜欢应用的可以在此基础上附加功能等。简而言之就是任何方面的爱好者都可以各取所好。这里分析的内容基于 MWC2.3 版本(2.4 版本已经放出,但并非稳定版本),希望能对爱好无人机及开源的朋友提供一些参考内容。自己也“趁机”整理一下所学内容。
大家对四旋翼比较有兴趣,因为其是八旋翼等的基础,同时比较容易入手,不会像直升机那样机械结构比较复杂。
MWC2.3 版本改动内容比较大,
2.3 文件个数增多,结构更加合理。2.3 版本之前文件数更少,很多声明和函数都积压在一个文件下。以 MultiWii.cpp 和 MultiWii.h 为例,.h 文件定义大量重复使用,多文件使用的变量和结构体,使得 cpp 文件可读性提高。
2.3 版本当中每个文件都有相应的作用,知道文件的作用对于分析算法,寻找变量,修改算法等都有着比较重要的意义。
MultiWii 文件中包括重要参数声明和初始化,main 函数
GPS 文件中包含不同硬件下,不同模式的导航算法
IMU 文件中包含姿态算法,以及涉及到传感器部分的功能算法,如 baro 定高算法等
Output 文件中涉及到输出表格,即将控制算法计算值转换为 PWM 波输送给电调控制电机响应。RX 文件中涉及到接收并处理由接收机传回的遥控器信号。
Config 文件对整个软件系统进行配置,包括无人机模型类型,传感器类型,控制算法类型等内容。这个文件是了解和使用 MWC 的关键文件之一。
def 文件对程序中进行判断的标志进行定义。从该文件中可以了解到整个结构框架。
了解 MWC 各个文件的作用是必要的,尤其对于想要分析算法的朋友来讲。这样会省去很多的麻烦。
(二)MWC程序代码的修改步骤
修改的具体步骤按以下图示一步一步操作就行,有需要注意的地方我会说明:









如果是固定翼要修改下这里

如果是有刷四轴要修改下这里。

这里是调整舵机方向的,比如用在固定翼上时,舵机的左右摆动不对,可以修改这里。
哪项不对,就改哪项的符号(X或Y前面的负号),例如发现 ACC里PITCH方向不对,那就把上面的accADC[PITCH] = -Y改成accADC[PITCH] = Y,其他同理。

修改完保存后验证一下,如果有改的不对的地方,软件会有提示!
验证通过后就可以准备刷固件了。
五、GUI调试MWC飞控
固件刷完,等待重启,然后打开附件中MultiWii_2_3(***) \ MultiWiiConf文件夹,里面有各系统的调试软件,按自己电脑系统打开就行。

不要接电调,也不要装上四轴,把已经上传好软件的飞控板,插上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,加速度传感器和角速度传感器是固定的,因此,不需要做任何代码修改,只要把你的线路板的“正前”定义好就行了。
不接电机,仅通过电调给飞控板供5V电,USB转串口数据线接到飞控板上,打开遥控器,飞控板通电。再打开GUI调试窗口,摇动手柄,看这里的油门通道(THROTTLE)、方向通道(YAW)、升降通道(PITCH),副翼通道(ROLL)的最高值,最小值和中立点值。要求各通道最小值小于1100,最大值大于1900,中立点1500+-10。达不到这个要求,请调节遥控器的通道行程设置ATV(EPA),120-125%,及微调中心点或SUB TRIM,来达到以上要求。
MWC 通道检查
MWC 通道低值


MWC 通道高值
如果不能满足这个要求,就得改动原程序了,一般多数是最大值不能满足要求,在1850-1900之间,用Arduion打开原程序,
在主程序模块里用Find命令找到这里,

MWC 原程序解锁门限
把MAXCHECK 1900 改为1850 ,重新给板子写程序,不到10秒钟的事,呵呵。
各通道的正反向一般是,油门最低,方向最左,升降最下,副翼最左,此时各通道对应最低值,小于1100。经过这些调整,板子的解锁、闭锁,各通道正反向及中立点就没问题了。
开启MWC飞控自稳模式。
不开启自稳模式,那就和KK没区别了。如果没有接飞控5通道,这里就设置为

用鼠标直接点亮那个方块,再点击

,写到飞控的EEPROM里。表示任何时候都开启自稳。

如果接的是2段开关,设置为 ,表示在开关低高位开启自稳。接的是3段开关,
就设置为全亮,表示在开关低中高位开启自稳。下面的依次为BARO气压定高MAG
磁定向 云台舵机,快门等功能,设置方法与自稳功能类同。


MWC I参数归零




5、在GUI里通过点击 ,初步校准ACC。方法是尽可能水平放置飞控板,点击CALIB_ACC,几秒后,ACC ROLL和PITCH值归零,Z 值回到500(BMA180)或250(BMA020)或200(NK,鸡腿),此时板子左右前后倾斜超过15度左右,那个状态指示灯闪动,说明ACC初步校准好了。还有,那个状态指示灯闪动时候,是不能解锁和闭锁的。也说明此时板子未水平或未校准ACC。
6、第一次试飞前,陀螺和加速度传感器(GYRO & ACC)一定要校准。方法是:四轴尽可能地上水平放置,打开控,飞控板通电,不要动四轴,在最初的几秒里,飞控板有个自检过程,这个时候晃动四轴,可能导致自检不成功,状态指示灯会一直闪亮,不能解锁。
待自检完成后,那个灯停止闪亮,控油门最低,方向最左,升降最下,稍等,指示灯闪亮,陀螺校准完成;接着油门最高(注意,现在飞控未解锁哦),方向最左,升降最下,稍等,指示灯闪亮,加速度校准完成;
7、以上准备工作完毕,可以解锁试飞了。MWC飞控1.8版本后解锁有2种方法:一是油门最低,副翼最右;二是油门最低,方向最右。解锁后,状态指示灯常亮,推油试飞吧。
8、仔细调整通道微调和PID参数,使四轴可以平稳悬停
飞起来后,还得仔细调整方向、升降、和副翼通道的微调,尽量使四轴可以保持平稳悬停。如果微调到头还不行,就得重新校准ACC。这里有个窍门,四轴往哪个方向偏,校准ACC时,把四轴在那个方向略垫高些。
MWC飞控源程序默认的PID参数不一定适合你的四轴,还得根据你的四轴仔细调整。我的经验是,四轴轴距大于300mm,ROLL、PITHCH、LEVEL等P参数可以调大些。
四轴按此图设置:

固定翼按此图设置:

另外此软件的使用说明看下面几张图:



下面链接中还有MWC程序的中文注释,想深入研究不懂英文的可以按照注释研究下。教程到此结束。
1. MWC 程序最新版本,附带对应的GUI设置程序
http://code.google.com/p/multiwii/downloads/list
2. Arduino 编辑和上传程序的必备工具
http://arduino.cc/en/Main/Software
3. FTDI USB转TTL工具驱动
http://www.ftdichip.com/Drivers/VCP.htm
4. MWC GUI程序需要JAVA虚拟机支持,可前往JAVA官网下载
http://java.com/zh_CN/download/manual.jsp?locale=zh_CN
5. RCGruop论坛的MWC帖,最新消息及讨论 http://www.rcgroups.com/forums/showthread.php?t=1261382
http://www.rcgroups.com/forums/showthread.php?t=1340771
6. MWC官网,DIY指南、常见问题解答及官方论坛
http://www.multiwii.com/
7.工具及软件网盘打包
http://pan.baidu.com/s/1i4JgD97 密码:zz6w
备注:PID调参和蓝牙模块的教程后续再出。
最后感谢诸位网上MWC教程的写作者,一些引用之处万分感谢!