MultiWii 飞控 DIY
本帖最后由 skypup 于 2016-1-23 18:35 编辑MultiWii 飞控是用在 Arduino 下开发的一个经典例程,原生程序目前最新版本是 2.4,此贴分享 DIY MWC(MultiWii Copter的简写)4轴过程。
目录
1 AVR Mega328P 的 Arduino 最小系统
2 OptiBoot
3 飞控电路板
4 多轴机架
5 WinGUI 软件及 PID 初步调整
4 多轴机架
机架的 CAD 图,选用的是 2mm 厚的层板。
组装后的效果图,除了电池,其它电子设备都放在机壳内部。
V型尾电机座
V型尾电机座的爆炸图
前机身电机座
前机身电机座的爆炸图
机身尾杆
机身尾杆的爆炸图,黑色层板是 MWC 飞控放置的位置。
完成后,加上 3S 11.1V 2200mAh电池,一共 815 克。
使用了4个 MT2213 电机,1045桨。普通 20A 电调。
本帖最后由 skypup 于 2016-1-23 17:46 编辑
1 AVR Mega328P 的 Arduino 最小系统
一个由 Mega328P 和几个常见元器件组成的 Arduino 最小系统:
这个系统由一个 Mega328P 单片机,16MHz晶振电路,一个10K的电阻将 Reset 脚上拉到 Vcc,再把串口引出来就好了。AREF 和 AVCC 管脚 ,可以连接 Vcc。
Arduino 程序的烧写是通过串口进行的,我们可以DIY一个 USB 转 TTL 的烧录器:
与普通4根线的 USB 转 TTL 不同的是,需要再多一条线将转换芯片的 DTR 管脚串联一个 104电容,再与 Mega328P 的 Reset 管脚连接。
建议使用 Arduino 1.0.5 版本,进行 MWC 代码的维护。
空的 Mega328P 芯片,可以使用 Tools 目录下的 Burn Bootloader 来烧写 Bootloader,烧写 Bootloader 之后,就可以通过串口来烧写 Arduino 程序了。
2 OptiBoot(此步骤可选)
OptiBoot 是 Arduino 的第三方 Bootloader,烧程序的速度快。
先下载压缩包,把 bootloader 文件放在正确的目录下。
再在 boards.txt 文件中加入 Mega328P 的代码段。
##############################################################
atmega328o.name= Arduino Duemilanove or Nano w/ ATmega328
atmega328o.upload.protocol=arduino
atmega328o.upload.maximum_size=32256
atmega328o.upload.speed=115200
atmega328o.bootloader.low_fuses=0xff
atmega328o.bootloader.high_fuses=0xde
atmega328o.bootloader.extended_fuses=0x05
atmega328o.bootloader.path=optiboot
atmega328o.bootloader.file=optiboot_atmega328.hex
atmega328o.bootloader.unlock_bits=0x3F
atmega328o.bootloader.lock_bits=0x0F
atmega328o.build.mcu=atmega328p
atmega328o.build.f_cpu=16000000L
atmega328o.build.core=arduino:arduino
atmega328o.build.variant=arduino:standard
在 Arduino 的 Tools -> Board 菜单项下增加了 OptiBoot 的 Mega328p 选项。
本帖最后由 skypup 于 2016-1-23 17:41 编辑
3 飞控电路板
由于传感芯片的封装比较难焊,我们可以直接买现成的传感器模块。
MWC 支持许多传感器模块,例如:
GY-521,仅支持自稳功能,10元左右。
GY-87,自稳和定高功能,但应用于多轴时,定高功能表现很一般,40元左右。
GY-86,自稳和定高功能,但应用于多轴时,定高功能表现稍好一些,65元左右。
原理图供参考:
PCB 是用傻瓜级的 Proteus 7 画的。
花30元去 taobao 打样、买元器件,焊好了就是这样的。
飞控板的安装需要注意2点:
1 减震。至少也得象征性的用3M的泡棉胶带粘到机身上。我一般还会给飞控上、下各粘一块凝胶垫,粘到机身后,再用胶带把飞控与机身整个粘一圈,让飞控受点儿力压在机身上,增加凝胶垫减震效果。
2 气压计。不要让气压计直接暴露在流动的空气中,可以加个壳;尽可能避免气压计被阳光直接照射,如果壳是黑色的也许会更合适。我们要做的这架4轴,飞控是放在机身里面的,所以受外界的干扰不会太大。
本帖最后由 skypup 于 2016-1-23 19:20 编辑
5 WinGUI 软件及 PID 初步调整
我选用 WinGUI 软件连接 MWC 飞控调参。WinGUI 是使用 C# 开发的。
PID 的初步调整:
MWC 的默认 PID 对于大多数飞机来说,已经足够稳了。
但是,对于这种V尾的非常规布局,默认 PID 的表现就很不好了。
第一步,自稳模式下,试飞时发现打方向舵时,整个飞机都在各种扭,而且方向舵特别灵。
初步判断是方向Yaw感度太高。事实上,这种V尾4轴的方向舵效明显高于常规4轴。于是,我们同步减小 YAW 的 P 和 I,P 从 6.8 减小到 3.0,I 从 0.045 减小到 0.020,这样调整之后,方向舵对飞行的影响就很不明显了,基本达到预期效果。
第二步,自稳模式下,调整Roll副翼和Pitch升降舵的PID。
先按这样的原则初步调一下:尝试加大P、D的值,如果有自激则减小P;如果反应慢感觉太肉,减小D。I 的值影响抗风性,在调整时与P同步增、减即可。
初步调整之后,Pitch 的 P 减小为 2.5,I 减小为 0.020,D 增加到 35。与普通 330mm 或者 450mm 机架的参数相近,正常。
Roll 由于在这个机架上,仅受前面2个电机影响,所以感度应当加大。 调整后的参数也是这样的,P 增加到 4.0,I 使用默认值 0.030,D 减小到 18。
第三步,定高。
对于 Altitude 的调整,我只是凭经验,习惯 P = 6.4 不变。
如果是 GY-86 的这种MS5611气压计,D 可以相对小一些,如 60;I 可以相对大一些,如:0.035。
如果是 GY-87 的这种BMP180气压计,D可以相对大一些,如80;I则相对减小一些,如:0.018。
以上只是完成了 PID 的初步调整,让小多轴能安全的飞行。
可以再花大量时间做细致的调整,每个人喜欢的飞行手感不一样,参数也会有差异,适合自己的参数就是最好的。这里的PID调参并没有唯一的标准。
请收下我的膝盖~~ 问下我用mage2560做的飞控板,但是硬件连接怎么看? 深邃1216 发表于 2016-5-28 09:47
问下我用mage2560做的飞控板,但是硬件连接怎么看?
就是 I2C 接口的4条线,连到传感器模块上就好了吧。
注意一下区分 3.3V 和 5V 的电压就好。 楼主你好,Bootloader可以直接用串口烧写?不是要用IPS啥的烧吗。。我有一块Pro mini烧程序的时候意外掉电,现在烧程序出现500的错误,我怀疑是Bootloader坏了,准备重新烧Bootloader
页:
[1]
2