解读 203 · 台架实操:URT2 + 三件套软件,第一次点亮你的 HL-2915
解读对象:台架实操教程——硬件(URT2 调试板 + HL-2915-C001/HL-1910 + 12V 限流电源),软件三件套(FT_SCServo_Debug_Qt GUI / 官方 FD 上位机与 Web 版 /
hl2915_bench.py六课脚本)
需要的前置:解读 63(六课方法论)、解读 65(ID 与校准)、解读 66(9–14V 供电)、舵机调试手册 §2b(官方软件入口)
1. 开箱:你现在手里有什么
到货清单核对:URT2 调试板(USB 一头插电脑,另一头是舵机接口与电源口)、HL-2915-C001 ×2(或 HL-1910 ×17,同族调试方法一致,寄存器以飞特磁编码版内存表为准)、以及一个必须自备的 12V 限流电源(台架电源,限流先设 0.5A——HL-2915 工作窗 9–14V,5V/2S 点不亮它)。
软件三件套,按"第一次点亮"的顺手程度排序:
| 软件 | 是什么 | 什么时候用 |
|---|---|---|
| FT_SCServo_Debug_Qt(GUI) | 社区 Qt 调试器,macOS 原生已装 /Applications |
第一次点亮:点按钮看 ID、读寄存器、手动小动作 |
| 官方 FD 上位机 / Web 版 | 飞特官方(见舵机手册 §2b) | 需要官方视角核对寄存器/固件信息时;Web 版向客服索取 |
| hl2915_bench.py 六课脚本 | 本项目自带,pyserial 原生 | 正式跑数据:六课、CSV、拷机统计——台架辨识的产出口 |
三条路线操作的是同一批寄存器,互相印证而不是三选一。
2. 接线:断电做,做完复查
- 断电状态下:HL-2915 用 PH1.25-3P 线接 URT2 舵机口,线序 1=GND / 2=Vcc / 3=Signal(插头 1.25mm,与 5264/JST-EH 不通用,插不进去不要硬怼);
- URT2 电源口接 12V 电源,限流 0.5A;
- USB 连电脑(macOS 串口名
/dev/tty.usbserial-*); - 上电前用万用表蜂鸣档复查:GND 对 GND、Vcc 对 Vcc;共地是铁律——URT2、电源、之后要接的任何东西,地必须连成一体(忘了共地的症状:扫不到舵机或乱码);
- 上电:先电源后 USB。舵机上电瞬间可能小幅抖动一下,这是正常的;手指离开输出轴。
3. 第一次点亮(GUI 路线)
打开 /Applications/FT_SCServo_Debug_Qt.app,串口下拉选 tty.usbserial-*,波特率 1,000,000,点连接:
- 能连上:左侧出现设备 → 记下出厂 ID(出厂默认通常是 ID 1)→ 读一遍位置/电压/温度寄存器,这就是你的"出厂快照";
- 列表为空:按顺序查——共地?线序?波特率?换 USB 口?还不出就等 URT2 固件说明,别乱写 EEPROM;
- 试着在 GUI 里发一个小位置指令(±100 步 ≈ ±8.8°),舵机动 = 编码器与闭环都在工作。
GUI 适合"看"和"单发",别在 GUI 里做设 ID、改 EEPROM 这类写操作——这类操作交给脚本,它有防呆。
4. 六课正式跑(脚本路线)
进入脚本目录(microduck-replica/rl-series/scripts/),pip3 install pyserial 后按课执行:
python3 hl2915_bench.py list # 找串口
python3 hl2915_bench.py 1 # ① 体检:PING + 出厂寄存器快照
python3 hl2915_bench.py 2 # ② 遥测流:位置/速度/负载/电压/温度/电流
python3 hl2915_bench.py 3 # ③ 闭环小步幅(验证编码器真在反馈)
python3 hl2915_bench.py 4 --minutes 10 # ④ 拷机:50Hz 连续 10 分钟,统计丢包
python3 hl2915_bench.py 5 --ids 1,2 # ⑤ 双舵机 SYNC(第二只到货后)
python3 hl2915_bench.py 6 --kp 800 --kd 80 # ⑥ 阶跃录制 → CSV(辨识数据)
每课的验收口径(来自全流程教程与脚本判据):课 2 读数稳定不跳;课 3 小步幅双向到位、误差 ≤4 步(脚本判据 DEAD_ZONE+4);课 4 丢包 <0.1% 且温度 <65°C。每课结果记进实验记录——这就是阶段 F 辨识要用的数据来源。
5. 写操作红线
- 设 ID(
set-id)一次只接一只:出厂全是 ID 1,两只同时接着会一起响应; cal --set-zero-here(把当前位置标定为中位 2048)不动舵机、可逆;cal --rezero-2048会动(写 40 号=128,固件把当前位置校正为 2048)——只在空载/已知安全位姿下做;- 波特率(
set-baud)改完脚本和 GUI 两边都要跟着改,否则"失联"; - 任何写 EEPROM 的操作:先记快照,再动手。
6. 常见故障速查
| 症状 | 先查 |
|---|---|
| 扫不到舵机 | 共地 → 线序 → 波特率 → 换 USB 线/口 |
| 能连但动作无力 | 电压(12V 没接?压降?)、限流设太低 |
| 位置读数乱跳 | 编码器/固件口径,停手记录,对照课 2 遥测 |
| 发烫 | 立即断电;课 4 拷机本来就该探明温升,但静止发烫不正常 |
你带走的收获
- 一次点亮 = 硬件接线(断电+复查)→ GUI 看见它 → 脚本跑数据,三条路线同一批寄存器。
- 看与写分开:GUI 负责"看",脚本负责"写",写 EEPROM 的操作都有防呆与安全前提。
- 台架六课不是仪式:课 1–3 建立信心,课 4 证明总线可靠,课 6 产出辨识数据——每课的验收口径都能写进实验记录。
实测记录(2026-09-14,首台 HL-2915 · URT2)
| 课 | 结果 |
|---|---|
| 课 1 体检 | ✓ 固件 v3.45、ID=1、1M 档、行程未限制、电压窗出厂 [4.0, 16.0]V(比规格书 9–14V 宽)、扭矩开 |
| 课 2 遥测 | ✓ 419 次读取丢 0(0.00%),位置稳定,温度 35–38°C |
| 课 3 首跑(12V) | ✗ 位置环发散:P=32、加速度寄存器 22794(≈无斜坡),±100 步阶跃直接跑飞(多圈计数 5595→8954) |
| 降参复测 | P=16 / D=0 / I=0、加速度 5000 步/s²、扭矩 30%:相对小步误差最小 +7 步;课 3 ±100 步误差 -6~-162 步(受控但偏软) |
三条实测结论:
1. 出厂参数 12V 直用会跑飞——出厂 P=32 且加速度无有效斜坡,12V 满扭矩下阶跃响应发散;台架第一课就是"降 P、限扭矩、加斜坡"。
2. P=16 稳但偏软(欠冲 100+ 步),P=32 刚但发散——"稳且刚"的平衡点要用课 6 阶跃录制扫描出来,这正是 BAM 辨识的入口。
3. 遥测电流口径与内存表 ×6.5mA 换算不符(读出 14 万 mA 量级),该字段换算待实测标定,已如实标注。
追加(同日晚,REBOOT 发现):跑飞后"完全不响应"不是驱动损坏,而是锁死的保护状态——一条 REBOOT 指令(0x08)即可清除。REBOOT 会复位 RAM(多圈计数与调好的参数),之后用温和参数(P=16 / 加速度 5000 / 扭矩 30%)连发四个大目标:+105.6°、回中、跨圈 −70.4°、回中——全部误差 +0,完美跟踪。这只 HL-2915 完全健康。
标准上电序列(实测定型):上电 → 写温和参数(P=16、加速度 5000、扭矩限 30%)→ 扭矩开 → 小步验证 → 正常使用;任何跑飞/不响应 → 先 REBOOT 再继续。出厂参数(P=32、无斜坡)在 12V 下直用会发散,这条要当成铁律。
判定追加(同日,第二阶段):换用 12V 稳压电源与 REBOOT 清锁后,做了三组判定实验——扭矩关静止 100 秒(位置零漂移)、扭矩开大目标 ±176°(6 秒零响应)、扭矩开小目标 ±200 步(计数以 ~-50 步/s 匀速漂移且方向与目标无关,伴随温升)。当时结论:判坏件,走售后。
✅ 判定修正(同日第三轮,重要):REBOOT 清锁后连续两轮全流程测试通过(±90° 三来回 6/6 目标误差 ≤2 步、大摆动四目标误差 +0、操作者目视确认转动)——"判坏"结论推翻。当时的"零响应"是跑飞后锁死的保护状态(REBOOT 可清,不损硬件),"计数漂移"是通电温漂假象(温度稳定即冻结)。该舵机判定为健康。
方法论教训(必读):判死之前必须先发 REBOOT 清锁再复测——"可恢复的锁死"与"永久损坏"在锁定状态下症状完全相同,只有 REBOOT 后的复测能区分。本次先判死后复测,顺序反了,值得记取。
✅✅ 最终判定修正(后续复测,推翻判坏):上轮判坏后,该舵机复测完全正常(标准序列全通过、目视确认转动)。结合全过程的最终解读:"跑飞 → 锁死 → 假死"是同一状态的三个阶段,而锁死状态的深浅有随机性——REBOOT 有时能清(第一次),有时看似无效(当时通信与驱动状态恰好处于特殊窗口),断电静置或换时序后再测又能恢复。该舵机最终判定:健康,两只 HL-2915 全部正常。
台架判定法最终版(三次反转换来的):
1. 零响应 ≠ 坏——先 REBOOT 清锁复测;
2. REBOOT 无效 ≠ 坏——断电静置 ≥1 分钟再上电复测(电源域完全复位);
3. 以上都失败 ≠ 坏——隔天再测一次(温漂/电容残余状态可能影响);
4. 三轮全失败才倾向"硬件故障",但仍建议换环境/换线复测一次;
5. "判定实验"的作用是刻画当时状态,不是宣判死刑——飞特磁编码舵机的保护/复位机制比文档写的更复杂。
流程沉淀:每只新舵机的台架验收 = 三课 + 三组判定实验(静止漂移 / 大目标响应 / 小目标方向一致性),全过才算"台架合格";判定脚本与数据已归档,第二只 HL-2915 到手即复跑。
判定实验补记(第二只,装架后复测):+200 步方向阶跃出现负载 1036(100% 堵转)——机械限位;−200 步方向以 ~10 步/s 带载爬行(30% 扭矩限)。电气与闭环全部正常,是机械受限不是舵机故障。台架教训:装架后做阶跃测试前,先确认目标方向在自由行程内;带载测试应提高扭矩限并放宽验收时间。
行为模型补记(同日,第三阶段):实测发现该固件的两个关键行为——①速度寄存器(46)上电默认 0,固件解释为"零速趋向目标"= 完全不动(位置指令必须配非零速度;bench 课 6 与网页调试台均已修正为写 300);②速度寄存器写入非零值 + 扭矩开后,若到达目标未停会持续单向旋转(已两台复现)——网页调试台已加"到位 ±6 步或 3 秒超时自动关扭矩"保护。操作铁律:位置指令后必须盯着,到位即断扭矩。
第二只 HL-2915 验收通过(同日):同一套流程复跑——行程配置 [0,4095]、温和参数、三组判定实验全过:静止 24 秒漂移仅 -1 步(量化噪声);+1500 步(132°)大目标约 1 秒平滑到位,稳态误差 +0 步并稳定保持;双向 ±200 步误差 -1/0/-1/0 步。同一批、同一固件、同一接线,一好一坏——判定方法论与坏件结论互相印证。健康件基准数据(132° 阶跃约 1s 整定、稳态零误差)就是后续 15 只 HL-1910 验收的对照模板。
REBOOT 判定实验(同日,决定性):慢速 ±90° 三来回摆动测试中位置完全冻结(1133 恒定,扭矩开)——一条 REBOOT(0x08)后,同样三个来回全部完美跟踪(1133→2157→1133→109→1133→2157→1133,误差 ≤2 步)。证实:跑飞/堵转后驱动会被锁死,REBOOT 清锁即恢复,舵机硬件无损。目视确认:清锁后的三个 ±90° 来回全部真实可见。台架标准流程最终定型:
- 上 12V(先于 USB);
- 上电后先写温和参数:P=16 / D=0 / I=0 / 加速度 5000 / 扭矩限 30%;
- 扭矩开,小步验证;
- 任何跑飞、堵转、不响应 → 先 REBOOT(0x08)清锁,再继续(REBOOT 会复位 RAM 参数与多圈计数,需重写第 2 步);
- 正常使用/拷机/阶跃录制。
可重复性验证(同日第二次上电):重新上电后按标准序列重写温和参数,±90° 三来回六个目标全部误差 0 步(含两次跨中位往返),过程平滑无超调——标准序列完全可重复;同时确认多圈计数断电保持(累积不丢失),上电后写温和参数是必须步骤。
工具链备注:官方 GUI / FD / bench 脚本操作同一批寄存器;bench 已修三处:lesson1 PING 解析越界、lesson6 速度字节=0 导致零速不动(改写 300)、lesson6 补扭矩使能;新增 hl2915_demo.py 慢速摆动演示。