找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 19709|回复: 21
打印 上一主题 下一主题
收起左侧

DIY MWC四轴飞行器的装配与调试

  [复制链接]
跳转到指定楼层
楼主
各相关论坛里关于四轴飞行器的帖子很多,我从中也学到了很多东西,前段时间一直在忙别的工作,趁这几天有点空,将之前做过的一些工作整理出来,对实际操作自我感觉有价值的帖子(或部分内容)汇总在此,并对一些本人觉得不妥的地方加以说明和修正。

一、四轴飞行器的组装(转:请参考相关内容)
二、MWC的硬件设计
三、MWC的固件配置
四、MWC的连接
五、四轴飞行器整机调试(一)
六、四轴飞行器整机调试(二)
七、其他
八、视频
九、Q250 + MINI_MWC






二、MWC的硬件设计
1、原理图

2、PCB布局图

3、实物照片

4、材料清单

这种配置完全是为那些没有多少经费的初学者选配的!!!

遥控器选择的是MC6H航模遥控器 6通道2.4g 带接收器

MC6H.pdf (1.08 MB, 下载次数: 33)

MC6遥控器.zip (932.06 KB, 下载次数: 29)



三、MWC的固件配置
1、Arduino IDE的安装
Arduino集成开发环境下载:http://pan.baidu.com/s/1o9XCU(1.6.3下载)
如果你下载的是windows 安装版(exe后缀),那么直接安装即可,其他则直接解压即可使用。

运行后的界面如下:


2、MulltiWii程序配置
MWC2.3官方原程序
MultiWii.zip (152.07 KB, 下载次数: 42)


双击运行MultiWii.ino程序。

初始界面显示如下:


选择config.h文件,选择后如下:

按Ctrl+F,寻找“QUADX”


将“//#define QUADX”前面的双斜杠删除掉,变为:

其他后续部分作同样的处理,见图,没有特殊情况,就不加以说明了。


对于简单的6轴传感器(三轴陀螺仪+三轴加速度)GY_521,请选择“#define GY_521”,对于10DOF模块(三轴陀螺仪+三轴加速度+三轴磁场+气压)的GY-86传感器,则选择“#define GY_86”。

注意:低通滤波频率设置为20Hz,有些情况下,这个频率设高了的话,油门推到最大都飞不起来。

关闭串口GPS。

如果使用GPS,就要开启I2C_GPS;如果使用超声波测距,就要开启I2C_GPS_SONAR。

如果你想使用 GPS 自动返航等功能,一定要设置磁偏角,查询磁偏角的最好方法是在手机GUI上查看。首先运行下图中的MultiWii EZ-GUI程序,点击“GPS信息”按钮,最下面倒数第二行即为你所处地方的磁偏角。




飞控解锁后,马达不转。这个功能,有好有坏,马达旋转可以提示你,飞控已经解锁,注意安全。我习惯解锁后马达不转。


四、MWC的连接
1、遥控器对频
  • 关闭发射机和接收机电源
  • 把黑色“对频线”插头连接到接收机的“ID SET”接口
  • 把电调的信号线连接到接收机的第三通道,然后电调连接电池通电
  • 此时需要注意的是,接收机LED将有一个持续闪烁绿灯
  • 将发射机油门摇杆调到最低的位置,然后打开发射机
  • 当接收机的绿色LED灯熄灭,此时接收机已对好频
  • 关闭遥控器电源
  • 从接收器拆下“对频线”插头,断开电池、电调连接线。

2、接收机连接

注:这里只有D2是通过GVS的3P线连接到飞控板的,其他通过单P线连接即可。因为遥控的所有接收端 GND和VCC是相通的。
3、电调连接

数字与飞控板舵机控制部分数字标号一一对应,数字周围的箭头,表示这个位置的电机旋转方向,请与图示标注保持一致。

4、电调校准

去掉//#define ESC_CALIB_CANNOT_FLY这句代码前面的两条斜线,启用这句代码,并将改过的程序烧录到飞控板里。断开USB下载线,接上飞行器的电池,在一段音调之后,等待一分钟左右,拔掉电池。将#define ESC_CALIB_CANNOT_FLY这句代码注释掉,接上USB下载线,重新下载程序到飞控板里,至此校准电调完成。电调校准时不要安装螺旋桨!!!
5、GPS连接
按照原理图和PCB板图上的5V、GTX、GRX、GND分别与GPS模块的相应端子相连接,注意GTX与GPS模块的RX相连,GRX与GPS模块的TX相连。
6、超声波连接
按照原理图和PCB板图上的V、T、E、G分别与超声波模块的VCC、Trig、Echo、GND对应相连。


五、四轴飞行器整机调试(一)
1、MultiWii GUI启动、连接
请先安装JAVA插件:
http://www.java.com/zh_CN/download/windows_ie.jsp?locale=zh_CN
安装即可(注意:需要连接网络才可以安装此安装文件),如果你的电脑是win7 64位的系统,安装了JAVA虚拟机后GUI仍然运行不了,那你就需要到C:Program Files(x86)Javajre7in找到并复制javaw.exe,然后粘贴到C:WindowsSysWOW64这个文件夹下面,再重新运行GUI即可。
接着运行“application.windows32 MultiWiiConf.exe”。
application.windows32.zip (1.98 MB, 下载次数: 29)
点击“READ”和“START”按钮,就可看到飞控的默认初始数据和传感器的数据曲线图了。

2、传感器校准与测试
a、加速度计校准

加速度计(ACC)在飞行器静止时,三轴读数会相对稳定,如果前后/左右/上下移动飞行器,对应的PITCH / ROLL / Z会有读数变化,这表面加速度计工作正常。这时如果需要校准加速度计,请将飞行器放在尽量平的地面上,点按CALIB_ACC按钮,等待大约5秒钟,加速度计校准完成后,ROLL/PITCH会显示为0,校准完成。校准完成后别忘了点击“WRITE”保存。
b、陀螺仪测试
陀螺(GYRO)在飞行器静止的时候,ROLL / PITCH / YAW三组数据都为0,拿起飞行器,分别朝向三个轴向摆动,会看到三组数据会跟随变化,同时右边的状态图会跟着摆动的方向做指示。左右倾斜飞行器,右边的ROLL不会保持水平状态,会有对应的倾斜动作,前后倾斜飞行器,PITCH也会产生相应变化,转动飞行器,有图中的四轴飞行器也会有对应动作。
c、磁场计校准
磁阻(MAG)读数中我们只需关心ROLL这一项,当水平转动飞行器指向北的时候,此读数与下面的HEAD都为0,同时右边的指北针也指向N位置,说明磁阻工作正常。如需校准磁阻,请点按CALIB_MAG按钮,在30秒钟内把飞行器朝三个轴向分别旋转至少一圈再放回地面,即可完成校准。
d、气压计测试
气压计(ALT)读数并不是绝对值,每个飞控都有可能不一样,请不用担心,我们只是需要相对的数据。测试气压计时可以上下移动飞行器超过1米高度差,或者用手按着气压计的金属盖,会看到读数出现变化,当气压变高时,显示海拔下降,这时正常情况。
3、GPS设置
源程序: I2C_GPS_NAV_v2_2.zip (32.52 KB, 下载次数: 32)
a、导航程序配置
导航板软件  I2C_GPS_NAV_v2_2的config.h文件中修改下列代码,打开SONAR部分。



下载导航程序到GPS Arduino模块。
b、飞控软件 MWC2.3代码修改
代码修改
(1)config.h文件,打开I2C_GPS和I2C_GPS_SONAR的设置
  #define I2C_GPS
    // If your I2C GPS board has Sonar support enabled
  #define I2C_GPS_SONAR
(2)IMU.cpp 文件,增加逻辑:当超声波读数低于3米时,代替气压计读数
  uint16_tcurrentT = micros();
  uint16_tdTime;
  static int32_t tmpEstAlt = 0; //in cm 用于替换原气压高度的LPF运算,方便与超声波读数切换

  dTime =currentT - previousT;
  if(dTime < UPDATE_INTERVAL) return 0;
previousT = currentT;

if(calibratingB > 0) {
   logBaroGroundPressureSum = log(baroPressureSum);
   baroGroundTemperatureScale = (baroTemperature + 27315) *  29.271267f;
    calibratingB--;
  }

  //baroGroundPressureSum is not supposed to be 0 here 气压地面压力和不应为0
  // see:https://code.google.com/p/ardupi ... AP_Baro/AP_Baro.cpp
  BaroAlt= ( logBaroGroundPressureSum - log(baroPressureSum) ) *baroGroundTemperatureScale;

  // 用tmpEstAlt变量替换原alt.EstAlt变量进行气压高度低通滤波
tmpEstAlt = (tmpEstAlt * 6 + BaroAlt * 2) >> 3; //additional LPF to reduce baro noise (faster by 30 μs)

  //在这里给alt.EstAlt赋值
if(sonarAlt>0 && sonarAlt<300 ) {
         alt.EstAlt = sonarAlt; //来自声呐的值
  }
  else {
         alt.EstAlt = tmpEstAlt; //来自气压计的值
  }

  #if(defined(VARIOMETER) && (VARIOMETER != 2)) ||!defined(SUPPRESS_BARO_ALTHOLD)
c、GPS模块设置
安装u-center软件,将GPS模块通过USB转TTL模块与PC机相连,并运行u-center。

按F6、F7、F8打开三个窗口,观察GPS是否有数据输出。


选择不同的波特率,看看选择哪个波特率时,窗口有数据不断的输出,就说明GPS模块的波特率就是所选的值。

如果波特率不是115200,进行如下设置。点击 ViewMessages View,调出该窗口,然后点击 UBXCFG(Config)RT(Ports),设置 Baudrate 为 115200。同时设置串口1的输出格式为NMEA。

在配置好了之后,点击窗口左下角的 Send 按钮,就可以将配置发往 ATK-NEO-6M GPS模块。这样,我们就设置模块波特率为 115200 了,此时 u-center 必须重新设置串口波特率为115200,才可以和模块进行通信。
设置好之后, u-center 即可与模块重新通信,但是模块的波特率数据,并没有保存在EEPROM 里面,只要模块一断电,下次上电,波特率就还是以前的出厂设定值。
因此我们还需要对刚刚的配置进行一个保存操作, 在 Messages View 窗口,选择UBXCFG(Config)CFG(Configuration),选择 Save current configuration, Device 选择: 2-I2C-EEPROM。在设置好了之后,点击窗口左下角的 Send 按钮,就可以将指令发往 ATK-NEO-6M GPS模块,从而将当前的模块配置信息,保存在 EEPROM 里面。

GPS输出信息设定,MWC的导航部分仅需要GGA、GSA、RMC,在 Messages View 窗口,选择NMEA,首先,鼠标右键点击NMEA,选择Disable Child Message,这是没有任何信息输出。再分别选择GxGGAGPGGA,鼠标右键点击选择Enable Message;GxGSAGPGSA和GxRMCGPRMC按同样方法设置使能输出。
下面设置测量频率,还是在 Messages View 窗口,点击 UBXCFG(Config)RATE(Rates), 设置 Measurement Period 为 200ms。

在配置好了之后,点击窗口左下角的 Send 按钮,就可以将配置发往 ATK-NEO-6M GPS模块。然后,可以看到其他信息窗口的数据更新速度明显变快了,说明我们的设置成功了。同样,如果要保存该设置,前面波特率设置时所介绍的保存操作方法,进行保存。
4、超声波测距测试
超声波没什么可调式的,如果硬件、软件没有什么问题,直接在MultiWii GUI的界面上就可以看到超声波的高度数据。


六、四轴飞行器整机调试(二)
5、参数调整
a、PID参数调整
MWC是用PID算法进行飞行稳定性控制的程序,三个字母分别代表比例(P)-积分(I)-微分(D)。
PID三个参数的直观作用:
P(比例):这是一个增益因子,当多轴飞行器受风等的影响发生向一边倾斜时,P值直接决定多轴飞行器的抵抗这种倾斜的力的大小。P越大,多轴飞行器抵抗意外倾斜的能力越强,但P过于大时会引起多轴飞行器抖动甚至猛烈侧翻。P越小,多轴飞行器抵抗意外倾斜的能力越弱,但P过小时会引起多轴飞行器自平衡能力不足甚至朝一边侧翻(如顺着风的方向)。
I(积分):这个参数决定了飞行控制器对过往飞行状态的依赖程度。如果I值太小,会使飞行器过度依赖当前的误差,不能抑制“过敏”现象,从而造成飞行颠簸;如果I值太大,则会过度削弱系统对误差的反应能力,造成反应迟缓。
D(微分):一旦多轴飞行器发生倾斜,则认为多轴飞行器会继续向同一方向倾斜,合适的D参数的能有效抑制未来可能发生的倾斜。如果D值太小,您会觉得多轴飞行器反应不够灵敏;如果D值太大,也会引起“过敏”。相较于P而言,D反映得更多的是灵敏度,而P反映的是纠正误差的力度。
具体操作:将鼠标定位在待调整的PID参数上,按住鼠标左键左右移动鼠标即可调整该数值。初期PID参数默认即可,不必调整,默认参数就能飞的很稳。
b、油门曲线调整
如果你在试飞过程中发现四轴悬停非常难,油门非常不好把握,一拉油门就升老高,一降油门就直接落到地上,那你应该调整油门曲线。比如MID设为0.4,EXPO设为0.7等。遥控曲线不必设置,默认参数就很好。
6、遥控器设置
a、MWC的遥控动态范围设定
如果遥控器的动态范围不够,也就是调整范围最小无法小于1100,最大无法超过1900,则可以通过在MWCMultiWii.h中修改下列两个参数,即可解决此问题。
#define MINCHECK 1150 //遥控器动态范围最小设定值
#define MAXCHECK 1850 //遥控器动态范围最大设定值
b、通道设置
打开遥控器开关。这时观察GUI上遥控器各通道示数会有变化。
首先检查各通道正反是否正确。推动前四个通道的摇杆,正反设置正确的标志如下。
  • 油门通道:向前推动摇杆,GUI里油门通道示数变大;向后拉摇杆,GUI里油门通道示数变小。
  • 升降舵通道:向前推动摇杆,GUI里油门通道示数变大;向后拉摇杆,GUI里油门通道示数变小;自动回中GUI示数在1500左右。
  • 副翼通道:向右推动摇杆,GUI里油门通道示数变大;向左推动摇杆,GUI里油门通道示数变小;自动回中GUI示数在1500左右。
  • 方向舵通道:向右推动摇杆,GUI里油门通道示数变大;向左推动摇杆,GUI里油门通道示数变小;自动回中GUI示数在1500左右。
  • 三档开关通道:低档GUI示数1000左右;中档GUI示数1500左右;高档GUI示数2000左右。

若正反向不正确,则在遥控器设置里进行舵机相位的正反相设置即可。
正反设置完成之后需要校准各通道行程,要求各通道最小值在1050以下,最大值在1950以上。
然后升降舵、副翼、方向舵三个通道需要校准中立点(即摇杆自动回中那个值),利用遥控器各通道旁边的微调开关,将以上三通道的中立点校准到1500左右,偏差不超过正负4。
c、飞行模式设定
设置完遥控器各通道的行程和中立点后,可进入飞行模式设置,操作界面如下:

右侧中部浅蓝色框中“ACC”、“BARO”、“MAG”、“GPS”和“SONAR”均为绿色,说明这些传感器均设置为工作状态。
上面黄色框中为飞行模式设定,框的左侧由上往下依次为:
  • ARM:解锁指示(解锁成功后会变成绿色)
  • ANGLE:自稳功能(2.2以前的固件显示为ACC.需要加速度计,MWC-2012 MWC-MEGA都支持)
  • HORIZON:3D模式(激活后自动关闭ANGLE功能,请初级玩家慎用)
  • BARO:高度保持功能(需要气压计, MWC-2012 MWC-MEGA都支持)
  • MAG:航向保持功能(需要磁阻,MWC-2012 MWC-MEGA都支持)
  • HEADFREE:CF功能,也就是俗称的无头功能(需要同时激活MAG)
  • CAMSTAB:云台自稳功能(需要在固件中开启云台功能)
  • GPSHOME:自动回航功能(需要GPS模块,并且同时激活MAG)
  • GPSHOLD:定点功能(需要GPS模块)

设置方法用鼠标点击“灰色”小方块,使其变为“白色”,对应功能即变成有效。
譬如AUX2的MID列对应的功能为:自稳+定高+锁定航向。设置完成后需要点击“WRITE”按钮保存。这时你可改变遥控器辅助通道的状态,相应的飞行模式就由暗红色变成了绿色。
注意: GPS没有卫星信号的时候,不管你怎样操作遥控器上的开关,GPS Hold 和 GPS Home都无法激活。
MAG:航向保持功能,是指通过磁阻来保持航向,可以避免飞行器的非操控原因的自旋,第一次打开时,机头会自动转向(指向解锁时还是上电时或真北我没注意,因为我们的飞场三个方向是一样的)。
HEADFREE:CF功能,也就是俗称的无头功能,不需要同时激活MAG,是指飞行器的倾斜与横滚根据飞行器解锁时机头指向关联,与飞行器实际的机头指向无关。例如,无论飞行时机头如何指向,往前推杆,飞行器就向解锁时机头指向的前方飞去。注意,是解锁时机头指向。(具体无头模式功能的详细说明你可以看其他帖子)
另外,打开GPSHOME或GPSHOLD时,都需要磁阻的辅助,不需要同时打开MAG,也不会自动打开MAG。但需要打开ANGLE功能,否则不工作。
在GPSHOME时,打开MAG,机头会自动转向HOME点方向后开始返航,到HOME点后,机头再转向到解锁时的方向。

d、解锁
油门摇杆打到右下角为解锁,左下角为加锁。解锁后ARM为绿色,加锁后为暗红色。
7、电机测试
飞行器上电,打开遥控器电源,解锁,推油门,看看电机转速是否正常,桨叶安装是否牢靠。


七、其他
1、电机不同时转
油门推到60%的时候只有两个电机转,另外两个不转,当油门继续加大第三个电机开始旋转,再继续加大油门第四个电机才转起来。最后发现是“MultiWii”与“MultiWiiConf(MultiWii GUI)”不配套造成的。运行相应的配套“MultiWii GUI”程序,重新校准加速度计后,一切均正常了。

2、GPS导航部分出现的问题
I2C_GPS_NAV_v2_2 程序的 config.h 中下面这段:
……
//#define NMEA
#define UBLOX
//#define MTK_BINARY16
//#define MTK_BINARY19
//#define INIT_MTK_GPS
……

如果设置为“UBLOX”,编译是通不过,我在一些论坛上也求助过,没有人回答,后来通过我自己试验,选择“NMEA”成功了!
……
#define NMEA
//#define UBLOX
//#define MTK_BINARY16
//#define MTK_BINARY19
//#define INIT_MTK_GPS
……

参见:MWC接GPS和声纳的方法经验以及我遇到的问题

3、入门级的其他部件选型
有很多人都说 XXD 的不好,绝对不要用,其实对于没有多少钱的入门者,我感觉还是可以用的,对于我来说,钱不是问题,但做个简单的,也就是尝试一下而已,也没有必要非得选那么好的,从使用角度上来看,也没发现什么问题。
如果没有配自锁桨的新手,一定要注意桨叶一定要安装牢靠(具体标准大家自己网上找吧),否则要是射桨(百度看射桨)了的话,问题就大了……

4、电调输出并联问题
线性降压电调的输出并联没有什么问题,但开关降压电调的输出是不能并联在一起的!!!


八、视频

MWC四轴飞行器


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:113472 发表于 2016-4-11 15:35 | 只看该作者
1、2.4G的接收模块与主机的连接在 "四、MWC的连接 --> 2、接收机连接" 中给出了;
2、遥控器与接收模块的资料在 “二、MWC的硬件设计” 的最后有压缩文件;
3、下图中红色框中是2.4G的接收机模块。



这里再次给出,如有那里不清楚,请提出问题的细节。


2.4G的接收模块与主机的连接表‘
MC6遥控器.zip (932.06 KB, 下载次数: 17)




飞控部分,3.5cm x 3.6cm

飞控板 + 扩展板


回复

使用道具 举报

板凳
ID:113959 发表于 2016-4-26 22:05 | 只看该作者
很赞啊
回复

使用道具 举报

地板
ID:127462 发表于 2016-6-21 19:19 | 只看该作者
厉害,厉害,学习学习谢谢
回复

使用道具 举报

5#
ID:143983 发表于 2016-10-22 22:14 来自手机 | 只看该作者
进来学学
回复

使用道具 举报

6#
ID:143983 发表于 2016-10-22 22:18 来自手机 | 只看该作者
有谁能共享下文件给我,新手没黑币,QQ我的名称
回复

使用道具 举报

7#
ID:134810 发表于 2016-12-20 07:19 来自手机 | 只看该作者
很详细了
回复

使用道具 举报

8#
ID:161201 发表于 2017-1-27 13:31 | 只看该作者
谢谢分享!!
回复

使用道具 举报

9#
ID:161201 发表于 2017-1-29 11:57 | 只看该作者
谢谢分享!!
回复

使用道具 举报

10#
ID:165814 发表于 2017-5-18 01:00 | 只看该作者
感谢分享
回复

使用道具 举报

11#
ID:216968 发表于 2017-7-5 21:21 | 只看该作者
电路图是否可以发我一份,淘宝店家需要CAM文件,我是搞软件编程的,不知道这个东西怎么弄
回复

使用道具 举报

12#
ID:137676 发表于 2017-10-11 22:24 | 只看该作者
在吗?  我看了你的"DIY MWC四轴飞行器的装配与调试"非常开心,我只新手不懂这些.关于"声呐"的问题,我不知道怎么修改IMU.cpp文件,请解释一下可以吗?     在此表示感谢!
回复

使用道具 举报

13#
ID:282823 发表于 2018-2-8 10:03 | 只看该作者
很详细的教程,感谢分享。
回复

使用道具 举报

14#
ID:282823 发表于 2018-2-8 11:16 | 只看该作者
很感兴趣,有时间研究下。谢谢分享。
回复

使用道具 举报

15#
ID:317014 发表于 2018-5-10 18:30 | 只看该作者
很详细的教程,感谢分享!!
回复

使用道具 举报

16#
ID:79544 发表于 2018-11-6 07:56 | 只看该作者
很好的资料,感谢分享!!!!
回复

使用道具 举报

17#
ID:79544 发表于 2018-11-6 08:02 | 只看该作者
楼主还在吗?怎么编译不通过啊
回复

使用道具 举报

18#
ID:79544 发表于 2019-2-21 11:09 | 只看该作者
感谢楼主分享超详细的资料。楼主可以在具体说一下超声波定高代替气压计那块是怎么在固件里设置的吗?
回复

使用道具 举报

19#
ID:484589 发表于 2019-3-4 23:16 | 只看该作者
准备研究一下
回复

使用道具 举报

20#
ID:555941 发表于 2019-8-1 11:58 来自手机 | 只看该作者
楼主GPS部分的程序有错误啊,GPS_distance_cm是怎么回事
回复

使用道具 举报

21#
ID:388361 发表于 2019-8-30 00:22 | 只看该作者
很棒的內容,有過程。
回复

使用道具 举报

22#
ID:573210 发表于 2020-6-25 22:45 | 只看该作者
学习了,很好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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