简介:PropCalc 是一款面向航模、无人机及小型飞行器初步设计场景的螺旋桨静推力与翼载荷估算工具,适合需要做动力选型、方案比较或实验验证的爱好者、学生与工程人员使用。软件为英文原版,可在 Windows 平台运行,解压后直接打开 PropCalc 即可操作,界面与使用流程较为轻量,便于在方案初期快速获得参考数据。压缩包约 1.92MB,页面未提供文件总数及类型明细,故不展开罗列内部文件;从用途看,其核心价值集中在螺旋桨静推力计算和翼载荷估算两项任务上。已有 1137 人学习下载,说明该工具在相关计算需求中具备一定参考价值。读者可借助它快速核算不同桨径、转速或机型参数下的估算结果,也可作为课程实验、航模调试和初步设计阶段的辅助计算手段,对需要做多方案横向比较的读者,能减少手工试算与重复记录的时间。
1. 螺旋桨静推力与翼载荷:先算清楚,再买电机和桨
一架 3.5 kg 的固定翼验证机,电机换了三颗、桨换了四副,起飞还是抬头就掉高度——绝大多数这种情况,问题不在气动布局,而在于螺旋桨静推力和翼载荷这两笔账被分开算了:桨是按"店家说这副桨拉力大"选的,机翼是按"看着差不多"定的,两边一对接,推力余量和失速速度都对不上,飞起来自然满身玄学。PropCalc.zip 就是把这两笔账并到一条链上的计算器:给定桨径、螺距、叶片数、转速,按动量理论加叶素修正给出静推力与轴功率;再拿起飞重量和翼面积算翼载荷、失速速度、推力余量,最后反推"这套动力到底能不能把这副翼带上天"。它适合做固定翼、复合翼、多旋翼改型的前期选型,也适合手里攒了一堆电机桨叶参数、想在买件之前先筛一遍的人。它不替代台架实测,但能让你在焊第一根线之前就知道这套组合的边界在哪。
2. 两个模型一条主线:动量理论与叶素理论怎么选、怎么对
2.1 静推力的真实自变量只有两个
静推力指的是来流速度为零、桨在原地把空气往后推时产生的轴向力。这个工况下,几何固定之后真正起作用的只有转速和环境密度,其余参数最终都折算成这两个量。工程上习惯用无量纲写法:
T = C_T · ρ · n² · D⁴
其中 n 是每秒转数、D 是桨直径、ρ 是大气密度。这个式子的价值在于量纲关系清楚:定转速时推力正比于 ρ,桨径翻一倍推力涨 16 倍;而定轴功率时是另一套关系——由动量理论推出来的 T ∝ ρ^(1/3),密度掉 20%,定功率下的推力只掉约 7%。很多人上高原直接把推力按密度比例打八折,方向是对的但幅度错了,就是因为没分清楚自己是"定转速"还是"定功率"在飞。C_T 本身不是常数,它随前进比 J 变化,静推时 J=0,这个值才是桨型对比的基准点。
2.2 动量理论:一行公式覆盖大部分初筛
动量理论把桨盘当成一个无限薄的作动盘,空气穿过盘面时压力突跳、速度连续,由此得到理想悬停功率 P_ideal = T^1.5 / √(2ρA)。反过来,只要知道传到桨上的轴功率和桨径,就能直接解出理想推力。真实桨有型阻、有桨尖损失、有叶型损失,用一个品质因数 FM 把这些损耗一口气折进去,FM 的物理含义是"理想功率 / 实际轴功率"。
# momentum.py —— 由轴功率反算静推力(动量理论 + 品质因数修正) import math RHO = 1.225 # 海平面 ISA 大气密度,kg/m^3 G = 9.80665 # 标准重力加速度 def static_thrust_from_power(power_w, diameter_m, fm=0.62, rho=RHO): """ power_w : 真正传到桨上的轴功率,W(不是电池端功率,也不是电调输入功率) diameter_m : 桨直径,米 fm : 品质因数,小直径薄桨 0.45~0.55,优化过的大桨 0.65~0.75 """ area = math.pi * diameter_m ** 2 / 4.0 # P_ideal = T^1.5 / sqrt(2*rho*A),实际轴功率 P = P_ideal / FM # 反解:T = (FM * P * sqrt(2*rho*A))^(2/3) return (fm * power_w * math.sqrt(2.0 * rho * area)) ** (2.0 / 3.0) if __name__ == "__main__": for d_in in (9, 10, 12, 15): T = static_thrust_from_power(power_w=350, diameter_m=d_in * 0.0254) print(f"{d_in:>2} inch {T:6.2f} N = {T / G:5.2f} kgf")这段代码最常被填错的是第一个参数。电调输入功率乘上电机效率才接近轴功率,常见做法是电机效率取 0.80~0.88、电调按 0.95 折算,也就是电池端功率打个七五折左右再喂进去。第二个容易拍脑袋的是 FM:10 寸以下的小桨、桨叶又薄又少,FM 给到 0.62 会明显高估,0.50 更贴近实测;大直径、宽弦、翼型优化过的桨可以给到 0.70 上下。如果手上有台架数据,反解 FM 比查表靠谱得多——把实测推力和实测功率代进公式,反算出来的那个 FM 才是你这副桨的真实水平。
2.3 叶素理论:把桨叶切成 60 段做积分
动量理论只看盘面整体,说不出桨叶形状的影响;叶素理论把桨叶沿展向切成若干小段,每段当成一个二维翼型,用当地来流合速度算升力和阻力,再分解到轴向和切向。静推工况下入流速度只有两个来源:旋转带来的切向速度 2πnr,和桨自己诱导出来的轴向速度 v_i。麻烦在于 v_i 又依赖推力,推力又依赖 v_i,只能迭代。
# bemt.py —— 静推工况下的叶素-动量迭代(固定点迭代) import math def bemt_static(rpm, diameter_m, chord_m, pitch_deg, blades=2, cl_alpha=5.7, cd0=0.02, rho=1.225, stations=60, relax=0.3, iters=300): n = rpm / 60.0 # 转/秒 R = diameter_m / 2.0 dr = R / stations vi = 1.0 # 诱导速度初值,m/s,给个正数即可 for _ in range(iters): T = Q = 0.0 for i in range(stations): r = (i + 0.5) * dr # 段中心半径 vt = 2.0 * math.pi * n * r # 切向速度 phi = math.atan2(vi, vt) # 入流角 alpha = math.radians(pitch_deg) - phi # 当地攻角 cl = min(max(cl_alpha * alpha, -0.3), 1.15) # 线性段 + 失速截断 w2 = vt * vt + vi * vi q = 0.5 * rho * w2 * chord_m * dr dL, dD = q * cl, q * cd0 T += blades * (dL * math.cos(phi) - dD * math.sin(phi)) Q += blades * (dL * math.sin(phi) + dD * math.cos(phi)) * r # 动量理论给出的诱导速度,与叶素积分结果对齐 vi_new = math.sqrt(max(T / (2.0 * rho * math.pi * R * R), 1e-8)) vi += relax * (vi_new - vi) # 松弛因子,防止来回振荡 return T, Q * 2.0 * math.pi * n # 返回 (推力 N, 轴功率 W)几个参数值得说清楚。stations取 40~80 之间结果基本收敛,再多只是增加耗时;relax是松弛因子,给 1.0 时中等转速下容易在两个值之间来回跳,0.2~0.4 比较稳;cl_alpha是升力线斜率,薄翼型取 5.7 左右(单位是每弧度),厚翼型会低一些;cd0是型阻系数,小桨常在 0.02~0.04。最大的简化在chord_m和pitch_deg:真实桨有收缩、有扭转,这里当常数处理,所以结果是"等效矩形桨"的推力,绝对值会偏高 5%~15%,但用来横向比桨径、比转速、比叶片数的相对趋势足够。想要更准,就把弦长按 r/R 线性递减、安装角按扭转规律写成一个 lambda,改两行就行。
2.4 两套结果对不上时看哪里
同一副 10 寸桨、同样 350 W 轴功率,动量理论给出大约 13~14 N,叶素理论可能给出 15~16 N,差 15% 属于正常。判断哪个更可信,看手里有什么输入:只有功率和桨径,动量理论是唯一能算的路;有完整桨几何、有弦长和扭转数据,叶素理论信息量更大。真正需要警惕的是两侧都偏离实测,那多半是输入错了,不是模型错了。
| 场景 | 优先用哪个 | 原因 |
|---|---|---|
| 只有电机功率、桨径,做初筛 | 动量理论 | 不需要桨叶几何,误差可控 |
| 手上有桨的弦长与扭转数据 | 叶素理论 | 能反映叶片形状差异 |
| 桨尖速度接近 0.7 马赫 | 两个都要加修正 | 压缩性效应,线性升力线失效 |
| 对比不同桨径的同一系列 | 动量理论 | 相对趋势稳定 |
| 复现台架实测数据 | 叶素理论 + 反解 cd0 | 可调参数多,能拟合 |
一个我常做的检查:先算桨尖马赫数 Ma_tip = π·n·D / 343。超过 0.65 之后,两套模型的偏差会迅速拉大,实测推力也会比计算值掉得快,这时候不是改参数能救的,该换转速或者换小桨了。这一步加在脚本里只要一行,但能省掉很多"为什么算出来 20 N 实测只有 16 N"的困惑。
3. 参数表落地:桨径、螺距、KV 与电池到底怎么填
3.1 输入参数表:单位与常见取值范围
计算器最容易翻车的环节不是模型,是单位。桨径用英寸标、弦长用毫米标、转速用 rpm、功率用 W,中间漏乘一个 0.0254,结果能差 645 倍。我的习惯是在入口处强制断言,凡是长度一律转成米、凡是转速一律转成每秒,中间过程不再出现英寸。
| 参数 | 计算器内部单位 | 含义 | 常见填法 |
|---|---|---|---|
| 桨直径 D | m | 决定盘面积和 C_T 的量纲基准 | 10 inch = 0.254 m |
| 几何螺距 P | m | 决定零来流下的等效安装角 | 4.7~7 inch |
| 叶片数 B | 片 | 影响实度和相邻叶片干扰 | 2 片或 3 片 |
| 转速 n | rps | 必须用负载下的估算或实测值 | 由 KV 与电压推 |
| 电机 KV | rpm/V | 空载每伏转速,非负载转速 | 多旋翼 900~1400 |
| 电池节数 | S | 标称电压 = 3.7 × S | 3S / 4S / 6S |
| 大气密度 ρ | kg/m³ | 随海拔、温度变化 | 海平面 1.225 |
| 翼面积 S | m² | 机翼平面投影面积 | 0.25~0.6(3~5 kg 级) |
| 最大升力系数 | 无量纲 | 决定失速速度 | 1.1~1.4(带襟翼可到 1.8) |
螺距这一栏要多说一句。几何螺距不等于每转前进的距离,静推时桨原地转,螺距只通过"把螺距换算成当地安装角"影响入流角。常见做法是用 tanβ = P / (2πr) 在 0.75R 处折算出一个等效安装角,喂给叶素模型,这比直接填厂商标的螺距数字更自洽。
3.2 从电池到桨上的实际转速:把 KV 值算成 RPM
KV 值的定义是空载时每伏对应的转速,直接拿 KV × 电池电压当工作转速,是所有误差里最大的一项,静推往往高估 20%~30%。真实转速要扣掉电池内阻压降、电调压降、以及负载下的电机转差。
# rpm_est.py —— 从电池参数估算负载下的桨转速 def prop_rpm(kv, cells, load_a=30.0, r_pack_ohm=0.012, esc_drop_v=0.35, gear_ratio=1.0, cell_v=3.7, load_slip=0.90): """ kv : 电机 KV 值,rpm/V cells : 电池节数 load_a : 该工况下的工作电流,A r_pack_ohm : 整包内阻,Ω(单节约 0.003~0.008,乘节数) esc_drop_v : 电调导通压降,V,常见 0.3~0.5 gear_ratio : 减速比,直驱填 1.0 load_slip : 负载转差系数,直驱常见 0.85~0.92 """ v_oc = cells * cell_v v_load = v_oc - load_a * r_pack_ohm - esc_drop_v return kv * v_load * load_slip / gear_ratio if __name__ == "__main__": # 4S 电池、KV 900、工作电流 35 A 的直驱组合 print(round(prop_rpm(900, 4, load_a=35), 1)) # 约 10500 rpmload_slip这个系数是最玄学的一项,它把电机铜损、铁损、螺旋桨负载特性全折进去了。直驱多旋翼上取 0.88 通常比较贴近实测;减速组要把gear_ratio填对,否则转速能差好几倍。有光电转速计的话,实测一次反解这个系数,比任何经验值都准。另外注意load_a是先有鸡还是先有蛋的问题:电流依赖负载、负载依赖转速。稳妥做法是先给个 0.6 倍满油门的电流估个转速,算出推力后再回代修正,两轮基本收敛。
3.3 前进比与螺距:静推之外的第一道外推
静推力算完,很多人顺手就把结果当成"飞行中的拉力"用,这是第二个大坑。前进比 J = V / (nD) 描述来流速度相对桨的强弱,J=0 是静推,J 增大到 0.3 以后,推力系数 C_T 会明显往下走,效率曲线在 J≈0.5~0.7 附近才到峰值。也就是说静推力最大的桨,巡航效率未必好;反过来,一副为巡航优化的桨,静推往往偏软。
实操上我一般算三个点:J=0 的静推(决定能不能起飞、能不能爬升)、J=0.4 左右(决定巡航有没有余量)、以及 J=0.7(看这副桨是不是已经过了效率峰)。这套计算器的叶素部分支持传入来流速度,把 v_i 的迭代里加上 V 的分量就行;动量部分则可以按 C_T(J) 的经验曲线做缩放。两个点算完,选桨的逻辑就清楚了:载荷重、跑道短,优先静推;续航优先,看 J=0.4 附近的拉力够不够。
3.4 一次完整的算例:10 寸桨、4S、3.5 kg 机体
把前面几块拼起来跑一遍。已知:起飞重量 3.5 kg,翼面积 0.36 m²,4S 电池,KV 900 直驱,10×4.7 两叶桨,海平面。
import math from rpm_est import prop_rpm from momentum import static_thrust_from_power from bemt import bemt_static G = 9.80665 mass, area = 3.5, 0.36 rpm = prop_rpm(900, 4, load_a=35) print(f"工作转速 {rpm:.0f} rpm") # 路线 A:叶素理论(弦长 0.022 m,等效安装角 18°) T_be, P_be = bemt_static(rpm, 0.254, 0.022, 18.0, blades=2) # 路线 B:动量理论,用叶素算出的轴功率回代,做交叉校验 T_mo = static_thrust_from_power(P_be, 0.254, fm=0.55) W = mass * G for name, T in (("叶素", T_be), ("动量", T_mo)): print(f"{name}: 推力 {T:5.2f} N 推重比 {T / W:4.2f} " f"翼载荷 {W / area:6.1f} Pa")跑出来的推重比如果在 0.55~0.75 之间,对固定翼来说是"能飞但不宽裕"的区间;低于 0.5 就要重新考虑桨径或者减重。翼载荷 W/S 在 95 Pa 上下,对应失速速度大概 7 m/s 出头,着陆进场速度按 1.3 倍失速算,跑道不能太短。这两个数一起看,才知道问题出在动力还是出在翼载——只盯着推力看,容易把翼面积不足误判成电机不行。
4. 翼载荷与失速速度联动:从推力余量反推翼面积
4.1 翼载荷、失速速度与推力余量的三角关系
翼载荷 W/S 是起飞重量除以机翼投影面积,单位 Pa 或 kgf/dm²。它决定了失速速度:Vs = √(2W / (ρ·S·CLmax))。推力余量则决定"能不能在失速速度以上还有加速能力"。这三者的耦合关系是选型时最容易忽略的:翼载荷加 20%,失速速度涨 10%,而维持同样的过载能力需要的升力系数也涨 20%,一旦顶到 CLmax 附近,机动性会突然塌掉——这就是很多验证机"平飞没事、一转弯就掉"的根子。
计算器把这块做成两个方向:正向是"给定重量和面积,算翼载荷、失速速度、各速度下的需用功率";反向是"给定目标失速速度和 CLmax,反推需要多大翼面积"。做改型设计时,反向更常用:先把着陆速度定死(受场地限制),其余全从它推。
4.2 从目标失速速度反推翼面积
# wing.py —— 翼载荷与失速速度的正反算 import math G, RHO = 9.80665, 1.225 def wing_loading(mass_kg, area_m2): W = mass_kg * G return W / area_m2, W def stall_speed(mass_kg, area_m2, cl_max=1.25, rho=RHO): W = mass_kg * G return math.sqrt(2.0 * W / (rho * area_m2 * cl_max)) def area_for_stall(mass_kg, target_vs, cl_max=1.25, rho=RHO): W = mass_kg * G return 2.0 * W / (rho * cl_max * target_vs ** 2) if __name__ == "__main__": for vs in (6.0, 7.0, 8.0): S = area_for_stall(3.5, vs) print(f"目标失速 {vs} m/s -> 需要翼面积 {S:.3f} m^2," f"翼载荷 {3.5 * G / S:6.1f} Pa")cl_max的取值直接决定结果,也最容易被高估。干净翼型在雷诺数几十万的模型尺度上,CLmax 常常只有 1.0~1.2,比教科书上的 1.5 低不少;带襟翼能到 1.6~1.8,但襟翼放下来的阻力和低头力矩要另算。我一般按"干净构型 1.1、襟翼全放 1.6"两档分别算,取保守的那个定翼面积,这样进场速度有安全余量。反向算出来的面积如果比现有翼面积大 30% 以上,别急着改翼——先看是不是重量估得太乐观,或者目标失速速度定得不切实际。
4.3 爬升率与功重比:把推力换算成能不能爬
有了静推力,还要落到"爬不爬得动"。爬升率来自剩余功率,用推力形式表达就是 ROC = (T − D)·V / W,在某个速度上算需用阻力 D,剩下的推力全部转成爬升。
# climb.py —— 给定速度下的爬升率估算 import math def climb_rate(v_ms, mass_kg, thrust_n, area_m2, cd0=0.030, aspect=7.0, e=0.80, rho=1.225): W = mass_kg * 9.80665 cl = W / (0.5 * rho * v_ms ** 2 * area_m2) cd = cd0 + cl ** 2 / (math.pi * e * aspect) D = 0.5 * rho * v_ms ** 2 * area_m2 * cd return (thrust_n - D) / W * v_ms, cl, cd for v in (9, 11, 13, 15): roc, cl, cd = climb_rate(v, 3.5, 14.0, 0.36) print(f"V={v:2d} m/s CL={cl:4.2f} CD={cd:5.3f} ROC={roc:5.2f} m/s")cd0是零升阻力系数,模型机上 0.028~0.035 是常见区间,起落架、外露设备多就往高取;e是奥斯瓦尔德效率因子,常规布局 0.75~0.85;aspect是展弦比。这三个参数里cd0影响最大,也是最没有把握的一个——真要准,得用滑翔试验反解:关动力、配平、记录下沉率和速度,反推 L/D 曲线。不过对于"这套动力够不够"的判断,cd0差 20% 通常不影响结论,因为爬升率对推力更敏感。
看结果时注意一个现象:爬升率随速度不是单调的,先升后降。低速段受限于需用升力系数高、诱导阻力大;高速段型阻上去了。那个峰值速度就是最佳爬升速度,通常比失速速度高 30%~50%。如果算出来所有速度下 ROC 都是负的,那不用调参数了,推重比根本不够。
4.4 多旋翼的等效翼载荷:盘载荷
固定翼讲翼载荷,多旋翼对应的概念是盘载荷,即总重量除以所有桨盘面积之和:DL = W / (N·π·D²/4)。这个数的量级和意义跟翼载荷不同,但用途一样——判断悬停效率的粗略档位。盘载荷低于 60 N/m²,悬停效率通常比较好看;超过 120 N/m²,桨盘诱导速度高、下洗强,效率掉得很快,续航会明显缩水。
计算器的多旋翼模式里,盘载荷和悬停功率是联动的:给定重量和桨数,反推每副桨需要承担的推力,再用动量理论算理想悬停功率,乘上 FM 得到实际功率,最后除以电池可用能量估悬停时间。这条链路里误差最大的是电池可用能量——标称容量打个 0.8 折是基本操作,高倍率放电时内阻发热还会再吃掉一部分,别按满容量算。
5. 避坑与排查:五条血泪记录
5.1 单位与量纲类
现象:算出来的静推力是 3400 N,实际连 34 N 都不到,一度怀疑模型写错了。
原因:桨径那一栏直接填了 10,代码当成 10 米处理。盘面积差了 645 倍,推力按面积的三分之二次方走,正好两个数量级。
解决:在所有入口函数第一行加单位断言,assert 0.05 < diameter_m < 2.0,超范围直接抛异常。另外统一在配置里写INCH = 0.0254,禁止裸写换算系数——我见过同一份脚本里三处换算用了三个不同的近似值。
现象:翼载荷算出来 9.5,一会儿是 Pa 一会儿是 kgf/dm²,跟别人的数据对不上。
原因:模型机圈子里翼载荷习惯用 g/dm² 或 kgf/dm²,气动计算用 Pa,中间差 98.07 倍。
解决:内部一律用 Pa,输出时再按需转换,并且在每个打印语句的单位后缀里写清楚。养成"数字不带单位就是错"的习惯。
5.2 模型假设类
现象:静推力算出来 18 N,台架实测只有 13 N,差了快 30%。
原因:转速用的是 KV × 电压,没算负载压降和转差;同时 FM 按 0.65 给的,小桨实际只有 0.5 左右。两个误差同向叠加。
解决:转速走 3.2 节的负载模型,FM 按桨径分档:9 寸以下 0.48~0.55,10~15 寸 0.55~0.65,15 寸以上 0.65~0.72。有条件就实测一个点反解 FM,把这副桨的真实值钉死。
现象:海平面算得好好的,到了 2000 米海拔的场地,起飞距离翻了快一倍。
原因:密度按 1.225 算的。2000 米、30℃ 时密度只有 0.95 左右,掉了 22%。推力按 ρ^(1/3) 到 ρ 之间缩放,桨的转速也会因为空气变稀而上升,实际情况比单纯折算是复杂的。
解决:把密度做成输入参数,用 ρ = P/(R·T) 现算,或者按海拔查表。所有输出都带一句"基于 ρ=xxx"的标注,换场地时先改这个数。
5.3 结果解读类
现象:静推重比 0.9,看着很猛,实际飞起来爬升还不如推重比 0.7 的另一架。
原因:那副桨是为静推优化的大直径低螺距桨,J=0 时数据好看,一进入巡航前进比,效率掉得厉害;另一架的桨 J=0.5 附近效率高,实际飞行中更省。
解决:至少算 J=0 和 J=0.4 两个点,把两条推力曲线画在一起看交点。选桨看的是任务剖面里用得最多的那个 J,不是静推最大值。这一条吃过一次亏就忘不掉。
现象:桨尖速度算出来 Ma 0.78,推力计算值还在涨,实测却开始掉,噪音大得吓人。
原因:线性升力线和动量理论都没考虑压缩性。桨尖接近音速时出现激波和失速,效率骤降,模型完全失效。
解决:把 Ma_tip = π·n·D/343 作为硬约束加到脚本里,超过 0.65 打警告,超过 0.72 直接拒绝输出结果。宁可少算一个工况,也别拿错误结果去选电机。
6. 进阶:批量扫描与台架验证的最小闭环
单点计算只是起步,真正有用的是扫描。把桨径、转速、叶片数做成网格,跑一遍就能看出哪个组合落在推重比 0.6~0.8、桨尖马赫数 0.6 以下的可行域里。下面这段是我常用的批量入口,输出直接是 CSV,扔进电子表格就能画图。
import csv, itertools, math from bemt import bemt_static from wing import stall_speed rows = [] for d_in, rpm, blades in itertools.product((9, 10, 11, 12), range(7000, 14001, 1000), (2, 3)): D = d_in * 0.0254 ma_tip = math.pi * (rpm / 60.0) * D / 343.0 if ma_tip > 0.72: # 压缩性硬约束,直接跳过 continue T, P = bemt_static(rpm, D, chord_m=0.022, pitch_deg=18.0, blades=blades) rows.append([d_in, rpm, blades, round(ma_tip, 3), round(T, 2), round(P, 1), round(T / P * 20, 2)]) # 简易效率指标 with open("sweep.csv", "w", newline="") as f: w = csv.writer(f) w.writerow(["D_in", "rpm", "blades", "Ma_tip", "T_N", "P_W", "T_over_P"]) w.writerows(rows)弦长固定 0.022 m 是个粗糙假设,扫描的绝对值只能当趋势看,但"哪几个组合被马赫数卡掉""桨径翻倍后推力涨多少"这类结构性的结论是可信的。我一般会先扫一遍去掉不可能区域,再对剩下的三五个候选做单点精细计算。
验证环节别省。最小闭环是一台电子秤(厨房秤就够,量程按最大推力的 3 倍选)、一个光电转速计、一段能读到电流电压的遥测。把桨装好、秤平放、桨轴垂直向上,油门从 30% 开始每 10% 一档,记录推力、转速、电压、电流。拿到数据后做两件事:一是用实测功率和实测推力反解 FM,二是用实测转速回代叶素模型看偏差。我见过太多例子,模型和实测差 20% 以上,原因既不是模型也不是代码,而是电机 KV 标错了、桨装反了、或者电池根本喂不满电流。台架半小时,能省掉后面几周的猜。
从那以后我每次做完一轮扫描,都会强制挑最高的那个候选做一次台架,哪怕只测一个油门点——计算器给的是方向,秤给的是底线。希望帮到你。
本文还有配套的精品资源,点击获取