解读 85 · 电压全景:三代舵机窗口对照
解读对象:
microduck-replica/docs/执行器选型.md「⚠️ 电压真相:XL330 被超压运行」章节 +microduck-replica/docs/硬件方案逆向.mdHD-1910 对照表
需要的前置:解读 50(2S 直供的一号风险)· 解读 45(官方电源树)
每颗舵机的规格书都写着一个电压窗口——像电器铭牌上的"220V~":低于下限,控制芯片可能不启动;高于上限,触发过压保护甚至损坏;窗口内,才有标称性能。这个项目里出现过的三代舵机,恰好是"窗口与电池关系"的三种典型。
1. 三代对照
| 代 | 电压窗 | 出处 |
|---|---|---|
| Dynamixel XL330-M288(官方) | 3.7–6.0 V(推荐 5.0) | Robotis e-manual(执行器选型 2026-09-04 核) |
| HL-1910 / HD-1910(实购装机候选) | 4–8.4 V | 《HD-1910-C001 串型规格书》A/0,经硬件方案逆向.md转述(旧记录写 5V 起,实为 4V 起) |
| HL-2915-C001(开发单元) | 9–14 V | hl2915_bench.py 头注释/《HL-2915-C001 规格书》A/0 |
电池侧的参照:官方 NP-F550 是 2S 锂电,标称 7.4V、满电 8.4V,带载区间 6.6–8.2V;HL-2915 路线的 3S 满电 12.6V、空电 ~9.9V(教程 §5.1)。
2. 第一代:超压运行,官方的明牌妥协
XL330 额定上限 6.0V,实跑 6.6–8.2V——超出约 37%。执行器选型.md 给的证据链分两层。源码三处互相印证:microduck_constants.py 的 BAM 配置 vin_range=(6.5, 8.2)、vin_min=6.0;robotd 电压自适应钳位 6.0–9.5V;电池本身 2S。原理图直接证据:官方 HAT(dynamixel.kicad_sch)三个舵机接口 J11/J13/J14 的电源脚直接接 +BATT,中间没有任何降压;全板唯一一颗 buck(U9 AP63205,2A)只给 +5V 那一路(树莓派、音频、EEPROM)——整张 BOM 47 行只有一颗 buck 一个电感。
后果两面:堵转力矩随电压近似线性上升,8V 下会明显高于标称 0.52 N·m @5V——原文判断"这大概是他们敢用 18 g 舵机扛 800 g 整机的原因之一";代价是发热与寿命(推断,官方从未公开数据)。所以复刻时"你要自己做这个决定":照抄 = 同样超压;加降压到 5–6V 则力矩下降,可能需要重训——官方 ONNX 是在超压条件下训出来的。
3. 第二、三代:额定匹配的零余量,与彻底不匹配
HD-1910(4–8.4V)与 2S 带载 6.6–8.2V:硬件方案逆向.md 的判语是"额定匹配……不存在超压",但紧跟着警告——满电 8.4V 恰好等于电压上限,"零余量"。HL-2915(9–14V)与 2S 则完全不匹配:bench 头注释原话"接 5V/2S 都不动",必须 3S,教程 §5.1 称之为"换舵机路线最刚性的约束"。
同一个窗口还有第二重身份:它随电量漂移。"电池从 8.4V 掉到 6.5V 的过程中,同样的 PWM 输出的力矩差很多,不做补偿的话策略在电量不同时表现会飘"——固件用 scale × (7.4 / 实测EMA) 做电压自适应,训练侧用 vin_range 随机化让策略提前见识全范围(代码细节见解读 87)。同一副鸭身,三种舵机,三种供电答案——这就是"换舵机先看电压窗"的全部理由。
你带走的收获
- 电压窗口是选型第一道门:先对窗口,再比力矩、价格。
- 超压不是秘密是工程妥协,且证据可查:三处源码 + 开源 HAT 原理图。
- 匹配分三档:超压运行(XL330)/额定但零余量(HD-1910)/须换电池节数(HL-2915)。
- 满电顶格 ≠ 匹配:留不出余量的窗口,在电池满充时没有保护距离。
- 电压决定力矩:窗口内电量的漂移会让同一指令表现不同,补偿与随机化是稳定的前提。