我假定大家都上过高中,让这篇文章让有高中基础就可以看懂,看完这篇文章,就可以自己造一架属于自己无人机了,本文稍微有点硬核,这篇大概是整个系列里面最难的一篇

先科普一下 地面效应

当运动的飞行器距离地面(或水面)很近时,整个飞行器体的上下压力差增大,升力会陡然增加

还有就是地面效应时产生翼尖涡流导致的造成航空器的不稳定(起降时 pitchroll 就很危险 )

更通俗的说就是飞机在离地面很近时 (对于 F450 大概 0~1M ,一般是机翼与地面距离低于两倍弦长)时会出现特殊的气流,和在空中不同,这个在飞机起飞和降落是会有影响,有些飞机会提供一键起飞和一键降落的功能,帮助新手完成起降

无人机的地面效应也会影响气压计,进而影响对高度的判断,最常见的现象就是降落后桨没有停止转动,飞机会跳几下再停止转动。解决方法就是在气压计传感器增加海绵,减小突变气流的干扰;增加超声波/激光传感器综合判断高度

多旋翼概况

多旋翼里也是分机型的,不过原理是一样的。

  • X4(对称的4轴多旋翼(四个完全一样),典型的代表:大疆的精灵系列)
  • X6(和4轴一样,多了两个轴)
  • H4(两个两个一样,一般是前后)
  • Y3 这个机型也比较特殊(三个螺旋桨)
  • Y6 螺旋桨上下都有,方向相反,机架和 Y3 类似
  • V 型 也叫 BiCopter 型,电机角度会可以侧倾
  • 等等,还有其他机型,参考各飞控支持的机型

本篇使用就以大疆风火轮 F450 为例(风火轮就是哪吒的风火轮,因为还有哪吒飞控 naza),DIY 一个多旋翼无人机的最小系统

F450 是 X4 型飞机(450 指的是轴距 450mm)

其他的多旋翼都可以看成是四旋翼的变种

这是一个整体的架构图:

autopilot

使用的 draw.io 绘制的,源文件在这里,可以随意使用 autopilot.drawio

机架

就是无人机的那个骨架,一般是由塑料或碳纤维制成(F450 是塑料的)

下图:大疆 F450 (这个机架是 X4 型)

f450

轴距是多旋翼无人机中非常重要的一个参数,通常被定义为电机轴心轴围成的外接圆周的直径,单位毫米mm,对称多旋翼无人机中轴距即为对角线上的两个电机轴心的距离,轴距的大小确定了螺旋桨的尺寸上限

机臂上反角

multicopter dihedral

这个可不是摔弯的,是故意设计成这样的

这个是来自大疆官方的解释

上反角是指机臂相对于机架水平面的夹角,上反角的目的是为了增强飞机在近地面的悬停性能。 由于在近地面悬停时的气流会翻到螺旋桨气动平面上方引起气流扰动导致飞机晃动,此时增加上反角保护飞机上方气流稳定可提升悬停稳定性能。 一般来说,上反角不宜过大,8° 左右即可。

固定翼也是有的类似设计的:

wing dihedral

电机侧倾角

电机侧倾角是指沿着机臂方向看向电机,电机的侧向旋转角度。侧倾角的目的是为了增加航向角的机动性能。一般来说侧倾角不宜过大,3° 左右即可

螺旋桨

螺旋桨是无人机的动力系统之一,材质一般为、塑料、碳纤维等,根据飞行器的参数要求选择。 螺旋桨的规格型号 螺旋桨规格,一般由 4 位数字表示,前两位数表示直径,后两位表示螺距。 以 1060 桨为例,10 表示桨的直径是 10 英寸,60 表示桨角。(螺距,6.0 英寸,也就是 152.4mm)

按照旋转方向可以分为正桨和反桨(一般正反对称且数量相等)

桨属于消耗品,可以折叠的和不可折叠的。按安装方式分,快拆桨和普通桨,有两个桨页的话三个桨页(三个桨页的一般用于穿越机,无人机竞速比赛时用的)

注:F450 机架可以使用 9450 自锁桨,和大疆精灵系列同型号的桨

高原桨

高海拔需要相应的高原桨,在于海拔越高,空气质量越稀薄,使得桨在相同转速下,所能提供的拉力变小了,从而无法使飞机达到较好机动性能

静音桨

  1. 改变桨型。通过选取一个更优的桨型,降低无人机飞行过程中电机转速,使得无人机的桨叶切割空气的速度相对而言没那么快,就能降低一部分的噪声。
  2. 桨尖特殊的结构设计。桨叶在旋转过程中,桨尖转动的线速度最大,基于这种原理,静音桨在设计的时候,桨尖稍往后掠,且变得更窄一点的结构方式能减小桨叶切割空气的声音,从而实现“静音”的效果

DJI Mavic Pro 静音桨

silent propeller

无刷电机

有刷电机工作原理

有刷电机是大家最早接触的一类电机,中学时物理课堂上介绍电动机也是以它为模型来展示的。有刷电机的主要结构就是定子+转子+电刷,通过旋转磁场获得转动力矩,从而输出动能。电刷与换向器不断接触摩擦,在转动中起到导电和换相作用

brushed motor

无刷电机工作原理

无刷电机中,换相的工作交由控制器中的控制电路(一般为霍尔传感器+控制器,更先进的技术是磁编码器)来完成。

无刷电机使用的是三相电,需要靠电子调速器把直流电转换成三项电

brushless motor

为什么要用无刷电机

  1. 无刷电机去除了电刷,最直接的变化就是没有了有刷电机运转时产生的电火花,这样就极大减少了电火花对遥控无线电设备的干扰
  2. 运转时摩擦力大大减小,运行顺畅,噪音会低许多,这个优点对于模型运行稳定性是一个巨大的支持。
  3. 少了电刷,无刷电机的磨损主要是在轴承上了,从机械角度看,无刷电机几乎是一种免维护的电动机了,必要的时候,只需做一些除尘维护即可
  4. 有刷电机调速过程是调整马达供电电源电压的高低。调整后的电压电流通过整流子及电刷地转换,改变电极产生的磁场强弱,达到改变转速的目的。这一过程被称之为变压调速
  5. 无刷电机调速过程是马达的供电电源的电压不变,改变电调的控制信号,通过微处理器再改变大功率 MOS 管的开关速率,来实现转速的改变。这一过程被称之为变频调速
  6. 航模的功率比较大,航模动力电池实现大电流比实现高压容易,而大电流对触点要求太高,有刷的话很难做到那么小巧

这些其实都不能成为要用无刷电机的原因,因为无刷电机组成的动力系统比有刷电机组成的动力系统成本和复杂度都高出好多

对于这个问题,我找到好多资料并没有找出答案。为此,我只能跑去求各路神仙(找了好多人,大部分人的看法是):

功率与重量比值高

重要参数:KV

以 朗宇 A2212 / KV 980 为例

有些文章会给你讲:2212 是定子的外径和高度,A系列是 “内转子槽无刷电机“

并没有哪个标准里这样定义过(最可笑的是这些文章互相抄袭,早已丢失了上文)

A2212 这个厂家的命名,不具备任何参考价值,因为不同的厂家命名规则不一样(朗宇是 “定子的外径和厚度”,A 是自己定义的系列名)

KV 的概念是指无刷电机工作电压每提升 1V 无刷电机所增加的转速 r/min

无刷电机 KV 值低的有几百到 2 千 3 千的,高的到 5 千 6 千的(电机越大,扭矩越大,KV 越小)

电机 KV 值:电机的转速(空载)= KV 值 * 电压;例如 KV980 的电机在 10V 电压下它的转速(空载)就是 9800 RPM (r/min or 转/分钟

电子调速器 Electronic Speed Control(ESC)

这里面特指无刷电机电子调速器

输入 PWM 信号,和电源。输出三相交流电(三根火线的那种)相位相差 120°

esc

使用的 draw.io 源文件在这里,可以随意使用 esc.drawio

还记得上一篇讲过的多旋翼的电机转向吗?电机转向是有要求的

三相交流电的连接顺序可以改变电机的转动方向(这个是实际测试出来的,所以无桨调试是必须的)

也不一定都是 PWM 输入,现在有个趋势是用 CAN 总线输入(大疆早就用 CAN 了,开源的是 UAVCAN 标准,很多组件都在逐渐采用)

FOC (Field-Oriented Control)

无刷电机其实可以分为 无刷直流电机(BLDC,我们航模一般都是用这种)永磁同步电机(PMSM)

BLDC 接收的是方波,在低速下无法控制,PMSM 接收的是正弦波,噪音,力矩都有更好的表现,在低速下也可以控制,还可以反转

FOC 电调就是直接输出正弦波。需要配合 永磁同步电机(PMSM)

FOC 的原理和实现,请看这篇 【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术

免电池电路 Battery Eliminator Circuitry(BEC)

模型运动早期,遥控模型还没有出现电动模型(没有主控,使用接收机和遥控器混控来控制)的时代,只有接收机需要单独的供电,直接让电调实现这个功能可以更精简,这就是 BEC(免电池电路)的由来

对于无人机(电调并不是只有无人机在用),可以直接忽略掉这个参数

BEC 大多采用线性稳压方式,线性稳压方式的优点是线路简单,体积小,只要一个稳压管就可以了,但缺点是转换效率不高,稳压的时候能量损耗大(线性稳压效率一般只有 65%-70% ),所以在工作过程中稳压管会很烫(电调发烫的主要热量来自这个稳压管,真正控制电机的 MOS 开关管其实发热量不大的)由于其效率不高,自然输出电流不可能很大,一般最大也就 1A 左右

动力系统的搭配

一般有两种类型可以选的,无刷电机的动力系统,空心杯电机动力系统,大部分的多旋翼都是无刷电机(大疆全部都是用无刷电机的),空心杯电机一般用在小的玩具机上(价钱便宜,但结构限制很难有大号的空心杯电机)

动力系统是由 桨,电机和电调组成,但该如何知道轴距,电机型号和桨之间该如何搭配?

  1. 直接找卖家,买成套动力系统套装
  2. 自己计算

不过这年头造飞机不需要懂空气动力学,直接套公式算就行,甚至不需要自己算,直接通过网页版工具直接算

这个是比较专业的在线工具: ecalc.ch/xcoptercalc

ecalc.ch/xcoptercalc

北航做的在线计算工具(这个只能算多旋翼):https://flyeval.com/

魔豆窝航模论坛做的多轴飞行器计算工具 http://www.modouwo.com/AMoDouWo/QC.html

飞行控制器

飞行控制器简称 “飞控”,可以说是多旋翼最核心的部分。没有飞控多旋翼可以飞吗?当然可以了,对遥控器通道输出设置混控,人肉控制自稳,飞控的 Acro 模式就是这样

开源飞控和商业飞控

飞控的核心是软件,当然有开放源代码的和不开放源代码的

风火轮 F450 大疆官方的指定的是 naza(哪吒)飞控(当然,大疆早停产了)

开源飞控和 Linux 基金会下面的 Dronecode。你没有听错,就是 Linux 内核的 Linux。Dronecode 的基金会属于 Linux 基金会

飞控没有 linux 内核,飞控里使用的是实时操作系统 RTOS。ardupliot (ChibiOS),PX4 (NuttX)

讲个笑话:ROS (Robot Operating System) 不是 RTOS(Real-Time Operating System) 是一个机器人操作系统,可以跑在 Linux 上,但不是 RTOS,ROS 不是实时,靠下位机来保证实时的

dronecode 下的两大飞控:

PX4ardupliot (ardupliot 后来离开了 dronecode,大概是因为 GPL 协议,赞助商们不喜欢这个,就一起投票给 T 了)

用关系数据库做个比喻:PX4 就好像 PostgreSQL,ardupliot 就像 MySQL

ardupliot 这个名字来自于 arduino pliot (最早是用 arduino 实现的) 代码就是一坨屎山(对,这句话就是我说的,配套生态代码也很糟糕,只能说 “能用” )这个大概是历史遗留,毕竟迭代了好多年

PX4 是由苏黎世理工的计算机视觉与几何实验室的一个软硬件项目 PIXHAWK 演变而来。源码是经典。(反正我看过,传言)。。。PX4 的 4 是这个项目被重写了四次,之后开源出来的

除此之外还有穿越机的飞控比如 openpilot 的 CC3D,和适合读源码学习的 MWC (MultiWii Copter)飞控(这个代码极为精简)

算法

我要事先声明一下,飞控算法部分是我自己的理解,因为我没有自己做过飞控,我只用过现成的飞控

这是一个典型工业自动控制系统架构

automatic control architecture

传感器拿到的数据,经过姿态解算(四元数组)给卡尔曼滤波,过滤误差值,之后给 PID 控制器,输出控制信号

姿态解算 四元数,欧拉角

controller diagram

使用的 draw.io 绘制的,源文件在这里,可以随意使用 controller_diagram.drawio

可以去看这篇文章了解一下如何进行软件姿态解算了

四轴的姿态解算无疑是最繁琐的步骤没有之一,但是自从 MPU6050 出现了硬件 DMP 的时候,大妈都能完成姿态解算了!

有些传感器支持硬件解算,不需要自己写计算步骤

Crazepony开源四轴飞行器

卡尔曼滤波 Kalman Filter

一般来说,拿到的数据不够精确(传感器会有误差)。还有多个传感器数据需要融合,使用卡尔曼滤波去除噪声和数据融合

这张图来自于维基百科:黑色的是真实值; 绿色的是滤波后的结果; 红色的是传感器采集的值

https://upload.wikimedia.org/wikipedia/commons/d/da/Kalman.png

黑色的是真实值; 绿色的是滤波后的结果; 红色的是传感器采集的值

PID 算法,下面这张图来自于维基百科

https://upload.wikimedia.org/wikipedia/commons/4/41/PID_loop.svg

PID 算法,这张图来自于维基百科

PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法

控制模式

几乎所有的飞机的控制模式都是差不多的(可能名字不同,功能类似)

  • Acro 特技模式:没有自稳,飞控只做了混控(手动在空中翻滚用的就是这种模式,大疆的产品直接去掉了这种模式)
  • Stabilized 稳定模式:相当于特技模式加上了自稳功能,
  • Position 位置模式:配合支持双回中的遥控器,可以像大疆的姿态模式或 GPS 模式的操作一样
  • Mission 任务模式:或者说航线模式,事先定义好飞行路径,这个模式按照自动飞行

Stabilized 和 Position 的区别在于油门的控制:

Stabilized 是将 throttle 的值直接映射个飞行器,是一个绝对值的控制(throttle中点不是平衡点)

Position 有中间位置,throttle 中点是定高,是一个相对值的控制(throttle中点就是平衡点)

Stabilized 操作比较复杂,一般要练习好久才能掌握,比较古老的多旋翼有使用这种模式控制的(有些便宜的玩具无人机也只有这种控制模式)

环绕飞行,一键起降本质上就是任务模式的扩展,生成一个任务让飞机飞执行

单片机 Micro Controller Unit(MCU)

就以 STM32F103 为例吧,反正常见的单片机都可以,AVR,msp430 之类的都可以。ardupliot 项目最早是用 arduino uno 实现的

比如有四个轴,MCU 输出四路 PWM 分别给四个电子调速器

再加上遥控器的控制,至少要五个通道(加一个控制模式切换)

惯性测量单元 Inertial Measurement Unit(IMU)

惯性测量单元是测量物体三轴姿态角(或角速率)以及加速度的装置,最好安装在被测物体的重心上,也可以把偏移量也输入进去

就是一个三轴加速度传感器和三轴陀螺仪(角度)放在一起,经典型号当然是 MPU6050 (大疆飞机里也用过这款)

https://upload.wikimedia.org/wikipedia/commons/d/d5/Gyroscope_operation.gif

三轴磁力计

三轴磁力计是采用三个互相垂直的磁阻传感器,每个轴向上的传感器检测在该方向上的地磁场强度。

通过惯性测量单元已经可以因解出空间中的位置,为什么还有用这个?

三轴加速度和三轴陀螺仪理论是完全可行的,但实际上会有两个问题:累积误差零点漂移

任何传感器都是有误差的,根据陀螺仪原理,测得是变化量,每次都会有误差,长期运行会有累积误差

零点漂移 (zero drift)是由于材料特性:

晶体管是温度的敏感器件,使静态工作点发生变化,如电源电压不稳,这样就形成了零点漂移、环境温度变化等、ICBO 都将发生变化

随着多旋翼工作,温度的变化会产生,导致测不准

types of drift

除了零点漂移还有 其他漂移

三轴磁力计就是为了修正这个误差

经典型号:HMC5883

也有把三轴加速度陀螺仪和三轴磁力计放在一个模块里面,连四元数和欧拉角直接硬件算结果的模块

遥控器 Radio Control (RC)

这个接收端和地面发射器一般是配套的,通信频段有 2.4G 的也有其他频段的

接收端有几路 PWM 输出 MCU 。至少要有四路 PWM 。(throttlepitchrollyaw

一般都用五路 PWM 以上的,再加一路控制飞行模式。剩下的可以控制云台

遥控器一般可以输出三种信号

  • PWM (Pulse-Width Modulation)就是占空比,一路信号一根线
  • PPM (Pulse-Phase Modulation)脉冲相位调制,可以用一根线输出多路 PWM 发送的信息量
  • S.Bus 这个是二进制的通信协议,靠 MCU 编解码

美国手 和 日本手

美国手,在航空模型刚刚兴起之时,只有一个通道可供控制,于是便用来控制旋转方向,上升下降全凭电机开关与否。由于只有一个控制摇杆,自然多数人都选择用右手控制。后来,随着技术的发展,加入了油门也就是上升下降的控制,这时便将其分配到了左手的位置。由于这种模式形成最早

国内有许多有经验的飞手都是日本手,这是由于早期的遥控器多数是日本进口,因此一旦养成了习惯便很难再改回来了。

中国手,也有人称作 “反美国手”,因为其与 “美国手” 完全相反,更像是游戏手柄的延伸

目前国内多旋翼的话基本上都是默认 “美国手”

radio control

使用的 draw.io 源文件在这里,可以随意使用 radio_control.drawio

还有一种说法是:日本手适合固定翼,美国手适合直升机

遥控器推荐两个品牌吧:

  • futaba 日本的,这个领域的最好产品
  • frsky 这是一家中国的公司,这个支持 openTX 开源遥控器固件,产品好的和进口的一样

航模电池

航模电池全称聚合物锂电池,用在飞机上的电池要极高的放电倍率

锂电的标准电压是 3.7V ,这个是化学性质决定的。要更高的电压要串联起来

将各电芯(Cell)放在一起,组成一块电池。一般有几块电芯就称之为几 s 的电池,s 指的是电芯数

容量单位一般都用 毫安时(mAh)。1000mAh 就是这个电池能保持 1000 毫安(1安培)放电一小时

对于飞机上使用的有个非常重要的参数:C (放电倍率)。如果是 1000mAh 10C,这个电池可以最大以 10A 的电流放电

无人机一般只能飞十几分钟,至少要 5C 以上的电池。(一般都用 10C 以上甚至更高,要考虑突然加速的瞬时功率)

平衡充电器

由于电池是多个电芯独立,充电时要分开控制电压和电流

锂电池充电器分成两种:串充和并充

锂电池有两组线:平衡头(电芯数+1 的排线),电源(两根粗线)

并充

独立供电的充电器,一般体积重量都比较巨大,对每个电芯都进行独立控制

由于每一路都可以独立控制,只接一组平衡头就可以了

串充 (被动均衡)

这个体积小,便宜。充电时要把平衡头和电源都接上,才能充电

这个是使用电源那个口进行充电,平衡头那个口用于平衡,流过全部电芯的电流是一样的。

先一起充电后放电来平衡各电芯(先充满的电池会边充边放)

这两种充电器各有优缺点,自己用其他电源一个一个电芯的充电也是可以的(抢救电芯一般都这么干)

还有使用不同的充电策略对电池寿命也是有影响的(快充会影响电池寿命)