有个做包装机械的客户,用 48V 母线驱动一台 300W 的无刷电机做膜料牵引,连续运行 8 小时。他们选驱动器时有明确要求:"要有过热保护"。
理由是上一台驱动器烧了。那台没有过热保护,夏天车间 40℃,连续跑了三个月,某天突然冒烟。售后说功率管烧穿,长期高温导致热疲劳。
所以这次他们把"有过热保护"写进采购要求,认为这样就安全了。
装上去两个月,FAULT 灯开始频繁闪。不是烧了,是热保护反复触发。每次停机几十秒,等温度降下来再自动恢复。8 小时班里有十几次停机,产线班长快疯了。
客户来问:"有过热保护怎么还老停?是不是保护定值设低了?"
这个问题问得好,但方向搞错了。过热保护不是"允许你随便发热",是"在你已经犯错时别烧掉"。 它是兜底,不是方案。
而且——按额定电流算,这台机器根本不该触发保护。 这才是我去现场的第一个疑问。
参数摊开来看:
项目 | 数值 |
|---|---|
母线 / 功率 | 12V-60W,48V-335W(多档) |
峰值 / 额定电流 | 20A / 10A |
电机类型 | 无刷(六步换相) |
保护 | 过热保护、过流保护 |
控制方式 | 单/双电位器、0~3.3/5/10V 模拟、逻辑电平、开关、按键、PWM/频率/脉冲、RS485/CAN |
尺寸 | 136×82×45mm 铝合金机壳 |
注意这里没有"刹车电阻制动"标注 —— 与同系列 -E2F 版本不同。-E2 和 -E2F 是两个配置,选型要看后缀。
335W 标称,按 10A 额定、48V 算,48 × 10 = 480W 的电流能力,标 335W 留了 30% 余量。
这台机器输出 300W、48V 母线。按电机效率 85% 反推相电流:
def loss_by_current(v_bus, i_phase, rds_on=0.012, f_sw=20000,
t_edge_ns=120, q_g_nc=60):
"""六步换相下的器件损耗拆解"""
p_cond = 2 * i_phase ** 2 * rds_on # 同时两管导通
p_sw = 6 * (v_bus * i_phase * t_edge_ns * 1e-9 * f_sw) * (120/360)
p_gate = 6 * q_g_nc * 1e-9 * 12.0 * f_sw
return p_cond, p_sw, p_gate, p_cond + p_sw + p_gate
print(f"{'相电流A':>8} {'导通W':>7} {'开关W':>7} {'驱动W':>7} {'器件合计W':>10}")
for i in (5, 8.21, 10, 12, 15, 20):
pc, ps, pg, tot = loss_by_current(48, i)
print(f"{i:>8.2f} {pc:>7.2f} {ps:>7.2f} {pg:>7.2f} {tot:>10.2f}")输出:
相电流A 导通W 开关W 驱动W 器件合计W
5.00 0.60 1.15 0.09 1.84
8.21 1.62 1.89 0.09 3.60
10.00 2.40 2.30 0.09 4.79
12.00 3.46 2.76 0.09 6.31
15.00 5.40 3.46 0.09 8.94
20.00 9.60 4.61 0.09 14.29几个观察:
导通损耗随电流平方增长(5A→20A,从 0.60W 到 9.60W,16 倍),开关损耗随电流线性增长(1.15W 到 4.61W,4 倍)。所以大电流下导通损耗后来居上。
驱动损耗恒定 0.09W,与电流无关,只与 f_sw 和总栅极电荷有关。
再加上控制电路、采样、指示灯等辅助损耗(约 7.5W),得到总损耗。然后按热阻算稳态温度:
AUX = 1.5 + 6.0 # 控制 + 采样 + 指示等固定损耗 W
def steady_temp(v_bus, i_phase, rth, t_amb):
pc, ps, pg, dev = loss_by_current(v_bus, i_phase)
p_total = dev + AUX
return p_total, t_amb + p_total * rth
print(f"{'相电流A':>7} {'总损耗W':>8} {'Rth2.4/40℃':>13} {'Rth2.4/50℃':>13}")
for i in (8.21, 10, 12, 15, 20):
p40, s40 = steady_temp(48, i, 2.4, 40)
_, s50 = steady_temp(48, i, 2.4, 50)
print(f"{i:>7.2f} {p40:>8.2f} {s40:>12.1f}℃ {s50:>12.1f}℃")输出:
相电流A 总损耗W Rth2.4/40℃ Rth2.4/50℃
8.21 11.10 66.6℃ 76.6℃
10.00 12.29 69.5℃ 79.5℃
12.00 13.81 73.1℃ 83.1℃
15.00 16.44 79.5℃ 89.5℃
20.00 21.79 92.3℃ 102.3℃这张表就是答案。
这台机器 300W 输出、85% 电机效率,相电流 8.21A —— 只有额定 10A 的 82%,很合理。 这时总损耗 11.10W,40℃ 环境稳态 66.6℃,离 90℃ 阈值还有 23℃ 余量,完全不该触发保护。
但往下看:相电流跑到 15A,40℃ 环境稳态 79.5℃,50℃ 环境 89.5℃ —— 刚好卡在阈值上。跑到 20A(峰值),40℃ 就 92.3℃,直接超限。
现场实测相电流是 14~16A。这就是原因 —— 不是热设计不够,是负载比设计时大得多。
客户一开始不信:"电机是 300W 的,怎么会 15A?" 48V × 15A = 720W 输入,就算效率 85%,输出也有 612W。电机在超载一倍运行。
查下去发现:膜料换了新供应商,卷径和张力系数都变了,牵引阻力增加了 80%。客户的工艺员按"电机 300W 够用"判断,没重算。
搞清楚触发原因后,还有个细节值得说:为什么是"频繁闪"而不是"一直停"?
因为过热保护是二值动作 —— 到阈值就断,降到恢复点就通。而热过程是连续的,所以它自然形成振荡。
def thermal_cycle(t_amb, p_loss, rth, t_limit=90.0, t_recover=75.0,
tau_s=120.0, dt=1.0, hours=8):
"""一阶 RC 热模型 + 二值保护"""
t = t_amb
running = True
steady = t_amb + p_loss * rth
trips = 0
t_off = 0.0
for _ in range(int(hours * 3600 / dt)):
target = steady if running else t_amb
t += (target - t) / tau_s * dt
if running and t >= t_limit:
running = False
trips += 1
elif (not running) and t <= t_recover:
running = True
if not running:
t_off += dt
return steady, trips, t_off
print(f"{'环境℃':>6} {'损耗W':>7} {'Rth':>5} {'稳态℃':>7} {'触发次':>7} {'停机h':>7} {'产能':>7}")
for amb, p, rth in ((40, 11.10, 2.4), (40, 16.44, 2.4), (50, 16.44, 2.4),
(40, 21.79, 2.4), (40, 21.79, 1.5), (50, 21.79, 1.5)):
s, tc, to = thermal_cycle(amb, p, rth)
print(f"{amb:>6} {p:>7.2f} {rth:>5.1f} {s:>7.1f} {tc:>7} "
f"{to/3600:>7.2f} {(1-to/(8*3600))*100:>6.1f}%")输出:
环境℃ 损耗W Rth 稳态℃ 触发次 停机h 产能
40 11.10 2.4 66.6 0 0.00 100.0%
40 16.44 2.4 79.5 0 0.00 100.0%
50 16.44 2.4 89.5 0 0.00 100.0%
40 21.79 2.4 92.3 100 1.19 85.1%
40 21.79 1.5 72.7 0 0.00 100.0%
50 21.79 1.5 82.7 0 0.00 100.0%仔细看这几行:
稳态 89.5℃ 不触发(阈值 90℃,差 0.5℃)。稳态 92.3℃ 触发 100 次,停机 1.19 小时,产能 85.1%。
这就解释了客户看到的现象:温度刚好越过阈值一点点,保护就会反复动作。 因为升温靠 21.79W 损耗,降温只靠自然对流,两者时间常数不同 —— 升得快降得慢,所以每轮循环里"停机"的时间占比不小。
而且产能只掉 15%,这个数字很有欺骗性。客户感觉"一直在停",但实际产能损失不到 15%。所以这件事既不能忽视(会累积热疲劳),也不至于让产线瘫痪 —— 但两个月的反复触发,已经把功率管折腾得够呛。
最后一列对比很关键:同样的 21.79W 损耗,把 Rth 从 2.4 降到 1.5,40℃ 和 50℃ 环境都不触发。
过热保护是二值的,热过程是连续的。 稳态只比阈值高 2℃,保护照样反复动作。它没有"稍微降一点功率"的中间态 —— 这一点和过流保护不同,过流可以限流,过热只能断。
所以客户问"是不是阈值设低了",方向是对的一半:如果热设计余量足够,阈值设在哪里都不重要;如果余量不足,把阈值往上调只是在推迟问题。
客户的根因是膜料阻力增加了 80%。正确做法是换回原规格膜料,或者换更大功率的电机型号,而不是想办法把 15A 散出去。
这一步成本最低,但最难推动 —— 因为它涉及采购、工艺、质量三个部门,而"加个风扇"只要一个人拍板。
如果负载必须维持,就得把 Rth 降下来。用 Rth = (T_allow - T_amb) / P_loss 反算:
def required_rth(p_loss, t_amb, t_safe, margin=15.0):
"""t_safe 为期望壳温上限,margin 留给保护阈值"""
return (t_safe - margin - t_amb) / p_loss
def natural_area(rth, h=6.0):
"""自然对流换热系数 5~8 W/(m²·K),取 6"""
return 1.0 / (h * rth) * 1e4 # cm²
print(f"{'环境℃':>6} {'损耗W':>7} {'需要Rth':>9} {'自然对流面积':>12}")
for amb in (40, 50):
for p in (16.44, 21.79):
r = required_rth(p, amb, 90.0)
print(f"{amb:>6} {p:>7.2f} {r:>8.2f}℃/W {natural_area(r):>11.0f}cm²")输出:
环境℃ 损耗W 需要Rth 自然对流面积
40 16.44 2.13℃/W 783cm²
40 21.79 1.61℃/W 1038cm²
50 16.44 1.52℃/W 1096cm²
50 21.79 1.15℃/W 1453cm²对比一下机壳本身的能力:
L, W, H = 13.6, 8.2, 4.5 # cm
area_case = 2 * (L*W + L*H + W*H)
print(f"机壳表面积 {area_case:.0f} cm²")
print(f"自然对流散 11.10W 时, 40℃环境壳温 ≈ "
f"{40 + 11.10 * (1/(6.0*area_case*1e-4)):.1f}℃")输出:
机壳表面积 419 cm²
自然对流散 11.10W 时, 40℃环境壳温 ≈ 84.1℃机壳 419cm²,按自然对流只能给 2.4℃/W 左右的热阻(1/(6 × 0.0419) ≈ 4.0,实际因为辐射和安装方式改善到 2.4)。而 21.79W 损耗需要 1.61℃/W,自然对流面积要 1038cm² —— 差 2.5 倍。
补足的办法:
方案 | Rth 可达 | 需要改变的 |
|---|---|---|
机壳自然对流 | 2.4℃/W | 现状,不够 |
加铝型材散热器 | 0.8~1.2℃/W | 体积增加 30%,成本 +50 元 |
散热器 + 强制风冷 | 0.3~0.6℃/W | 风扇寿命、滤网维护、噪音 |
如果工艺无法改、散热空间也没有,最后一个办法是按降额后的电流选型。
def derate_check(i_peak_actual, i_rated, i_peak, t_amb, derate_per_10c=0.05):
"""按环境温度降额,基准 40℃"""
derate = 1.0 - max(0.0, (t_amb - 40) / 10.0 * derate_per_10c)
i_allow = i_rated * derate
print(f"环境 {t_amb}℃ 降额系数 {derate:.2f} 允许持续 {i_allow:.2f}A "
f"(实际 {i_peak_actual}A) {'合格' if i_peak_actual <= i_allow else '超限'}")
return i_allow
for amb in (30, 40, 50, 60):
derate_check(15.0, 10.0, 20.0, amb)输出:
环境 30℃ 降额系数 1.00 允许持续 10.00A (实际 15.0A) 超限
环境 40℃ 降额系数 1.00 允许持续 10.00A (实际 15.0A) 超限
环境 50℃ 降额系数 0.95 允许持续 9.50A (实际 15.0A) 超限
环境 60℃ 降额系数 0.90 允许持续 9.00A (实际 15.0A) 超限不管环境多少度,15A 都超了 10A 额定。 降额救不了这个 —— 问题不是环境温度,是电流本身超了 50%。
这种情况只能换更大电流的型号。同系列里有峰值 35A / 额定 16A 的档位,16A × 0.9 ≈ 14.4A,还是不够。要选额定 25A 以上的。
把阈值从 90℃ 调到 100℃,稳态 92.3℃ 就不触发了。但功率管的结温会是壳温加 P × Rth_jc:
def junction_temp(t_case, p_loss, rth_jc=3.0):
return t_case + p_loss * rth_jc
print(f"{'壳温℃':>6} {'结温℃':>7} {'余量到150℃':>11} {'评估'}")
for tc in (66.6, 79.5, 89.5, 92.3, 100.0):
tj = junction_temp(tc, 21.79)
m = 150 - tj
note = "安全" if m > 40 else ("可接受" if m > 20 else "危险")
print(f"{tc:>6.1f} {tj:>7.1f} {m:>10.1f}℃ {note}")输出:
壳温℃ 结温℃ 余量到150℃ 评估
66.6 132.0 18.0℃ 危险
79.5 144.9 5.1℃ 危险
89.5 154.9 -4.9℃ 危险
92.3 157.7 -7.7℃ 危险
100.0 165.4 -15.4℃ 危险注意第一行就已经"危险"了。 壳温 66.6℃(额定工况)时结温 132℃,只剩 18℃ 余量。
这是因为 Rth_jc = 3℃/W 在 21.79W 下贡献了 65℃ 温升。如果这个假设成立,那么即使额定运行,结温也偏高 —— 说明 Rth_jc=3 这个假设偏保守,实际器件(多管并联或低热阻封装)应该更低。
我把这个假设放宽到 1.5℃/W 再看:
print(f"{'壳温℃':>6} {'结温℃(Rjc=1.5)':>16} {'余量':>7}")
for tc in (66.6, 79.5, 89.5, 92.3):
tj = junction_temp(tc, 21.79, rth_jc=1.5)
print(f"{tc:>6.1f} {tj:>15.1f} {150-tj:>6.1f}℃")输出:
壳温℃ 结温℃(Rjc=1.5) 余量
66.6 99.3 50.7℃
79.5 112.2 37.8℃
89.5 122.2 27.8℃
92.3 125.0 25.0℃这个量级更合理。结论不变:壳温 90℃ 以上时结温 125℃,按阿伦尼乌斯定律(结温每升 10℃ 寿命减半),相对 65℃ 的工作点寿命只剩 1/64。
调高阈值是在拿寿命换产能。
回到具体产品。AQMD6010BLS-E2 无刷电机驱动器,电机控制方式为无刷电机的 PWM 方波驱动(六步换相):峰值 20A / 额定 10A,母线覆盖 12V–60V(48V 档 335W),自带过热保护、过流保护,控制方式覆盖单/双电位器、0~3.3/5/10V 模拟量、逻辑电平、开关、按键、PWM/频率/脉冲、RS485/CAN,136×82×45mm 铝合金机壳。
几个在 48V 工业场景里值得注意的点:
48V 是工业自动化的主力电压。 比 24V 电流小一半、线径细、压降小;比 60V 更接近多数安规的直流安全分界,接线端子选择更多。包装、输送、纺织、木工机械大多在这个电压段。
铝合金机壳既是散热器又是结构件。 好处是强度好、有屏蔽作用;代价是散热能力固定,不能按需选配。选型时要把机壳面积和损耗一起算 —— 这台机壳 419cm²,自然对流约 2.4℃/W,40℃ 环境下能散 11W 左右。超过这个损耗就要外挂散热器。
六步换相的定位。 这是方波驱动,不是 FOC。转矩脉动比 FOC 大,但恒速牵引类应用(膜料、输送带)完全够用,控制简单、成本低。不要因为"FOC 更先进"就选 FOC,要看工况需不需要。
多路给定方式的实用性。 0~10V 适合接 PLC 或老式电位器;PWM/频率/脉冲适合接单片机或运动控制器;RS485/CAN 适合组网。一台设备覆盖三种接口,备件管理简单 —— 这在产线上是真实价值。
保护是"事后"的,不改变稳态。 过热保护在器件温度超过阈值时动作,它能防止烧毁,但不能让你在超载下持续运行。选型时的余量必须自己留够。
「335W 是输入还是输出?」
适配电机的机械输出。按 83% 效率算,输入侧 404W。电源按 404W 选,留 1.3 倍余量取 520W。
「保护阈值能不能改?」
有些型号能通过上位机改,有些不能。但改阈值不解决热问题,只是把问题转移到器件寿命上。需要改阈值的时候,说明热设计本来就不对。
「加个小风扇就行了吗?」
风扇能把 Rth 从 2.4 降到 0.6,但引入新问题:风扇寿命(2~5 万小时)、滤网堵塞、灰尘进入机壳。粉尘环境要选带防护的风扇并定期清灰,否则半年后 Rth 又回到 2.4。
「降低开关频率能减少损耗吗?」
开关损耗从 4.61W 降到 2.31W(20kHz→10kHz),总损耗从 21.79 降到 19.5W,降 10%。代价是电流纹波翻倍、噪音变大。收益有限,不是主要手段。
「环境温度 60℃ 怎么办?」
按降额规则,60℃ 时允许电流要打 0.9 折。如果实际电流已经超额定,高温环境就没有余量了 —— 只能换更大电流的型号。高温选型,功率要按 60%~70% 降额。
「为什么额定 10A、峰值 20A,却标 335W 而不是 480W?」
因为标称功率是按热平衡定的,不是按电流能力。335W 对应 8.21A,是能长期稳定散出的功率;10A 是短时允许值。这个区别在选型时最容易混淆。
过热保护是兜底,不是方案。
三件事要分清:
第一,触发保护先查电流,不是先查散热。 这台机器额定 8.21A 时 66.6℃ 从容,15A 时 79.5℃,20A 时 92.3℃ 超限。保护动作的时候,先看是不是负载超了 —— 客户现场就是膜料阻力增加 80%,跟散热一点关系没有。
第二,热设计要算,不能靠保护兜。 损耗 → 热阻 → 稳态温度 → 余量,余量不足 15℃ 就要改散热。机壳 419cm² 只能散 11W,这是硬限制。
第三,调高阈值是拿寿命换产能。 壳温 90℃ 时结温 125℃,相对 65℃ 工作点寿命只剩几十分之一。
那位客户最后换回原规格膜料,电流回到 8.5A,温度稳定在 68℃,保护再没触发过。整个解决过程花了半天,找根因花了两周。
买带保护的型号不是错,但把它当成"不用管散热"的理由,等于把兜底当成了主方案。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。