无人机设计_1
为什么要做无人机动力建模
在设计多旋翼无人机时,我们通常会对无人机的一些参数有一定要求,通常为悬停耐力、系统效率、最大负载、最大俯仰和最大飞行距离。然而这些值我们应该如何得到呢?由于多旋翼无人机系统相对于其他无人机系统较为简单,这些性能指标通常就由推进系统决定,包括电机、螺旋桨、电子调速器、电池等。故我们对无人机动力建模,然后以此来选择型号尤为重要。下文我会介绍一种建模方法,以便我们选型1。
模型求解
动力系统建模的参数
动力系统建模分为四部分:螺旋桨建模、电机建模、电调建模、电池建模。以下是这些模型所需各个器件的输入参数表
| 器件 | 参数指标 |
|---|---|
| 螺旋桨 | \boldsymbol{\Theta}_{\mathrm{p}}=\left\{\right. 直径 D_{\mathrm{p}} , 螺距 H_{\mathrm{p}} ,桨叶数 B_{\mathrm{p}} ,叶片平均气动弦长 c_{\mathrm{p}} ,重量 \left.G_{\mathrm{p}}\right\} |
| 电机 | \boldsymbol{\Theta}_{\mathrm{m}}=\left\{\right. 标称空载电流 I_{\mathrm{m} 0} ,标称空载电压 U_{\mathrm{m} 0} ,标称空载 KV 值 K_{\mathrm{V} 0} ,最大电流内阻 R_{\mathrm{m}} ,重量 \left.G_{\mathrm{m}}\right\} |
| 电调 | \boldsymbol{\Theta}_{\mathrm{e}}=\left\{\right. 最大电流 I_{\mathrm{e} \text { Max }} ,内阻 R_{\mathrm{e}} ,重量 \left.G_{\mathrm{e}}\right\} |
| 电池 | \boldsymbol{\Theta}_{\mathrm{b}}=\left\{\right. 总容量 C_{\mathrm{b}} ,内阻 R_{\mathrm{b}} ,总电压 U_{\mathrm{b}} ,最大放电倍率 K_{\mathrm{b}} ,重量 \left.G_{\mathrm{b}}\right\} |
可以看到,我们求解我们所需要的性能指标,需要我们先已知器件的参数,有没有什么办法能依靠模型选出这些参数呢?总不能自己一个个去试吧。有的兄弟,有的。在2也有介绍无人机选型的算法,有需要可以自行了解,这篇文章我们专注于对模型的介绍。
模型求解思路
总模型我们可以通过器件的不同再次拆分为以下几类:螺旋桨模型、电机模型、点调模型、电池模型。
在已知载重和旋翼个数的情况下,我们可以通过螺旋桨的参数来得到螺旋桨的拉力和转矩,然后再通过电机模型得到电机所需的等效电压和等效电流,随后通过点调模型得到点调输入电流和电压,最后由电池模型得到放电时间即悬停时间。
螺旋桨模型
对于螺旋桨,拉力和扭矩分别为
\begin{aligned}
T & =C_T \rho\left(\frac{N}{60}\right)^2 D_p^4 \\
M & =C_M \rho\left(\frac{N}{60}\right)^2 D_p^5
\end{aligned}
这里空气密度\rho(kg/m^3)随着海拔h(m)变化,公式如下
\rho=\frac{273 p}{101325\left(273+T_t\right)} \rho_0
其中p_0 = 1.293kg/m^3为标准空气密度
大气压p(Pa)的计算公式为
p=p_0\left(1-0.0065 \frac{h}{273+T_t}\right)^{5.2561} .
接下来的任务是找出C_T和C_M他们的公式为
\begin{aligned} C_T & =f_{C_T}\left(\Theta_p\right) \\ C_M & =f_{C_M}\left(\Theta_p\right) \end{aligned}
对于f_{C_T}和f_{C_M}
\begin{aligned}
& f_{C_T}\left(\Theta_p\right) \triangleq 0.25 \pi^3 \lambda \zeta^2 B_p K_0 \frac{\varepsilon \arctan \frac{H_p}{\pi D_p}-\alpha_0}{\pi A+K_0} \\
& f_{C_M}\left(\Theta_p\right) \triangleq \frac{1}{8 A} \pi^2 C_d \zeta^2 \lambda B_p^2
\end{aligned}
其中
C_d=C_{f d}+\frac{\pi A K_0^2}{e} \frac{\left(\varepsilon \arctan \frac{H_p}{\pi D_p}-\alpha_0\right)^2}{\left(\pi A+K_0\right)^2}
对于未说明的元素,定义和推荐取值如下
| 符号 | 参数名称 | 定义/说明 | 取值 |
|---|---|---|---|
| A | 展弦比 (Aspect ratio) | 定义为 A = D_p / c_p(螺旋桨直径与桨叶弦长之比) 。 | 5–8 |
| \varepsilon | 修正因子 (Correction factor) | 用于修正由于下洗气流(Downwash)引起的有效攻角变化的系数。 | 0.85-0.95 |
| \lambda | 修正系数 (Correction coefficient) | 桨叶面积修正系数,用于计算桨叶有效面积 S_{sa} = \frac{B_p}{2}\lambda D_p c_p。 | 0.7-0.9 |
| \zeta | 转速修正系数 | 描述平均转速与尖端转速之间关系的系数。 | 0.4 \sim 0.7 |
| e | 奥斯瓦尔德效率因子 (Oswald factor) | 表征机翼/桨叶诱导阻力与理想情况偏差的系数。 | 0.7–0.9 |
| C_{fd} | 零升力阻力系数 (Zero-lift drag coefficient) | 描述在不产生升力时的基本阻力,取决于叶片厚度、雷诺数等因素。 | 0.015 |
| \alpha_0 | 零升力角 (Zero-lift angle of attack) | 当升力系数 C_l 为零时的攻角,用于确定绝对攻角 \alpha_{ab} = \alpha - \alpha_0。 | -\frac{\pi}{36} \sim 0 |
电机模型
电机模型的目的是通过电机的参数最终得到电机的电流和电压,以供我们后续的计算,我们定义
\begin{aligned}
U_m & =f_{U_m}\left(\boldsymbol{\Theta}_m, M, N\right) \\
I_m & =f_{I_m}\left(\boldsymbol{\Theta}_m, M, N\right) .
\end{aligned}
而电压和电流我们通过下式得到
\begin{aligned}
f_{U_m}\left(\Theta_m, M, N\right) \triangleq & R_m\left(\frac{M K_{V 0} U_{m 0}}{9.55\left(U_{m 0}-I_{m 0} R_m\right)}+I_{m 0}\right) \\
& +\frac{U_{m 0}-I_{m 0} R_m}{K_{V 0} U_{m 0}} N
\end{aligned}
f_{I_m}\left(\Theta_m, M, N\right) \triangleq \frac{M K_{V 0} U_{m 0}}{9.55\left(U_{m 0}-I_{m 0} R_m\right)}+I_{m 0}
电调模型
我们可以通过[电机模型]求得的U_m和I_m,\Theta_b,\Theta_c来通过电调模型得到电池最终输出的电压和电流I_e和U_e还有占空比\sigma
\begin{aligned}
\sigma & =f_\sigma\left(\boldsymbol{\Theta}_e, U_m, I_m, U_b\right) \\
I_e & =f_{I_e}\left(\sigma, I_m\right) \\
U_e & =f_{U_e}\left(\boldsymbol{\Theta}_b, I_e\right)
\end{aligned}
通过电机的等效模型我们可以得到
U_{eo} = U_m +I_mR_e
电调的占空比为
\sigma=\frac{U_{\mathrm{eo}}}{U_e} \approx \frac{U_{\mathrm{eo}}}{U_b}
最终电调的输出为
I_e = \sigma I_m
我们得保证I_e要小于最大电流
电调的电压由电池组提供,由内阻模型可知
U_e = U_b - I_bR_b
其中I_b是电池的电流,由于多旋翼无人机电调的数量等于旋翼的数量,故
I_b = n_rI_e + I_{control}
最终
\begin{aligned} f_\sigma\left(\Theta_e, U_m, I_m, U_b\right) & \triangleq \frac{U_m+I_m R_e}{U_b} \\ f_{I_e}\left(\sigma, I_m\right) & \triangleq \sigma I_m \\ f_{U_e}\left(\Theta_b, I_b\right) & \triangleq U_b-I_b R_b \end{aligned}
电池模型
电池模型主要用于求出持续时间T_b将T_b抽象为以下函数
T_b=f_{T_b}\left(\boldsymbol{\Theta}_b, I_b\right)
简化电池放电过程方便计算,使用以下模型可直接求得
f_{T_b}\left(\Theta_b, I_b\right) \triangleq \frac{C_b-C_{\min }}{I_b} \cdot \frac{60}{1000}
其中C_{min}最好在15\% \sim 20 \%之间
I_b还需要满足
I_b \le C_bK_b
参数求解
现在我们需要根据我们的模型来求解出我们的参数
| 器件 | 型号 | 参数 |
|---|---|---|
| 螺旋桨 | 乾丰 Gemfan Hurricane 6045-3 | 直径D_p = 6 inch 俯仰高H_p = 4.5 inch 浆叶数B_p = 4螺旋桨重量G_p = 7g |
| 电机 | 朗宇三代X2216 | 标称空载电机常数 K_{V0} = 1400 最大电流 I_{mMax} = 50A 标称空载电流 I_{m0} = 1.2A 电机内阻 R_m = 32.2 m\Omega 电机重量 G_m = 72g |
| 电调 | HAKRC海科四合一 40A | 最大电流 I_{eMax} = 40A 电调内阻 R_e = 未知 电调重量 G_e = 6g |
| 电池 | 双天HED系列5050 | 容量 C_b = 5050mAh 电池内阻 R_b = 未知 总电压 U_b 最大放电倍率 K_b 电池重量 G_b |
对于以上器件型号如何选择的,以后会再出一篇来讲解
下面来求解我们的无人机参数,包括悬停时间,最大推力下的参数,最大负载和最大俯仰角,最大前飞速度和距离
悬停时间
在悬停模式下,无人机需要保持高度不变。这意味着所有螺旋桨产生的总推力必须刚好等于飞机的重力 G。
如果你的无人机有 n_r 个旋翼(比如四旋翼就是 4 个),那么单个螺旋桨所需的推力 T^* 为:
T^* = \frac{G}{n_r}
有了推力,我们就能反推出螺旋桨所需的转速 N∗ 和扭矩 M∗。这两个值是连接空气动力学与电机的桥梁:
N^* = 60 \sqrt{\frac{T^*}{\rho D_p^4 f_{CT}(\Theta_p)}}
M^* = \rho D_p^5 f_{CM}(\Theta_p) \left( \frac{N^*}{60} \right)^2
得到了螺旋桨的转速和扭矩后,我们要算出电机需要多少电压 U_m^* 和电流 I_m^*:
U_m^* = f_{Um}(\Theta_m, M^*, N^*)
I_m^* = f_{Im}(\Theta_m, M^*, N^*)
紧接着,我们要考虑电调(ESC)。电调通过调节占空比 σ 来控制电机速度。同时,我们还得算出电调输入端的电流 I_e^* 和电压 U_e^*:
\sigma^* = f_\sigma(\Theta_e, U_m^*, I_m^*, U_b)
I_e^* = f_{Ie}(\sigma^*, I_m^*)
最后,我们需要计算电池的总输出电流 I_b^*。注意,除了驱动电机的电流,还要加上控制系统(如飞控、图传)的功耗 I_{control}:
I_b^* = n_r I_e^* + I_{control}
有了总电流,根据电池容量 C_b 和放电特性,我们就能得出最终的悬停时间 Tloiter∗:
T_{loiter}^* = f_{Tb}(\Theta_b, I_b^*)
最大推力下的参数
在最大推力下,占空比\sigma^* = 1这意味着电机的等效电压U^*_m达到它的峰值,我们可以通过以下方程来求解I_m^*, U_m^*, M^*, \text {和} N^*
\begin{aligned}
f_\sigma\left(\Theta_e, U_m, I_m, U_b\right) & =1 \\
M-\rho D_p^5 f_{C_M}\left(\Theta_p\right)\left(\frac{N}{60}\right)^2 & =0 \\
U_m-f_{U_m}\left(\Theta_m, M, N\right) & =0 \\
I_m-f_{I_m}\left(\Theta_m, M, N\right) & =0
\end{aligned}
基于之前的公式,我们最终将得到
\begin{aligned}
I_e^* & =f_{I_e}\left(1, I_m^*\right) \\
I_b^* & =n_r I_e^*+I_{\mathrm{control}} \\
U_e^* & =f_{U_e}\left(\Theta_b, I_b^*\right)
\end{aligned}
系统的效率为
\eta^*=\frac{\frac{2 \pi}{60} n_r M^* N^*}{U_b I_b^*}
最大负载和最大俯仰角
最大负载和最大俯仰角与与无人机的安全性密切相关,计算时因保证足够的控制余量,故控制最大占空比应该在\sigma = 0.7 - 0.9之间。本文取0.8。根据以下方程我们可以解出I_m^*, U_m^*, M^*, \text { 和 } N^*
\begin{aligned}
f_\sigma\left(\Theta_e, U_m, I_m, U_b\right) & =0.8 \\
M-\rho D_p^5 f_{C_M}\left(\Theta_p\right)\left(\frac{N}{60}\right)^2 & =0 \\
U_m-f_{U_m}\left(\Theta_m, M, N\right) & =0 \\
I_m-f_{I_m}\left(\Theta_m, M, N\right) & =0 .
\end{aligned}
然后计算推力的式子为
T^*=\rho D_p^4 f_{C_T}\left(\Theta_p\right)\left(\frac{N^*}{60}\right)^2
因此我们就能得到最大负载和最大俯仰角
G_{\mathrm{maxload}}^*=n_r T^*-G .
\theta_{\max }^*=\arccos \frac{G}{n_r T^*} .
最大前飞速度和距离
我们求解最大前飞速度和距离可以由以下三个步骤得出,首先先求解最大前飞速度,随后通过最大前飞速度求解最大前飞距离,最后优化这两个数值

最大前飞速度
在稳定前飞时,无人机需要通过倾斜机身来产生向前的水平分力,以抵消空气阻力 F_{\text{drag}}。
- 平衡公式:F_{\text{drag}}(\theta) = G \tan \theta
- 这意味着俯仰角 \theta 越大,水平向前的推力分量就越强,能克服的阻力也越大。
通常我们认为阻力系数是一个常数,但在大幅度俯仰(最高可达 90^\circ)的情况下,无人机迎风面的形状一直在变。文章引入了一个动态的阻力系数公式:
C_D(\theta) = C_1 (1 - \cos^3 \theta) + C_2 (1 - \sin^3 \theta)
这里的 C_1 和 C_2 是根据机身外形通过 CFD 模拟得出的常数。这个公式优雅地描述了随着倾角变化,机身受风面积和形状对阻力的综合影响。
最终
V(\theta) = \sqrt{\frac{2G \tan \theta}{\rho S [C_1 (1 - \cos^3 \theta) + C_2 (1 - \sin^3 \theta)]}}
最大前飞距离
电机速度N(\theta)为
N(\theta)=60 \sqrt{\frac{G}{\rho C_T D_p^4 n_r \cos \theta}} .
因此电机转矩为
M(\theta)=\frac{G C_M D_p}{C_T n_r \cos \theta}
最后我们可以通过以下方程求解出前飞时间T_{fly}
\begin{gathered}
U_m(\theta)=f_{U_m}\left(\boldsymbol{\Theta}_m, M(\theta), N(\theta)\right) \\
I_m(\theta)=f_{I_m}\left(\boldsymbol{\Theta}_m, M(\theta), N(\theta)\right) \\
\sigma(\theta)=f_\sigma\left(\boldsymbol{\Theta}_e, U_m(\theta), I_m(\theta), U_b\right) \\
I_e(\theta)=f_{I_e}\left(\sigma(\theta), I_m(\theta)\right) \\
I_b(\theta)=n_r I_e(\theta)+I_{\text {control }} \\
T_{f l y}(\theta)=f_{T_b}\left(\boldsymbol{\Theta}_b, I_b(\theta)\right)
\end{gathered}
总飞行距离和时间的关系为
Z(\theta)=60 V(\theta) T_{\text {fly }}(\theta) .
优化数值
我们可以通过数值遍历法来求解以下两个问题,遍历所有的角度,最终暴力破解出最大值
V_{\max }=\max _{\theta \in\left[0, \theta_{\max }\right]} V(\theta)
Z_{\max }=\max _{\theta \in\left[0, \theta_{\max }\right]} 60 \mathrm{~V}(\theta) T_{\text {fly }}(\theta)