Files
DLD154V4B/docs/coil-range-alarm-design.md
T
wangfq ac3fda09e2 feat(V4B): V4.29 — C_eff 标定定稿 68 (0Ω板低频档) + 硬件疑点闭环
硬件修复(用户): 拨码三极管 5.1K→0Ω → 第二颗33nF真正并联
0Ω板低频档实测: 52k/136µH→C_eff=68.9; 127k/23µH→68.3; 88k/48µH→68.1 (均值68.4≈名义66)
→ V4.28 的 43nF 为 5.1K 旧板带病特性(三极管未饱和导通, 并联只等效+8.6nF), 作废
改动: COIL_CAL_C_NF 43→68; 33nF档标定34(旧板)待0Ω板复测
验证: 68 回代残差 ≤1.5% (52k→138vs136; 127k→23vs23; 88k→48vs48)
文档: devlog V2.27 / spec V2.8 / design doc v0.6
2026-09-03 14:13:08 +08:00

8.5 KiB
Raw Blame History

线圈电感量估算与不合理范围告警 — 设计讨论稿

状态:已实现(V4.26/V4.272026-09-03 — 本文为设计讨论与实现归档;落地代码见 TaskLoop.c coil_monitor()vd1_task 无车主路径调用)与 poll_yellow_led() 模式 5。 固件版本基线:V4.27cmcng.h);涉及产品:DLD154V4BDLD154V4)。

修订记录:

版本 日期 说明
v0.1 2026-09-02 初稿(合理范围按 50~300 µH,三区制)
v0.2 2026-09-03 合理范围改 50 ~ 1000 µH(规格书口径,两档任意一档合法即不告警),三区窗口重算
v0.3 2026-09-03 用户 4 点拍板收口(取代 v0.2 三区/灰带):默认低频档频率窗 20~120 kHz 出界即告警;黄灯一长一短;优先级 1 断开快闪 > 4 故障补偿常亮 > 5 电感一长一短 > 3 N短亮 > 2 灭;故障补偿 ENV_RESYNC_WAIT 60s→10s。已实现于 V4.26672f143 后)
v0.4 2026-09-03 测频 4 倍偏差修正(V4.27calc_freq_khz 60000→240000TMR3 实际 120MHz 计数 + 通道捕获 DIV_2)。本文 §3 中"Xn=3681→f=16.3kHz→L≈1.4mH 超限案例"为测频 bug 假象——修正后实为 f≈65.2kHz、L≈90µH 的正常线圈;该"红区案例"作废,需按真实频率重新采集现场数据
v0.5 2026-09-03 L 估算标定(V4.28:五组 LCR 实测反推振荡回路等效谐振电容 C_eff=41.3~45.5nF(均值 43),与名义 66nF 明显不符 → 固件改标定值 COIL_CAL_C_NF=43L_uH=2.533e7/(f²×C_eff));COIL_DEF_C_NF 保留为名义口径。残差 ±6% 内,待多线圈/标定电感进一步收口
v0.6 2026-09-03 硬件修复后定稿(V4.29:拨码三极管 5.1K→0Ω → 低频档并联全导通,C_eff=68.1~68.9(均值 68.4)≈名义 66。v0.5 的 43 为 5.1K 旧板带病特性(开关未饱和),作废COIL_CAL_C_NF 43→68,残差 ≤1.5%。33nF 档标定 34(旧板数据)待 0Ω 板复测

1. 背景

DLD154V4 线圈振荡电路:固定电容 33 nF + 拨码开关可并联另一 33 nFC = 33 nF 或 66 nF 两级频率)。 拨码不引到 MCU IO,固件无法感知当前档位。

需求(用户最终口径):

  1. 由实测振荡频率推算线圈电感量 L(粗略值即可)
  2. 对不合理电感量范围的线圈告警(v0.3 拍板,取代 §4 三区制):按默认低频档计算,频率合理范围 20 ~ 120 kHz,不在合理范围内一律判定电感量不合理 → 告警(不做档位判定、不做灰带提示)
  3. 预留 C_eff 校准公式/系数,测试时微调
  4. 持续监视

2. 物理模型与测量精度

LC 谐振:f = 1 / (2π·√(L·C)),反推 L = 1 / (4π²·f²·C)

  • f 固件现成:calc_freq_khz()Xn@60MHz 捕获,f_kHz = 60000 / Xn),Xn≈3681 时测量精度 ~0.03%,足够
  • 误差预算:C 容差 ±5% → L 误差 ~10%;线圈分布电容 C0(几十 pF vs 33000 pF)≈0.3% 可忽略; 谐振拓扑非理想偏移 → 待标定收口
  • 档位歧义(核心)C = 33/66 nF → 同一线圈频率差 √2=1.414 倍,反推 L 差 2 倍; 拨码不可读 → 单次测频无法唯一判定档位 → 判定采用三区制(§4)

3. 频率 ↔ 电感对照表

L(µH) C=33nF f(kHz) C=66nF f(kHz) 备注
20 195.9 138.5 超出下限(<50)→ 红区(>123.9 必超)
50 123.9 87.6 规格下界
100 87.6 62.0 推荐带
200 62.0 43.8 推荐带
300 50.6 35.8 推荐带上沿
500 39.2 27.7 可工作(33nF 档落绿/66nF 档落绿边界)
800 31.0 21.9 66nF 档落灰带(33nF 档对应 L=2000µH 超,无法判档)
1000 27.7 19.6 规格上界
1440* 23.1 16.3 超出上限(<19.6 必超)

* 现场实测 Xn=3681 → f=16.3kHz → L≈1445µH(66nF)/2889µH(33nF),无论哪档都 >1000µH → 该线圈应被"L 偏大"红区告警拦下(V4.24/V4.25 抓波形期间发现的现象)

换算公式(默认档粗估)L_µH = 2.533e7 / (f_kHz² × C_nF)33nF 档结果 = 66nF 档结果 × 2

C_eff 校准预留L_µH = (2.533e9 / (f_kHz² × C_nF)) × COIL_CAL_COEF_Q10 / 1024 标定线圈(100µH / 300µH 精密电感)实测 f 后调单一系数收口。

4. 判定窗口 — 三区制(v0.2:合理范围 50 ~ 1000 µH,两档任意合法)

两档频率带:

  • C=33nF 合法带:27.7 ~ 123.9 kHzL∈[50,1000]µH
  • C=66nF 合法带:19.6 ~ 87.6 kHz

"两档任意 L∈[50,1000]µH 合法" → 只要存在一个档位使 L 合法即不告警(并集思路); 但档位不可读,单档合法区无法确认 → 保留三区制:

频率 (kHz) 语义 动作
🟢 确认正常 27.7 ~ 87.6(两档频带交集) 拨任意一档,L 都在 [50,1000] µH 绿灯
🟡 歧义带 19.627.7 或 87.6123.9(单档合法区) 某一档合法/另一档超,无档位信息无法确认 不上故障灯,仅 EVT/状态字段提示
🔴 确认超范围 < 19.6 或 > 123.9(并集外) 两档下 L 必超(<19.6 → L>1000µH>123.9 → L<50µH 黄灯慢闪告警
  • 🔴 区无歧义:<19.6 必然是 66nF 档 + L>1000µH>123.9 必然是 33nF 档 + L<50µH
  • 🟡 区(放宽后收窄):如 800µH 拨 66nF → f=21.9kHz 落灰带(33nF 档对应 2000µH 超); 常见推荐组合 100~500µH 两档均落绿区(见 §3 表)——灰带上灯会误伤这类现场,建议静默到诊断层
  • 与 v0.150300µH)对比:红下界 35.8 → 19.63001000µH 的规格内线圈不再误报), 绿窗 50.687.6 → **27.787.6**

建议宏(TaskLoop.h,待标定)

#define COIL_F_LOW_LIMIT     196    // f < 19.6kHz  → L 必 >1000µH → L偏大 (0.1kHz 单位)
#define COIL_F_HIGH_LIMIT   1239    // f > 123.9kHz → L 必 <50µH   → L偏小 (0.1kHz 单位)
#define COIL_F_GREEN_LOW     277    // 绿窗下界 27.7kHz (两档交集)
#define COIL_F_GREEN_HIGH    876    // 绿窗上界 87.6kHz (两档交集)
#define COIL_DEF_C_NF        66     // 默认档电容 nF (拨码不可读, 粗估 L 用; 33nF 档 ×2)
#define COIL_CAL_COEF_Q10   1024    // C_eff 校准系数 Q10 (=1.000), 标定后微调

5. 判定状态机(持续监视 + 防抖)

条件: !g_disconnect_active && g_loop_stable && !loop1_VD_FLAG   (空闲/稳定, 车来不判)
f = calc_freq_khz(loop1_Origin, loop1_LPCNT)                    (空场滤波后频率)

f < COIL_F_LOW_LIMIT      → 故障 1 = L 偏大
f > COIL_F_HIGH_LIMIT     → 故障 2 = L 偏小
COIL_F_GREEN_LOW..HIGH    → 正常
其余 (歧义带)             → 状态位提示 (不上灯)

防抖: 越界持续 100tick(1s) 置位; 恢复持续 100tick 清除
监视点: vd1_task 无车段末尾 (Origin 更新后)

6. 黄灯模式 5(方案草案)

模式 状态 指示
1 断开/无线圈 快闪 200ms
5(新增) 线圈电感异常(L 偏大/偏小) 慢闪 500ms/500ms1Hz
4 环境预判/学习中 常亮
3 断开史 N 短闪
2 正常

优先级:断开(1) > 电感异常(5) > 环境(4) > N短闪(3) > 灭 自检段(STBL=0)不判,防上电抖动。红绿指示不受影响。

7. 诊断输出(草案)

EVT|coil_fault f:16.3kHz L~1445uH(C66/×2C33) too_large   // 进入告警 (红区)
EVT|coil_gray  f:21.9kHz                                   // 歧义带提示 (可选, 不上灯)
EVT|coil_ok    f:62.1kHz L~100uH                           // 恢复

8. 单测计划

tests/test_coil_range.c:窗口边界换算(表驱动 50/1000 边界)/ 红区告警与恢复防抖 / 车压不误判(VD=1 不判)/ 两档歧义粗估(L66 与 ×2)/ 灰带不上灯仅状态位。

9. 待确认项(未定)

  1. 黄灯模式 5 慢闪 1Hz 节奏是否采纳(或"常亮+1 短灭"
  2. 默认档 COIL_DEF_C_NF:66nF(出厂并联 ON)?现场是否有普遍拨 33nF 的情况
  3. 灰带(歧义带)处理:推荐不上灯仅诊断日志(EVT|coil_gray),若产品要求提示再议
  4. 红/绿阈值(196/1239/277/8760.1kHz 单位)需标定线圈实测后微调