用开源飞控套件做一架Mini四轴飞行器

标签:MWC 四轴 飞控 开源 套件

飞鱼BH1JSS 发布于 2015-03-31 15:09

IMG_0423[1].JPG
四轴飞行器已经不是什么新鲜的东西,世界上很多不太平的地方也用某疆的四轴做侦察,你只要花几千块钱,就可以买到一套“进入白宫同款”的四轴无人机。不过,要是能亲手制作一架比手掌还小、仅重30多克的Mini四轴飞行器,一定会更有成就感吧。

本教程将会教大家用一套基于Arduino平台的开源四轴飞行控制系统(飞行控制系统,简称“飞控”。下同),来制作一架Mini四轴飞行器。

材料准备:
MWC飞控(PCB已经做四轴飞行器的形状)*1
716或720空心杯电机*4
45mm,孔径0.75mm螺旋桨*4(正反桨各2只,共4只)
300mAh 25C 3.7V锂电池*1
USB转TTL下载器*1
HC-06蓝牙模块*1
2.54mm杜邦线若干

建议可选
AR6100e DSM2制式微型接收机 *1
航模遥控器:华科尔Devo 7e或Devo 10(可刷入开源的Deviation固件,兼容各种制式,功能无比强大)

工具:
30-50W尖头电烙铁
热熔胶或20mm宽3M双面胶

Step 1: 了解四轴飞控原理

未标题-1.png 未标题-3.png QQ截图20150331155324.jpg
四轴/多轴飞行器的控制原理并不复杂,以四轴为例,四个桨旋转起来构成一个四旋翼平面,靠飞控系统控制每个动力组的输出,来控制整个四旋翼平面的倾斜,靠升力的分力来改变飞行方向。我们都知道螺旋桨旋转时会对机身有反扭力,因此四轴飞行器的四个螺旋桨是相邻两个方向相反,相对两个方向相同,这样就可以克服整体的反扭力,保持稳定。如果是要水平方向转动,只要让相对两个同向的螺旋桨加速,另外两个减速,打破反扭力的平衡,但总升力保持不变,就可以慢慢转动了。

飞控是多轴飞行器最核心的东西,最基本的飞控是一个3轴陀螺仪,感知飞行器在X、Y、Z三个轴向上的位移变化,控制各个电机补偿动力以保持整个飞行器的平衡。
MWC飞控全称是MultiWii Flight Controller,最早是作者用Wii体感增强手柄(或Nunchuk鸡腿手柄)里的传感器加上一片Arduino Pro mini发起的一个开源项目。支持和贡献代码的人越来越多,性能越来越完善,也有商家逐渐把它做成半商品化的飞控,比如我们这次用到的由“长江智动科技”制造的这款Mini WMC飞控。它的MCU是一片Atmel 328P,和主流的Arduino一样的,传感器芯片是MPU6050三轴陀螺仪+三轴加速度计,另外板上还自带电源管理芯片以及驱动空心杯电机用的MOS管,因此可以方便快速的完成一架Mini四轴飞行器的搭建。

Step 2: 焊接TTL串口下载器、电池、接收机等接口

IMG_0427.JPG IMG_0429.JPG IMG_0431.JPG IMG_0432.JPG
在材料包中找出一条2.54mm的排针,这些排针是给飞控上的各种接口准备的。你可以看到飞控的前端(标有▲的方向是前端)有5个孔,这里是TTL串口的位置,上面标注有GND、5V、TX、RX、DTR。在一条排针上掰下5根针的一段,将针短的一头插入5个孔中。放心,肯定合适,这是2.54mm标准(1/10英寸)的,这时你需要翻过来,在飞控底面将露出来的短针焊接在焊盘上,这样,TTL接口就准备好了。这里可以连接USB-TTL下载器以及蓝牙模块等。

同样的方法,你还需要掰下6针排线,焊接一个接收机接口,标注有GND、VCC、YAW、THRO、PITCH和ROLL,他们的意思是地线、供电线以及方向、油门、俯仰和横滚通道(是不是晕了?后面)

在飞控板的后端,还有两个孔,是电源的+/-极,同样掰下2针排线,焊到孔里,在这里插上小电池,可以给整个飞行器供电。

Step 3: 安装空心杯电机

IMG_0434.JPG IMG_0425.JPG IMG_0420.JPG
这又是一个焊接的活,如果你的焊工不合格,那么需要考虑一下是不是先考个焊工证啦:P(我回头会在我的日志中介绍一些电子焊接的小技巧,敬请关注)

拿到Mini飞控板后,可以看到四个“腿”末端有四个圆孔,这里是安装空心杯电机的地方。将小电机插入圆孔,电机轴朝上,圆孔内圈的PCB板上有一圈金属焊盘,在这里可以用电烙铁上锡,将小电机的金属外壳和焊盘固定在一起。注意,固定电机时要让电机和飞控板之间保持垂直角度,四个电机固定的位置要一致,保持四个电机的高度在一个水平面上。

固定好4个电机,翻过来可以看到飞控的四条“腿”上有电机正负极焊盘,标注为VCC和GND,我们这里可以先将每个电机的正负极引线焊接在焊盘的VCC和GND上,一般红色线是正极,接VCC,蓝色线或黑色线是负极,接GND。后面我们可能会发现电机转向不对,这里很可能要焊开重新做。暂且不管,现在不焊不转的。

找出你的四个小螺旋桨,看仔细,他们两两是不一样的,分别是两个正桨,两个反桨,按照下图的布局,根据转向考虑好安装方式吧。

小常识:螺旋桨每个扇叶都是弧面的,弧面凸起的一面应该向上(或向前),叶片翘起的一边是转动的前进方向,这样你就可以分清四轴的每个螺旋桨应该怎么安装了。

Step 4: 准备好你的Arduino IDE

QQ截图20150331161455.jpg QQ截图20150331161430.jpg QQ截图20150331161341.jpg
现在,你的Mini四轴的完成度达到了75%,需要连接电脑下载飞控源码了。
你需要找一台PC或Mac机器,里面已经装有Arduino IDE的,做好准备。将下面这个文件下载解压,把得到的“MultiWii”文件夹放到Arduino IDE的“程序库”里。Arduino IDE的程序库在哪里?你可以看看Arduono的“文件-参数设置”,这段如果看不懂,那么说明你还不了解Arduino,先问百度或者等我慢慢处教程吧:P

拷贝完成后,重新打开一下Arduino IDE,这时就可以在“文件-程序库”菜单中看到“MultiWii”项目,戳之,稍后会打开一个新的Arduino IDE窗口,内置好多标签,这就是MWC飞控的整个项目的源码。

Step 5: 下载MWC飞控源码

QQ截图20150331164541.jpg QQ截图20150331164743.jpg QQ截图20150331164811.jpg
拿出你的USB-TTL下载器,它一端是Mini USB接口,连接你电脑的USB线,这货通常在联网的情况下会自动找到驱动程序,如果找不到驱动,那就在这里下载安装吧。另外一端的五根或六根插针要用杜邦线连接你飞控的TTL接口,VCC接飞控的5V,GND接GND,TX接飞控的RX,RX接飞控的TX,DTR连接飞控的DTR,这样就可以了。

给小四轴插上电池,打开开关(飞控上有两个开关,一个是充电开关,一个是电源开关,都打开),连接TTL下载线和电脑USB,在Arduino IDE中打开MultiWii项目,在“工具-板卡”中选择“Arduino pro Mini(5V,16Mhz)”,串口号选择好,就可以准备下载了。

下载前,可以先校验一下,就是Arduino IDE工具栏左上角的“对号”,如果校验不成功,那么恭喜你,可能你需要Arduino IDE 1.0x的版本了。因为MWC飞控是在2013年之前的项目,调用的库文件较老,如果你的Arduino IDE比较新,可能会有问题。到Aruiduo官方网站下载1.0x版本吧。

如果校验没有问题,在Arduino IDE上点击“向右”的按钮,就开始下载了。下载过程中,TTL下载器会快速闪动,下载过程会有一个进度条。下载结束后,飞控上的蓝色指示灯会闪烁一下。

下载:USB-TTL下载器驱动

Step 6: 在MultiWiiConf软件中检测四轴

QQ截图20150107163941.jpg
现在,我不得不告诉你,我给你挖了个坑,如果你只花了200元买了套件,而套件里只有USB-TTL下载线和蓝牙模块,那么很可能需要再花几百块填坑。有一句名言叫做“一如航模深似海,从此节操是路人”,就是这么回事。在此步骤调试的时候,你可能发现确实需要一套航模用的遥控器和接收机,在MultiWiiConf中你可能看到很多开关设置、通道行程设置等等,特别是四轴飞行器一般都有锁定和解锁的设置,以保证上电后的安全,没有遥控器还真有点麻烦。好吧,我回头会出一个详细的遥控器选购和设置的攻略(还有一句话叫做“带人入模,胜造七级浮屠”。阿弥陀佛,又是一坑)

这里下载MultiWiiConf软件,这是一个绿色软件,不用安装,不过如果你双击它没反应也很正常,那是因为你的电脑里没有Java环境,到这里下载安装Java环境,然后就可以正常运行了。

用USB转TTL下载线Mini四轴和电脑的USB接口,在电脑上打开MultiWiiConf软件,你会看到左侧有PORT COM,下面会出现一个COM口,就是你的USB转TTL下载器的COM口,点击它,稍等片刻就会连接成功。蓝色LED灯会在一阵快速闪动之后熄灭,表示已经初始化完成。

软件的上部是飞控的PID设置窗口,点按READ可读取到飞控的PID参数。在软件的下半部是传感器姿态检测窗口,点按START进行数据读取,这时马上会看到所有传感器的输出状态,

飞行前,需要观察和调整必要的选项,主要包括以下几个方面:设置通道正反向,校准通道中立点和通道行程;检查传感器输出信号是否正确(如果不正常则代表飞控有故障);测试启动电机后,飞控动作是否正常。所以在这里,就要用到遥控器了。

下载:
WMC飞控PC端设置工具MultiWiiConf
JAVA环境

Step 7: 遥控器设置与解锁

IMG_0436.JPG QQ截图20150331182640.jpg QQ截图20150331182735.jpg
如果你的套件中有接收机,并且有遥控器,那么需要将接收机连接在四轴的控制输入端口上。还还记得四轴上GND、VCC、YAW、THRO、PITCH和ROLL的几根插针么?你的接收机上通常也会有这些通道:THRO代表油门通道,ROLL或AILE代表滚转(副翼)通道,PITCH或ELEV表示俯仰(升降)通道,YAW或RUDD表示方向通道,找到这些通道的信号线,通常标记像一个小长城的垛口一样的那个针,用杜邦线分别连接到YAW、THRO、PITCH和ROLL四根针,飞控上的VCC和GND连接到接收机任意一个通道的+/-极上即可,所有通道的正负极都是并联在一起的。现在,你再打开四轴电源,接收机的灯就会亮起来。如果你的接收机从来没用过,那么还需要跟遥控器“对码”(Banding),通常是将对码线插在指定通道上,再打开遥控器就可以完成绑定。各家遥控器厂商的操作不尽相同,你需要看看说明书啦。总之我以后会出一篇详细介绍就是了。

当遥控器绑定了接收机,接收机也正常连接在四轴飞控上之后,现在你再插上USB-TTL线,将四轴连接掉电脑的USB接口,打开MultiWiiConf软件,这是你就可以看到软件的右上角的通道指示器中的蓝条可以随着遥控器摇杆的晃动而移动。对于这台四轴来说,需要的就是THRO、PITCH、ROLL、YAW四个通道,我们需要做的就是看看这四个通道的移动是否跟遥控器上的这四个通道一致,如果顺序不一致或者方向不一致,都需要调整了。

遥控器对于四轴飞行器很重要的功能就是解锁,对于这套WMC飞控来说,解锁动作是油门最小(THRO通道数值在1100以下)同时方向最大(YAW通道数值在1900以上)参考上图,图中的日本手、美国手什么你可以忽略了,看软件中的具体通道吧。解锁后,Mini四轴上的蓝灯会常亮,这时轻轻推动油门,电机会转动起来。这时如果你发现电机转动的方向不对劲,那需要回到第三步那里,检查一下空心杯电机的正负极,调换一下就可以改变电机转向了。(四个电机的正确转向见上图)

Step 8: PID调整,加速度计校准,准备起飞!

SOTA-4X-MWC GUI 设置备份最稳定.JPG
首次起飞前需要调整PID,“PID”是比例、积分、微分的缩写,学自动化、控制论什么的童鞋一定会知道。
针对四轴飞行器来说,P是纠正飞行器回到初始位置的力度大小。这个修正力度是一个比例值,反映初始位置偏差值减去飞控输入控制方向变化的组合。较高的P值会产生较强的修正力去抵抗飞行器位置的偏移。如果P值太高,在飞行器返回初始位置的过程中会过冲然后再次往反方向修正,接着再次进行回到初始位置的补偿。这会导致飞行器出现持续振荡,严重的话会完全破坏平衡。
I是对角度变化进行采样与取平均值计算的时间周期。存在偏差时,返回到初始位置有个修正的过程,在修正过程中力度会越来越大,直到达到最大值。较高的I值会增强稳定的效果。增大I值可以减小漂移和提升稳定效果,但过大的I值会延长稳定过程的周期,同时也会降低P的效果。
D是飞行器回到初始位置的速度。较高的D值(数值与效果相反,较高的D值参数上会更接近0)意味着飞行器会快速返到回初始位置。增大D值(增大效果等于减小设定的参数值)会提升修正的速度,也会提升产生修正过量与振荡的几率,同时也会提升P的效果。减小D值(减小效果等于增大设定的参数值)会降低由偏差状态返回初始位置的振荡,恢复到稳定效果的时间变长,同时也会降低P的效果。

调整的时候,先点按MultiWiiConf中的的Read按钮,读取当前版本固件中的PID的初始值。遥控器解锁,用手小心抓着飞行器,增大油门直到接近悬停的位置,试着把它向前后左右倾斜,你会感觉到飞行器会产生一个反作用力,压制人为造成的倾斜。改变ROLL/PITCH两个通道P值的大小,直到飞行器变得难以随意倾斜。YAW的P值可以比ROLL/PITCH两个通道的P值大一些,因为四轴飞行器是靠相对两个电机的反扭力不平衡来旋转方向的,我们的安装、外接的环境气流都会造成不平衡,我们希望方向锁定的更稳一些。

是不是有点晕了,没关系,我在这里给大家一个Mini四轴PID设置的推荐值,大家按照最后一张截图设计基本就可以飞了。

小提示,在MultiWiiConf中改变数值的操作是这样的,用鼠标左键按住要改变的数值,然后左右拖动鼠标,改到合适的数字后松开左键即可,最后别忘了点击“WRITE”按钮上传修改过的PID数据。

除了改变PID参数,在最后试飞前,还需要校准加速度计。将四轴飞行器放在一个水平的地方保持静止,保证四个螺旋桨的平面与真正的水平面平行,这时点击“CALIB_ACC”按钮,大约5秒钟后,蓝灯快速闪烁,校准就完成了,你可以看到软件右侧的水平仪与飞行器同步,ROLL和PITCH的角度都恢复成了0。

最后说说用遥控器控制四轴飞行器的飞行:遥控器上的油门通道是同时控制四个电机转速大小的,转速越高上升越快,副翼通道是控制四轴飞行器左右倾斜的,俯仰通道控制四轴飞行器的前后倾斜,方向通道控制四轴飞行器在水平方向上的左右旋转。飞行器的控制要求每一个动作都要很轻柔,因为我们的飞行器很小,所以惯性也很小,非常轻微的动作都会有很灵敏的反馈。当然遥控器上可以设置舵量、比例、输出曲线什么的我暂时就不讲了。

Step 9: 扔掉遥控器,试试蓝牙控制

IMG_0437.JPG 豌豆荚截图20150331184236.png 豌豆荚截图20150331184312.png 豌豆荚截图20150331184349.png 豌豆荚截图20150331184405.png 豌豆荚截图20150331184442.png
现在来谈谈用蓝牙控制四轴的事。我在这里先诚恳的道个歉,省得见了面您打我:这个打板成四轴样的MWC飞控要实现完全蓝牙控制,基本上不太可能,因为它只有一个MPU6050三轴陀螺仪+3轴加速度传感器,没有气压计(定高飞行使用)和地磁计(任意方向模式)。不过标准的MWC飞控的四轴飞行器确实可以用蓝牙模块来连接PC、手机、平板电脑,用来设置参数、作为地面站甚至直接控制飞行。我们现在就用这片“三等残疾”的Mini四轴,来体验一下怎么用蓝牙进行设置吧。

首先拔掉四轴飞控TTL接口上的USB-TTL下载器(不要告诉我你在试飞的时候一直带着它呢),用杜邦线连接蓝牙模块上的TX、RX分别到飞控TTL接口上的RX和TX,VCC和GND同样连接飞控接收机接口附近的VCC和GND(你说接口被接收机占用了?我不是告诉过你接收机上的所有正负极都是并联的嘛),这样开机后,蓝牙模块就可以工作了。

蓝牙模块在未配对时LED会快速闪烁,你首先需要和你的手机、平板或电脑的蓝牙装置进行配对。配对的方法我就不说了,自行百度吧,套件里的蓝牙模块初始密码是1234,不对的话再试试0000。

如果用PC上的蓝牙功能与飞控的蓝牙模块相连,打开MultiWiiConf你会看到有2个新增的COM串口,点击较小的那个,就会连接上飞控,这时操作各种设置,和使用USB-TTL下载线的作用是一样的,你也可以修改PID数据、校准加速度计等等。

如果想在手机、平板上控制它,需要先下载安装这个叫做MultiWii EZ-GUI的APP,目前只有在Android 4.0以上版本的设备上可以使用,IOS系统上没有,呵呵。同样的,在使用前需要将飞控的蓝牙模块与设备上的蓝牙进行配对,然后在MultiWii EZ-GUI上进行基础设置,基本上一路“下一步”即可。

MultiWii EZ-GUI是一套功能强大的移动端飞行“地面站”,这个软件不仅可以查看飞行器姿态,还可以修改PID擦数,更改遥控器开关的设置(切换不同飞行模式),也能当作地面站,在Google地图上直接规划路径(可惜Google地图打不开,呵呵),甚至可以直接用蓝牙控制飞行器。

在“设置”页有一个“高级设置”按钮,这里就是用蓝牙控制飞行器的地方。你也看到了,有个大大的“警告”黄字,告诉你这个功能还不完善,你需要知道在做什么,嘿嘿。在这里有两个很好玩的功能:“跟随我”和“航向跟随”功能,在界面上也有明确的提示,需要在源码中去掉某些注释才能开启。至于怎么修改源码,那又要挖一个很大的坑才能讲清楚了。

在“高级设置”中有两种控制模式:Model control New和Model control Old。其中Model control New功能是一个大圆盘直接控制飞行器的前后左右,而Model control Old则是像传统的遥控器一样,有两个摇杆分别控制油门、俯仰、横滚和方向。此外还有个“AUX 控制”就是开关控制。如果想完全用蓝牙来控制飞行器,会遇到解锁的麻烦。我的方法是在PC上的MultiWiiConf中将AUX1开关的某个状态设置成解锁状态“ARM”,这样就可以这里的蓝牙遥控界面,用“AUX 控制”来作为解锁开关了。不过小心,小心解锁就飞走啦!

下载:MultiWii EZ-GUI.app

Step 10: 最后,重要声明

本项目确实适用于有操作航模经验、年龄不小于14周岁的人群,有很多坑!

最后推荐收藏几个网址,分别是MWC官网与RCGroups论坛的MWC主帖,会有最新升级信息以及玩家讨论。

http://www.multiwii.com/
http://www.rcgroups.com/forums/showthread.php?t=1261382

http://www.rcgroups.com/forums/showthread.php?t=1340771


 
终极大佬2016-05-09 18:14:10
USB转TTL下载器是什么样的都可以吗?
终极大佬2016-05-09 17:25:12
杜邦线应该买什么样的杜邦线,多长,什么母对母,母对公的。
小飞机会飞2016-03-19 21:07:02
你好,我的MultiWii EZ-GUI.app可以和蓝牙连接上,可是总是提示没有接收到数据,求问这是哪方面的问题啊
小飞机会飞2016-03-13 09:39:40
程序导入后无法编译

MultiWii:67: error: variable or field 'SerialGpsPrint' declared void
MultiWii:67: error: 'prog_char' was not declared in this scope
MultiWii:67: error: 'str' was not declared in this scope
variable or field 'SerialGpsPrint' declared void
什么问题啊
蓝色幽灵2015-09-26 22:13:02
能否分享下材料的购买链接
无尽的轮回2015-08-26 22:45:03
材料链接有没有啊
乔不撕2015-05-15 16:33:53
里面的那些回头总结,什么时候出来?
winpub2015-04-09 11:07:55
北京哪些地方可以买到这些件?淘宝订购有些慢,近一周。飞鱼老师搞个专卖店吧,我肯定会经常光临。:D
飞鱼BH1JSS2015-04-13 17:06:49
北京没有,都是某宝买,我们正在渐渐做集成,现在你想买什么,我给你链接吧
winpub2015-04-07 11:59:05
赞一个飞鱼老师的教程。刚看到 devo 10还支持apm 2,需要用到8个输入通道,看来 devo 7e玩apm还是不够用,不知道我的理解是否正确。

http://diydrones.com/forum/topics/how-to-6-flight-modes-in-apm-2-5-using-a-devo-10?xg_source=activity
飞鱼BH1JSS2015-04-07 16:18:55
devo 7e可以加通道这事我会说么?加2三个没问题哒
winpub2015-04-09 11:05:41
回复 飞鱼BH1JSS : 厉害,你是专家,小白就搞不定了。期待加通道的教程。:) 一个电机焊得有些歪没关系吧?螺旋桨叶片是直接插到电机轴上吗?好像很费劲,真担心把电机轴弄坏了。
winpub2015-04-09 11:05:47
回复 飞鱼BH1JSS : 厉害,你是专家,小白就搞不定了。期待加通道的教程。:) 一个电机焊得有些歪没关系吧?螺旋桨叶片是直接插到电机轴上吗?好像很费劲,真担心把电机轴弄坏了。
章鱼哥2015-04-01 08:32:58
教程这么快就出来了, 赞!
飞鱼BH1JSS2015-04-01 09:26:59
这还快啊,呵呵

p.s.怎么你回复了两条?
章鱼哥2015-04-13 08:37:17
回复 飞鱼BH1JSS : 因为我们这个网站回复之后有时没反应,不会直接显示回复成功或失败。所以第一条回复没看到之后,由回了一次。手动刷新才看到的。
章鱼哥2015-04-01 08:32:45
教程这么快就出来了, 赞!

作者

飞鱼BH1JSS

北京,昌平

54粉丝 10作品 5随笔
  关注 私信


阅读数: 34532