0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

自制四轴飞行器之路

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-06-25 10:44 次阅读

四轴飞行器,又称四旋翼飞行器,简称四轴、四旋翼。四轴飞行器的四个螺旋桨与电机直接相连,通过改变电机转速获得旋转机身的力,从而调整自身姿态。

四轴的叶片转速极高,有一定的危险性,一般不能在室内飞,特别是在调试过程中更加不稳定,轻则炸鸡撞坏物品,重则伤到人。

我做四轴的主要目的是为了学习飞控算法,这个过程肯定少不了调试,为了安全,我选择做一个小一点的,手掌那么大的四轴,叶片的威力比较小,价格也便宜,即使摔坏也不心疼。

这种小四轴一般采用PCB做机架,用720空心杯电机代替无刷电机,用MOS管代替电调,电池采用3.7v锂聚合物电池(尺寸跟手机电池差不多,但是放电电流要大很多),遥控用2.4G无线模块,或者用蓝牙连接手机,成本100左右,续航时间大概6-7分钟,遥控距离在10米以内。

选择零件

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

市面上有许多现成飞控,也可以自己用电子元件做一个分控。有很多有名的开源飞控,例如KK,QQ,匿名,MultiWii/MWC,APM/PIX等。

KK、QQ飞控功能较少,只有基本的四轴飞行功能,甚至不支持GPS。

匿名飞控是国内新出现的飞控,功能比以上两个要多,价格也要贵很多。

MultiWii/MWC飞控是基于arduino的,支持GPS,能路线规划,在线调试。

APM也是基于arduino的,功能更为齐全,硬件也更为复杂,飞控中有两块单片机,分别执行不同功能。APM已将arduino的性能开发到极限,于是有了升级版PIX,从arduino转到了STM32,处理速度提升了10倍,同样用了两块不同型号的STM32协同运作,是目前已知的最好的开源飞控。

·

我打算自制飞控,选用我比较熟悉的arduino作为主控芯片。APM硬件结构太复杂,因此选择了MWC飞控。

这里说一句后话,如果打算学习飞控算法,还是选择简单的开源飞控比较好,MWC和APM/PIX都太复杂了,初学者并不能看懂这些代码,另外推荐用STM32芯片,arduino的标准库中并没有时间中断,要实现飞控的功能需要了解arduino更底层的知识,不会比想象中更简单。

搜索各种MWC的资料,查找需要的零件:

o4YBAFswVzuAVQcQAABTOkjQSVM498.png

包括备用件总共120元,比买现成的小四轴要稍贵一些,毕竟量产能降低成本。

我选用了arduino nano作为主控,体型还是有点偏大,用arduino mini更好。选择nano是因为其带自身带有USB接口,可以直接用USB接口下程序,而mini要用下载器。

事后发现更好的选择是mini Leonardo,nano和mini的芯片型号都是ATMEGA328P,只有一个串口,nano的USB是用另一块芯片转串口,不能跟串口同时使用,下载程序时要把跟串口相接的元件断开,而Leonardo的芯片型号是ATMEGA32U4,自身带有USB和串口,互不干扰。官方的Leonardo板型是跟UNO一样的,国内的厂家则把Leonardo做成了mini的板型,而且带有USB接口。值得注意的是,不确定飞控是否支持Leonardo,因为Leonardo的串口名是Serial1,而nano的串口名是Serial,可能需要修改代码。

不要用低功耗的蓝牙4.0模块,低功耗的蓝牙的传输速率不够,数据会阻塞,有很大的延迟。

HC-05 与 HC-06的区别是 HC-05 可以做主机,也就是可以用 HC-05 连接其他的蓝牙模块,而 HC-06 只能作从机。四轴上的蓝牙只做从机,HC-05 和 HC-06都可以用。

机架用的是淘宝已经做好的PCB,上面不能贴元件。

电机是7mm*20mm的空心杯电机:

代码编译

选完零件后,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只有源代码。

下完源代码之后,会看到一堆文件,初学者肯定会被吓一跳,其实,只需看config.h这个文件,通过注释或取消注释其中的代码配置飞控的模式。

o4YBAFswV5qABhw2AACUwoxfAwc618.png

config.h里全是英文说明,没过四级的同学要头大了,还好有万能的网友已经翻译了。

这里面的代码也非常多,如果只做空心杯小四轴的话就看我提取的关键点吧。(行数是原配置文件的行数)。

行数 代码 解释
39 define QUADX 设置成x四轴模式
72 define MINCOMMAND 1000 电机最小命令,如果解锁后电机转速太快,减小这个值
76 define I2C_SPEED 400000L 设置I2C速率为400K,用于mpu6050
80 //#define INTERNAL_I2C_PULLUPS I2C内部上拉,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 低通滤波器的频率,保持默认
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~911 battery 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

o4YBAFswV5uAR7c8AACYmkdgy_A396.png

o4YBAFswV5uAN8ATAACVR-8Uvys677.png

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

在面包板上连接电路测试:

我只接了nano、mpu6050和蓝牙,电机用四个LED代替。

如何用手机遥控四轴?

下载手机端软件,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如何用?

打开软件后第一页是四轴的仪表盘,能检测四轴的各项数据

o4YBAFswV5uABQ3DAABJEM17aU8628.png

第二页是对四轴的各种设置

o4YBAFswV5yAB635AABOj2IMKpk914.png

第三页是对EZ-GUI的设置

o4YBAFswV5yAQ7dVAAAvez1SAzE061.png

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

o4YBAFswV5yAO89BAABFiP0GWic665.png

然后到首页点右上角的【连接】,注意MPU6050要连上arduino nano,不然连接后会报错。显示连接成功后,把飞行器放在水平地面,到第二页进入【校准】,点击【加速度计标定】,等待校准完成。如果有磁力计还要磁力计标定。

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

o4YBAFswV5yAIvRjAACiZfnNoFg499.png

然后就会看到这样的界面:

o4YBAFswV5yAUpBOAAB9bG0amKg140.png

右上角设置,可设置各滑块的功能,THROTTLE是油门的意思

o4YBAFswV52Ab9fxAABJdidumBQ217.png

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

我把各种元件插在面包板上,用LED代替电机测试,解锁后,LED由灭变成亮,通过控制油门或方向,可以看到LED的亮度会发生变化。

硬件制作

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

空心杯电机驱动电路:

o4YBAFswV52AVaDNAABNxpLcTV4841.png

SI2302的内部电路图:

o4YBAFswV52AeqlWAAAO3Dn9CHw427.png

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

场效应管是用电压控制电流,作用跟三级管类似(三极管是用电流控制电流),相比于三极管,场效应管体积更小功率更大。

肖吉特二极管的作用是续流。电机是电感元件,有阻碍电流变化的特性,控制电机转速的方法是用PWM信号控制场效应管的通断,当场效应管断开时,电机两端会产生极高的感应电压击穿场效应管,加上二极管后,电机的电流会通过二极管保持流通,防止电机产生过高的感应电压。

为了防止电机引起的电流波动干扰到arduino,我在arduino的电源处接了一个220uF的钽电容。(其实没什么卵用!)

下图是焊接完后的背面,白色的是控制线,黑色和红色的是接电机的线。电机驱动电源部分要接一个拨动开关,防止arduino nano上电时不受控制的转,也用于失控时给电机断电。

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

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

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

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

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

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

o4YBAFswV56AIfosAAB0_C19aJo894.png

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

o4YBAFswV5-AXrQSAAAi5Wz9iis262.png

为了防止看不懂图,再用语言说一遍:

使四轴的前方与你的前方一致;

当四轴水平放置,ACC的Z值最大;

当四轴向右翻滚90度,右侧朝下,ACC的ROLL最大;

当四轴向前翻滚90度,头朝下,ACC的PITCH最大;

当四轴水平顺时针旋转,GYRO的YAW为正数;

当四轴向右翻滚,GYRO的ROLL为正数;

当四轴向前翻滚,GYRO的PITCH为正数;

指南针我没用,所以不调。

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

试飞

终于,将要迎来起飞的时刻!

但是,把四轴解锁,电机开始转,提高油门后四轴就失控了,电机一直狂转,跟手机的连接也断开了,还好加了开关和失控保护,电机转了一会就自动停了。

也许是电机干扰了蓝牙通信,不得而知。

而且感觉四轴有点太重了,用称不太精确的测了测重量,总重量70克。不知道这个重量是否能飞,比淘宝买的四轴要重很多。

总结:

桨的颜色是用来区分四轴的前后的,所以要红色各一正桨反桨,黑色各一正桨反桨。

一定要注意电源滤波,只加一个钽电容并没什么卵用,要学学电源滤波的知识。

要注意电池的重量,加大电池容量不一定会提升续航,毕竟电池重量也增加了,而且有可能飞不起来。

arduino最好选用leonardo的mini版型,leonardo自带USB接口,所以有两个串口,蓝牙和上传程序互不干扰。

arduino要选用3.3v的版型。

用洞洞板做四轴不太靠谱,太难焊接,而且焊锡走线增加了太多重量。洞洞板与机架固定用的螺丝也占了很大重量,不如直接做成机架与飞控一体的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机
    +关注

    关注

    139

    文章

    8317

    浏览量

    142159
  • 飞行器
    +关注

    关注

    13

    文章

    697

    浏览量

    45048
  • 四轴
    +关注

    关注

    0

    文章

    39

    浏览量

    13434

原文标题:从入门到放弃,我的自制小四轴之路......

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于飞行器的发展

    飞行器的发展背景;飞行器的研究现状;
    发表于 07-27 14:09

    飞行器原理

    飞行器原理图
    发表于 08-29 21:35

    飞行器

    上位机传给飞行器一段航线飞行器怎么按航线运动求类似代码最好有labview实现的航线规划
    发表于 05-21 20:45

    【GoKit申请】+基于GoKit云平台的微型飞行器设计

    微型可航拍高续航能力飞行器。项目开发周期:six month以往项目开发或DIY经验:1、智能电磁小车2、基于Pixhawk飞控的航拍
    发表于 05-08 14:18

    【专题分享】最新出炉的飞行器专题

    飞行器是近来在专业与非专业领域都非常火爆的技术产品。本专题主要给大家介绍飞行器的必备知识
    发表于 05-08 17:28

    如何学习自制飞行器

    什么要选这个题目泥~~因为我经常在电子论坛上看到一些人在做飞行器,各种飞行视频,各种厉害,自己很羡慕。快毕业了,导师让我们报题目,我就想做点什么好呢,一般的什么测距测温什么的太简单
    发表于 07-10 16:12

    飞行器的小程序

    本帖最后由 elecfans 于 2015-8-8 11:36 编辑 飞行器的小程序,附件有
    发表于 08-08 08:55

    【GoKit申请】基于GoKit的微型飞行器设计

    申请理由:我是在校研究生,以前的DIY经验:智能电磁小车和自制微型飞行器项目描述:使用GPS技术,实现基于RT-Thread和STM32的
    发表于 09-22 09:55

    【蓝牙4.1申请】蓝牙控制的飞行器

    申请理由:我们是在校大学生科研兴趣团队,正在设计制作无人 项目。现在无人机一般通过遥控或者电脑上位机控制
    发表于 10-09 14:16

    飞行器的结构原理

    飞行器的结构原理 飞行器,又称旋翼
    发表于 01-15 16:42

    【CANNON申请】飞行器

    申请理由:一直在做飞行器的设计,有着很好的开发经验,而这块开发板的传感恰好符合我的需求项目描述:以stm32作为主控 六陀螺仪的到
    发表于 01-26 13:59

    开源飞行器

    有没有大神有比较好的开源飞行器介绍啊?淘宝卖的或者一些开源项目也可以,需要做一个
    发表于 03-03 11:44

    求微型飞行器的教程

    本人小白想做个微型飞行器,想请教各位大神微型飞行器的教程,还有配件清单,谢谢
    发表于 04-19 14:54

    飞行器开发解密

    、产品简介及行业发展  《2014年中国飞行器市场现状分析及发展趋势研究报告》在具体研究中,采用定性与定量相结合、理论与实践相结合的方法,充分运用国家统计局、海关总署、
    发表于 01-02 16:16

    飞行器教程资料分享

    飞行器教程飞行器教程
    发表于 01-15 15:16