简介:PropCalc 是一款面向螺旋桨选型、航模与小型飞行器设计者的静推力与翼载荷计算工具,英文原版,适用于 Windows 桌面环境。它针对设计初期缺少实测条件时快速估算螺旋桨静推力、比较不同参数组合的需求,可用于方案初筛、课堂演示和实验前参数预估。压缩包体积约 1.92MB;上游暂未提供文件总数与主要类型明细,从描述看属于解压后可直接打开使用的轻量工具包,不依赖复杂安装流程。已有 1137 人学习或下载,说明其在相关计算场景中具有一定参考价值。读者可借此获得一个可运行的计算入口,记录不同螺旋桨参数下的静推力结果,辅助完成初步选型与翼载荷校核,并为后续风洞实验、仿真建模或飞行测试提供对照数据。
1. 静推力算出来和台架差 20%:先看清 PropCalc 在算什么
桨装上去、油门推满,台架读数 1.02 kg,计算器给你 1.24 kg,差两成,你信哪个?螺旋桨静推力翼载荷计算器 PropCalc 要解决的就是这种对不上的问题:把桨径、螺距、叶片几何、转速,和整机重量、机翼面积放进同一套输入输出里,一边算静推力、诱导速度、轴功率和功率载荷,一边算翼载荷、失速速度和推重比。正在做固定翼或多旋翼选型的人最需要它——手里摊着七八支桨和三四台电机,缺一张能横向比较的表;带课程设计、要把公式落到具体数字上的人也合适。它不是飞行仿真软件,给的是静态工况下的工程量级和趋势,动态响应、桨叶颤振、地面效应这些它管不了。
2. 从动量理论到叶素法:静推力模型的三层结构与选型理由
计算器里跑的是什么,决定了你该信它几分。PropCalc 这类工具通常把静推力拆成三层:动量理论给出上限,叶素积分补上几何细节,品质因数 FM 把理想值拉回地面。三层缺一层,结果就飘。很多人拿到计算结果只盯着最后那个牛顿数,其实中间两个量——桨盘面积和诱导速度——才是判断「这组数合不合理」的抓手。
2.1 动量理论:只用桨径和轴功率就能框出静推力上限
把螺旋桨看成一个无限薄的作动盘,空气从盘前静止加速到盘后远方的 2v_i,盘面处速度为 v_i。动量方程给出推力 T = 2ρA v_i²,能量方程给出理想功率 P = T·v_i,两式消掉 v_i 就得到静推力对功率的闭式解:
T = (2ρA P²)^(1/3)
这个式子最有用的一点不是算得多准,而是把标度关系摊开了:推力跟桨盘面积的三分之一次方成正比,跟功率的三分之二次方成正比。功率翻倍,推力只涨 1.59 倍;桨径翻倍、功率不变,推力也是涨 1.59 倍。这就是为什么大直径低转速的桨在悬停和慢速爬升上永远占便宜——同样的电功率,大桨把能量换成了更大的质量流量,小桨只能换成更高的出口速度,后者除了噪声什么也没多给。
import math RHO = 1.225 # 海平面标准大气密度 kg/m^3 D = 0.254 # 桨径 m,10 寸桨 P = 150.0 # 轴功率 W,等于电功率乘电机效率 FM = 0.58 # 品质因数,先按经验取,第 6 章用台架数据反标定 A = math.pi * (D / 2) ** 2 # 桨盘面积 m^2 P_ideal = FM * P # 理想诱导功率 W T = (2 * RHO * A * P_ideal ** 2) ** (1 / 3) # 静推力 N v_i = math.sqrt(T / (2 * RHO * A)) # 桨盘处诱导速度 m/s n = 100.0 # 转速 rev/s,即 6000 rpm tip_speed = math.pi * D * n # 桨尖线速度 m/s print(f"A={A:.4f} m^2 T={T:.2f} N ({T/9.81:.2f} kgf) vi={v_i:.2f} m/s") print(f"桨尖速度={tip_speed:.1f} m/s 桨尖马赫数={tip_speed/343:.2f}")这段代码里每个量都有物理含义,别当成公式搬运。D 必须填直径不是半径,单位是米不是英寸,这是翻车率最高的一处;P 是轴功率不是电池端功率,中间隔着电机效率,常见的 0.75~0.85 之间取值;FM 先给 0.58 只是为了让数跑起来,它的正确值来自你手里那支桨的实测。跑完你会得到 A≈0.0507 m²、T≈9.8 N、v_i≈8.9 m/s,桨尖速度 79.8 m/s,马赫数 0.23——还远没到压缩性起作用的位置,动量理论在这个工况是站得住的。
注意:
tip_speed/343这个自检一定要留着。桨尖马赫数超过 0.6 以后,叶素法里的升阻特性表全部失效,动量理论的 FM 经验区间也不再适用,这时候算出来的数字只能当参考,不能当依据。
2.2 叶素法:把弦长、扭角和升阻比补进积分
动量理论有三个问题它自己解决不了:同样 10 寸、同样 150 W,2 叶和 3 叶谁推力大?螺距 4.5 和 7 哪个静态更划算?桨叶根部扭 30° 和扭 25° 差多少?这些问题必须把桨叶切成一段段来看。叶素法的做法是把半径方向分成 N 个环形微元,每个微元上算出当地来流角 φ = atan(v_i / (ωr)),攻角 α = β − φ,再从升阻极曲线拿到 Cl 和 Cd,最后沿半径积分出推力和扭矩。
静推力工况的特殊之处在于:没有前进速度,唯一的轴向来流就是桨自己诱导出来的 v_i。这形成一个闭环——v_i 决定攻角,攻角决定推力,推力又要和动量方程给出的推力对上。所以静态反而比有来流时更难收敛,迭代写错方向就是发散或者收到一个负数。
def blade_element_static(D=0.254, n=100.0, B=2, c_root=0.022, c_tip=0.012, beta_root=0.45, beta_tip=0.15, cl0=0.35, cla=5.6, cd0=0.018, k_ind=0.045, alpha_stall=0.24, rho=1.225, N=60): """静态(来流为 0)叶素-动量迭代,返回 (推力 N, 轴功率 W, 诱导速度 m/s)。 角度全部用弧度,beta 从旋转平面量起,顺时针为正。""" R = D / 2.0 omega = 2 * math.pi * n def element(vi): T = 0.0 Pw = 0.0 for i in range(N): r = R * (i + 0.5) / N # 微元中心半径 dr = R / N c = c_root + (c_tip - c_root) * (r / R) # 弦长线性分布 beta = beta_root + (beta_tip - beta_root) * (r / R) # 扭角线性分布 W = math.hypot(omega * r, vi) # 当地合速度 phi = math.atan2(vi, omega * r) # 来流角 alpha = beta - phi alpha = max(-alpha_stall, min(alpha_stall, alpha)) # 失速截断 cl = cl0 + cla * alpha cd = cd0 + k_ind * cl * cl dL = 0.5 * rho * W * W * cl * c * dr dD = 0.5 * rho * W * W * cd * c * dr T += B * (dL * math.cos(phi) - dD * math.sin(phi)) Pw += B * (dL * math.sin(phi) + dD * math.cos(phi)) * omega * r return T, Pw lo, hi = 1e-4, 60.0 # 诱导速度搜索区间 m/s for _ in range(80): # 二分法闭合动量方程 mid = 0.5 * (lo + hi) T_bem, _ = element(mid) T_mom = sum(4 * math.pi * rho * ((R * (i + 0.5) / N)) * mid ** 2 * (R / N) for i in range(N)) if T_bem > T_mom: # 叶素推力偏大,需要更大的诱导速度 lo = mid else: hi = mid vi = 0.5 * (lo + hi) T, Pw = element(vi) return T, Pw, vi T, Pw, vi = blade_element_static() print(f"T={T:.2f} N ({T/9.81:.2f} kgf) P={Pw:.1f} W vi={vi:.2f} m/s")几个参数值得单独说。c_root/c_tip是根部和尖部的弦长,10 寸桨典型在 22 mm 和 12 mm 附近;beta_root/beta_tip是扭角,从旋转平面量起,根部 25°~30°、尖部 8°~10° 是航模桨的常见形态;cla是升力线斜率,单位是 1/rad,薄翼理论给 2π≈6.28,实际有限展弦比和厚翼型会低到 5.0~5.8;k_ind是诱导阻力因子,0.04~0.06 之间调。二分的方向不能反:诱导速度增大 → 来流角增大 → 攻角减小 → 叶素推力减小,而动量侧推力随 v_i² 增大,两条曲线必然相交,T_bem > T_mom就往大的一侧走。
跑出来的推力通常落在 8~12 N 这个量级,和 2.1 节动量理论的 9.8 N 对得上,就说明两套模型的量级自洽。对不上先别怀疑算法,去查单位——九成是角度用了度、转速用了 rpm,或者桨径填成了半径。
2.3 修正系数 FM:把理想值拉回地面的那一步
FM 的定义是理想诱导功率除以实际轴功率:FM = T^(3/2) / (sqrt(2ρA) · P_shaft)。它一次性打包了所有动量理论看不见的损失:型阻、叶尖绕流、桨毂损失、叶片的有限展弦比、非均匀入流。FM 越接近 1,这支桨越「像作动盘」。
经验区间大致如下,但请把它当成起点而不是答案:
| 桨径 / 场景 | 静态 FM 经验区间 | 主要影响因素 |
|---|---|---|
| 5~7 寸,高转速小桨 | 0.45~0.60 | 弦长雷诺数低,型阻占比大 |
| 8~12 寸,航模常用 | 0.55~0.70 | Re 约 3×10⁴~1×10⁵,处于阻力拐点附近 |
| 13~18 寸,低转速 | 0.62~0.75 | 桨尖马赫数低,诱导损失占比小 |
| 涵道 / 共轴双桨 | 0.40~0.65 | 唇口分离、上下桨干扰,离散度极大 |
真正决定 FM 的是雷诺数和桨尖马赫数两个量。Re 低于 3×10⁴ 时翼型极曲线急剧恶化,同一支桨在 3000 rpm 和 8000 rpm 下 FM 能差 0.1 以上;桨尖马赫数超过 0.6 后,激波阻力让 FM 快速掉头向下,这时候加大转速不但不涨推力,反而可能掉推力。所以 FM 不该是一个固定常数,它至少应该是 (Re, M_tip) 的查表或者拟合式——这也是第 6 章要动手标定的原因。
提示:把 FM 当成「可调参数」而不是「物理常数」,是这套计算器用对与否的分水岭。同一支桨换一台电机、换一个电压,FM 就会变,因为转速变了、雷诺数变了。
3. 把参数喂进 PropCalc:输入字段、量纲与一次完整算例
工具好不好用,一半看输入区设计得清不清楚。参数表填错一个量纲,后面所有分析都是白算,而且错得很隐蔽——数字看起来很像真的。这一章按「填什么 → 怎么填 → 填完怎么验」的顺序走一遍。
3.1 输入区要填的六组参数与它们的物理量纲
| 分组 | 字段 | 单位 | 典型范围 | 常见误填 |
|---|---|---|---|---|
| 桨几何 | 桨径 D | m | 0.127~0.762 | 填半径、填英寸 |
| 桨几何 | 几何螺距 H | m | 0.075~0.25 | 与扭角混用 |
| 桨几何 | 叶片数 B | 个 | 2~4 | 三叶按两叶算 |
| 桨几何 | 弦长 c(r) | m | 根部 0.020~0.030 | 只给平均值 |
| 桨几何 | 扭角 β(r) | rad | 根部 0.44~0.52,尖部 0.14~0.20 | 从桨轴量起 |
| 翼型 | Cl0 / Clα | - / 1/rad | 0.2~0.5 / 5.0~6.0 | 用 NACA 数据不修正 Re |
| 翼型 | Cd0 | - | 0.012~0.025 | 忽略粗糙度 |
| 翼型 | α_stall | rad | 0.20~0.28 | 取三维值当二维用 |
| 工况 | 转速 n | rev/s | 50~200 | 直接填 rpm |
| 工况 | 来流速度 V | m/s | 静态填 0 | 填了爬升率 |
| 环境 | 空气密度 ρ | kg/m³ | 0.90~1.25 | 高原仍用 1.225 |
| 整机 | 全重 m / 翼面积 S / Cl_max | kg / m² / - | 按机型 | 全重漏算电池 |
这张表里最容易被忽略的是「扭角从哪个基准量起」。工程上两种约定都有人用:从旋转平面量(β 小,10°~30°)和从桨轴量(β 大,60°~80°),两者互为余角。计算器内部只认一种,你按另一种填,攻角会整体偏移 60° 以上,叶素法直接跑出负推力。我的习惯是先在 r/R = 0.75 处手算一个攻角,数值落在 3°~8° 之间才继续往下做。
环境密度这一项也别偷懒。ρ = p / (R_specific · T),海拔 2000 m 处气压约 79.5 kPa、温度按 275 K 算,密度约 1.01 kg/m³,比标准值低 18%。静推力在固定转速下正比于 ρ,在固定功率下正比于 ρ^(1/3)——前者意味着你按海平面填表,高原首飞会实打实少两成推力。
3.2 一个 10 寸桨的完整算例:从 6000 rpm 到 1.0 kg 静推力
设定:桨径 0.254 m,两叶,6000 rpm,电池端功率约 190 W,电机效率取 0.78,于是轴功率约 150 W。按动量理论走一遍,再用叶素法核对方向。
import math def prop_static(D, n_rps, P_shaft, rho=1.225, fm=0.58): A = math.pi * (D / 2) ** 2 T = (2 * rho * A * (fm * P_shaft) ** 2) ** (1 / 3) vi = math.sqrt(T / (2 * rho * A)) return { "桨盘面积 m^2": round(A, 4), "静推力 N": round(T, 2), "静推力 kgf": round(T / 9.81, 3), "诱导速度 m/s": round(vi, 2), "功率载荷 g/W": round(T / 9.81 / P_shaft * 1000, 2), "盘载 N/m^2": round(T / A, 1), "桨尖马赫数": round(math.pi * D * n_rps / 343, 3), } print(prop_static(D=0.254, n_rps=100.0, P_shaft=150.0))输出大致是:桨盘面积 0.0507 m²,静推力 9.8 N(1.0 kgf),诱导速度 8.9 m/s,功率载荷 6.7 g/W,盘载 193 N/m²,桨尖马赫数 0.23。这几个数要连起来看,单看任何一个都会误判。
功率载荷 6.7 g/W 说明这套动力在悬停/慢飞工况下属于中等水平,同类小多旋翼常见 5~9 g/W;盘载 193 N/m² 偏高,意味着同样推力下洗流速度大,起降场地的扬尘和噪声会更明显;桨尖马赫数 0.23 说明还有提速余量,但再往上提,FM 会先涨后跌,拐点在哪必须靠实测找。
同一步里最值得做的是敏感度自检:把转速 ±2%、把桨径 ±1 mm、把 FM ±0.05 分别代进去看推力变化。转速 2% 的误差会带来 4% 的推力误差(平方关系),桨径 1 mm 在 254 mm 上是 0.4%,推力变化约 1.6%(四次方关系,叶素法口径)。哪个参数最敏感,标定的时候就先测哪个。
3.3 输出区怎么读:哪些数能直接用,哪些只能看趋势
| 输出量 | 可信度 | 用法 |
|---|---|---|
| 静推力 T | 中(依赖 FM) | 选型横向比较,标定后可用于推重比设计 |
| 诱导速度 v_i | 高 | 判断下洗、地面效应强度、起降场地要求 |
| 功率载荷 g/W | 高 | 续航估算的第一入口 |
| 盘载 N/m² | 高 | 多旋翼悬停效率与噪声的粗判 |
| FM | 低(除非标定) | 只能作为同批桨的相对排序 |
| 桨尖马赫数 | 高 | 硬约束,超过 0.6 直接淘汰该组合 |
推力这个数在没有标定之前,我一般只用来排序,不用来定电机。真正决定能不能起飞的是推重比,而推重比的分子来自推力、分母来自全重,两个量的误差会叠加,所以标定完再算一遍才踏实。
4. 翼载荷那一侧:失速速度、盘载与推重比的三角约束
推力算完只是半张表。另一半是整机能不能被这个推力托住、能不能慢到安全着陆。翼载荷、失速速度、推重比这三个量互相咬,改一个另外两个都动,选型时最忌讳的就是一个个单独调。
4.1 翼载荷换算:g/dm²、N/m² 与失速速度的对应关系
翼载荷 W/S 的单位在国内航模圈常用 g/dm²,在工程计算里用 N/m²,国外资料还有 oz/ft²,三套口径混着看很容易出事。换算关系记牢:1 kg/m² = 10 g/dm²;1 N/m² ≈ 1.02 g/dm²;1 oz/ft² ≈ 3.05 g/dm²。
失速速度由升力平衡直接给出:V_s = sqrt(2·(W/S) / (ρ·Cl_max))。这个式子里没有翼型、没有展弦比,只有翼载荷、密度和最大升力系数——所以翼载荷一旦定死,失速速度的下限就定死了,剩下能动的只有 Cl_max。
import math def wing_loading(m, S, cl_max, rho=1.225, margin=1.10): W = m * 9.81 ws = W / S # N/m^2 vs = math.sqrt <p> <a href="https://download.csdn.net/download/weixin_38743968/11665623" style="color:#ec7500;font-size:14px;"> 本文还有配套的精品资源,点击获取 </a> <img alt="menu-r.4af5f7ec.gif" src="https://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif" style="width:16px;margin-left:4px;vertical-align:text-bottom;cursor:text;"> </p>