RoboMaster

标题: 【分享帖】从零制作小四轴--完结 [打印本页]

作者: Nemo_o    时间: 2015-11-14 03:07
标题: 【分享帖】从零制作小四轴--完结
四轴飞行器,又称四旋翼飞行器,简称四轴、四旋翼。四轴飞行器的四个螺旋桨与电机直接相连,通过改变电机转速获得旋转机身的力,从而调整自身姿态。最近四轴非常火热,看视频上飞的各种炫酷,我也好想要一架啊!于是我开启了我的四轴计划。

[attach]4254[/attach]

四轴需要的零件有机架,电机,电调,飞控,电池。这是普通四轴的配件,但是一个电调至少就得30RMB,无刷电机便宜的也要20RMB,一套动力部分就得200,对于一枚穷屌丝实在是难以下手啊!

那么就做一个小一点的,手掌那么大,这样的。
[attach]4241[/attach]

于是用PCB做机架,用720空心杯电机代替无刷电机,用MOS管代替电调控制电机,电池相应的也会缩小,遥控就用蓝牙连接手机控制,连遥控器都省了,成本估计100左右。相应的代价就是续航时间缩短到只有5分钟(估计的),遥控距离在10米以内。能飞就好,我要求不高。


四轴上最重要的就是飞控,所以制作第一步:选择飞控。

飞控市面上有现成的卖,但我想用开源的飞控自己做。现在有很多有名的开源飞控,例如KK,匿名,MultiWii/MWC,APM/PIX等。我在网上对这些飞控大致查了一下:KK飞控功能较少,没有自稳功能,算是落后的飞控,网友不推荐入手KK,于是就不考虑这个飞控了;MultiWii/MWC飞控是基于arduino的(不知为何会有两个名字x_x),带自稳功能,支持GPS,能路线规划,在线调试,实在高端,可以考虑;APM也是基于arduino的,能想到的所有功能都有,比MWC飞控更优秀,它有两块单片机,其中一块作为协处理器,但是,实在整不明白如何用一块单片机运作,打算以后再研究;APM已开发到极限,于是有了APM的升级版PIX。PIX从arduino转到了STM32,处理速度提升了10倍,是目前已知的最好的开源飞控,太高端了,用在小四轴上真是杀鸡用牛刀,做高端的四轴时再研究吧!=_=

于是我选择了MWC飞控,用arduino nano作为主控(其实用arduino mini更好,nano在小四轴上有点大,选择nano是因为nano带usb口下程序)。

首先,搜索各种MWC的资料,查找需要的零件:
名称
型号
备注
价格
数量
合计
机架
轴距12.2cm
75mm桨叶
¥15.00
1
¥15.00
电池
3.7V  600ma

¥16.00
1
¥16.00
空心杯马达
720

¥5.50
5
¥27.50
锂电池对接头
航空插头

¥0.80
5
¥4.00
红黑正反桨
75mm
4只一套
¥4.00
2
¥8.00
锂电池充电线
usb充电
给锂电池充电
¥4.00
1
¥4.00
钽电容
6.3V220UF
电源滤波
¥0.50
4
¥2.00
MOS管
SI2302
2.5A/20V
¥0.30
10
¥3.00
主控板
nano
ATMEGA328P
¥10.40
1
¥10.40
姿态
mpu6050/GY-521

¥11.50
1
¥11.50
肖特基二极管
SS34
电机续流
¥0.06
10
¥0.60
蓝牙
HC-05/HC-06

¥16.00
1
¥16.00
洞洞板
7CM*9CM

¥1.30
1
¥1.30
拨动开关

¥0.30
5
¥1.50




合计
¥120.80

包括备用件总共120元,这个还是可以接受的。

注意:不要用低功耗的蓝牙模块,低功耗的蓝牙的传输速率不够,能连接但存在问题。

机架用的是淘宝已经做好的PCB,上面不贴元件,毕竟不会画板子。感觉这么小的板子卖15元有点坑。
[attach]4252[/attach]

电机是7mm*20mm的空心杯电机:
[attach]4253[/attach]


选完零件后,MWC如何用呢?MWC不仅支持四轴,还支持六轴,还支持三轴和车,该如何把MWC配置成四轴模式,并且是空心杯四轴?
这是MWC的官网:http://www.multiwii.com/
这是MWC的中文网:http://www.multiwii.cn/
然而把这个网站看完之后,并不非常明白如何使用,胡乱摸索之后总结如下:
首先去googlecode下载源代码:https://code.google.com/p/multiwii/ (需要翻墙)
或者去github下载源代码:https://github.com/multiwii/multiwii-firmware
在googlecode下载的文件里除了源代码还有电脑端的上位机,github只有源代码。
那么,如何下国外的资料呢?
---------->http://blog.sina.com.cn/s/blog_667c5c240102vvt8.html
---------->http://blog.sina.com.cn/s/blog_667c5c240102vpwq.html

下完源代码之后,会看到一堆文件,初学者肯定会被吓一跳,其实,只需看config.h这个文件,通过注释或取消注释其中的代码取消或启用某项功能。
[attach]4244[/attach]

config.h里全是英文说明,没过四级的同学要头大了,还好有万能的网友已经翻译了:
multiwii 2.4配置页面中文注释

这里面的代码也非常多,如果只做空心杯小四轴的话就看我提取的关键点吧。(行数是原版配置文件的行数)。
行数代码解释
39#define QUADX设置四轴x模式
72#define MINCOMMAND  1000电机最小命令,如果解锁后电机转速太快,减小这个值
76#define I2C_SPEED 400000L设置I2C速率为400K,用于mpu6050
80//#define INTERNAL_I2C_PULLUPSI2C内部上拉,gy系列自带上拉,保持默认
136#define GY_521启用GY_521传感器
204~206#define FORCE_ACC_ORIENTATION(X, Y, Z)强制传感器方向,如果传感器的安装方向跟四轴方向不同需要用到
226#define PID_CONTROLLER 2选择PID算法,1是老算法,2是新算法
232#define ONLYARMWHENFLAT阻止飞行器倾斜时解锁,看个人
237#define ALLOW_ARM_DISARM_VIA_TX_YAW设定解锁方式,默认YAW解锁,另外ROLL解锁
500~503#define SERIAL0_COM_SPEED 115200调整串口速率,一般默认
520~526#define GYRO_LPF_256HZ选98HZ吧
559#define THROTTLE_ANGLE_CORRECTION 40油门随着角度补偿,防止倾斜时高度下降
562#define HEADFREE无头模式,要配上指南针,四轴的前方将保持在四轴到手机的连线方向
578#define GYROCALIBRATIONFAILSAFE连续的陀螺仪校准,如果在校准时被移动会自动重校准
592~603#define FAILSAFE失控保护设置,启用
640#define INFLIGHT_ACC_CALIBRATION飞行时加速度计校准,能让四轴稳定在一定区域内
652#define DEADBAND 6在摇杆中点周围引入一个死区
878~885#define BUZZER蜂鸣器设置,没特别需求就保持注释
877~911battery voltage monitoring电池电压监控,一般默认
999#define EXT_MOTOR_RANGE用于空心杯电机,要启用
1020#define MOTOR_STOP当油门命令在低位时电机停转,按个人需要配置

配置完后,用arduino IDE打开 MultiWii.ino ,将程序上传到arduino nano。


各元件与arduino nano的连接:
名称                         针脚
左前电机                 PWM3
右前电机                 PWM10
左后电机                 PWM11
右后电机                 PWM9
THROTTLE/PPM       D2
ROLL                       D4
PITCH                      D5
YAW                        D6
MODE                      D7
功率针脚                 A2
电压检测                 A3
蜂鸣针脚                 D8
SDA                         A4
SCL                         A5
[attach]9935[/attach]
[attach]9947[/attach]

D2、D4、D5、D6、D7是PWM遥控器针脚,我是用蓝牙接手机遥控,所以不需要接。
arduino nano的硬件资料:http://kb.open.eefocus.com/index.php?title=Arduino_Nano

如何用手机遥控四轴?
下载MWC手机端软件,MWC只有安卓端的软件,从这个网站下载:http://www.multiwii.com/wiki/index.php?title=Mods
用安卓遥控需要用到的软件是MultiWii EZ-GUI,得要android4.4以上的系统,这个软件要到google play storm下载,一般国产手机没有google play storm,如何下载google play storm自行百度。

EZ-GUI如何用?
打开软件后第一页是四轴的仪表盘,能检测四轴的各项数据
[attach]4247[/attach]


第二页是对四轴的各种设置
[attach]4248[/attach]


第三页是对EZ-GUI的设置
[attach]4245[/attach]

用手机的蓝牙连接HC-06或HC-05后,到EZ-GUI第三页进入设置,【SELECT BT DEVICE】选择蓝牙模块,然后点红箭头,后面的默认红箭头。
[attach]4246[/attach]



然后到首页点右上角的【连接】,注意这是MPU6050要连上arduino nano,不然连接报错。显示连接成功后,把飞行器放在水平地面(这时我是把各种元件插在面包板上,用LED代替电机测试),到第二页进入【校准】,点击【加速度计标定】,等待校准完成。如果有磁力计还要磁力计标定。

之后就可以遥控起飞了。到第三页,进入高级设置,进入【MODEL CONTROL】
[attach]4249[/attach]


然后就会看到这样的界面:
[attach]4250[/attach]


右上角设置,可设置各滑块的功能,THROTTLE是油门的意思
[attach]4251[/attach]

四轴一开始在锁定状态,把油门调到最低,YAW到最右,保持一会儿就会解锁,然后就能飞了;把油门调到最低,YAW最左,将会上锁(在网上某些地方把飞机可以飞的时候称为"锁定",不能飞的时候称为"解锁",不知是翻译错误还是国外的思维方式不一样)。

目前我只在面包板上测试过,接下了就是把零件组装起来。
[attach]9936[/attach]


续:
其实很久之前就做完了,因为懒,拖了近半年没更新。


这些是要用到的元件,以洞洞板作为基板固定所有的元件,然后用螺钉把洞洞板与机架连接。(当然洞洞板需要裁剪,只用一小块)
[attach]9937[/attach]

空心杯电机驱动电路:
        这幅图是crazyflie飞控板的电机驱动电路原理图,同样适用MWC飞控,肖吉特二极管BAT54用ss34替换(只要满足电压和电流以及通断时间就行,ss34远远大于需求,只是因为跟MOS管在同一家店所以买了-_-),场效应管pmv31xn用SI2302替换。因为忘记买贴片电阻,只好用普通电阻代替,这占了很大一部分面积。

场效应管是用电压控制电流,作用跟三级管类似(三极管是用电流控制电流),相比于三极管,场效应管体积更小功率更大。
肖吉特二极管的作用是续流。电机是电感元件,有阻碍电流变化的特性,控制电机转速的方法是用PWM信号控制场效应管通断的时间,当场效应管断开时,电机两端会产生极高的电压击穿场效应管,加上二极管后,电机的电流会通过二极管保持流通,防止电机产生过高的感应电压。
为了防止电机引起的电流波动干扰到arduino,我在arduino的电源处接了一个220uF的钽电容。
[attach]9938[/attach]


SI2302的内部电路图:
[attach]9939[/attach]

焊接完后的背面,白色的是控制线,黑色和红色的是接电机的线。电机驱动电源部分要接一个拨动开关,防止arduino nano上电时不受控制的转,也用于失控时给电机断电(要注意,这个拨动开关只控制电机电源的通断,如果要控制总电源需另加一个开关,我懒得加了,直接拔电池)。
[attach]9948[/attach]


这是焊接完后的效果。不用在意MPU6050的方向,飞控里有一段代码,可以配置任意方向的陀螺仪、加速度计和指南针。(桨买错了,应该一黑色正桨一黑色反桨,一红色反桨一红色正桨,通过颜色区分四轴的前后)
[attach]9941[/attach]


飞控板与机架的连接,在洞洞板上打了两孔用螺丝固定在机架上,用两个螺母把洞洞板垫高。
[attach]9942[/attach]


这是背面,电池将贴在这里。蓝牙模块并没有焊在洞洞板上,而是由那根灰色的线单独接出,并用可拆卸连接头(例如杜邦头或其他)连接蓝牙模块,这是因为蓝牙会占用COM口,影响上传程序。电源供电是将3.7V的电压直接接在arduino的5V端口上,实验证明可以正常运行。(这也有可能是后面失败的原因)
[attach]9943[/attach]



电机用焊锡跟机架焊上,为了加固,我又在电机背面打了一层热熔胶。

这时还不能飞,因为MPU6050的方向不是正确方向,需要修正方向。

取消config.h中204~206行的注释,将程序上传到arduino,打开MultiWiiConf.exe看陀螺仪和加速度的值,然后根据情况替换ROLL、PITCH、YAW或改变正负。左下角的ACC是加速度,GYRO是陀螺仪,MAG是指南针。
[attach]9944[/attach]


按下图所示的方向旋转四轴,加速度计相应的值会增大,陀螺仪的值为正数。(后来再看这图总感觉不对,Yaw,Roll,Pitch总得符合左手或右手定律吧,但是当时测出来就是这样。)
[attach]9945[/attach]


为了防止看不懂图,再用语言说一遍:
每调整一次,重新上传一次程序,再观察是否正确。全部调完后,看MultiWiiConf中右下的四轴仿真图,如果仿真图的转动方向跟实际方向一致并反应迅速,则全部正确;如果转动方向跟实际方向不同,则GYRO的调整存在错误;如果转动方向跟实际方向一致,但是四轴静止时,仿真图仍在缓慢转动,则ACC调整错误。

终于,将要迎来起飞的时刻!
但是,我把油门开到最大还是飞不起来,用不精确的称测了测重量,总重量70克!也许超重了。
同时电机严重干扰蓝牙通信,时常会断开连接,然后电机一直狂转。(一定要记得设定失控保护,不然要冒着被桨割手的危险去关电源。)
[attach]9946[/attach]

因为四轴没飞起来,所以PID的调试也就没有了。

最终,四轴计划以失败告终。。。



2016-05-08

打算再次测试四个电机的升力,为了避开蓝牙干扰的问题,这次不用蓝牙,也不用MWC飞控,直接写了个直接让四个电机最大功率转的程序。
结果,电机转了不到1秒就停了,重复了好几遍都这样,这就说明并不是干扰到了蓝牙,而是直接干扰到了arduino的运行。并且,我是用手拿着四轴测试的,当电机运转的时候感受到了非常大的升力,带动这个四轴完全没用问题。

所以,最终问题就是,电机运转时干扰到arduino的运行,也许电机运转时造成电压过低影响到arduino,也有可能是电机的电涌干扰到arduino。我觉得更有可能是第一个。


总结及注意事项:
桨的颜色是用来区分四轴的前后的,所以要红色各一正桨反桨,黑色各一正桨反桨。
要做好电源部分的抗电涌干扰,除了加钽电容,还能在电机供电与总电源间加一电感线圈,加强滤波。
要注意电池的重量,不能一味用大容量的电池,超了载重量。
蓝牙的接口要做成可拆式,或加上双刀开关,不然会占用COM没法上传程序。
arduino最好选用leonardo的mini版型或nano版型,接口跟普通nano一样,但是leonardo自带USB接口,所以有两个串口,蓝牙和上传程序互不干扰。
arduino要选用3.3v的版型。
在学会画电路板之前我不再做小四轴了,洞洞板上布线太麻烦了!









作者: 疯狂科技宅    时间: 2015-11-14 09:32
可以的~   好厉害
作者: XCMB    时间: 2015-11-17 10:46
666666666666
作者: sss6491    时间: 2015-11-17 12:29
资磁一下
作者: csf201307024133    时间: 2015-11-17 20:44
66666好贴子好贴子
作者: 无血九痕    时间: 2016-5-4 23:52
好详细的  赞赞赞
作者: mobangjack    时间: 2016-5-7 22:46
mark,楼主有心人
作者: 菜菜菜。。。鸟    时间: 2016-5-22 17:22
正在调四轴,好帖子啊
作者: 出入不兮。    时间: 2016-7-4 21:09
好详细的  赞赞赞
作者: 干了这碗鸡汤    时间: 2016-8-28 21:55
祝楼主早日成功,学会画板子!




欢迎光临 RoboMaster (https://bbs.robomaster.com/) Powered by Discuz! X3.2