- docs/pd136ha-to-dld154v4b-delivery-alignment.md(17.9KB,11 节) · 口径前提:两型号同为 Origin×表>>16,BASE 32768 vs 131072 不影响百分比口径 · 进入灵敏度 4 档对照(现役方案B + PD132T 备选表),偏差非单调(档0 +108%) · 释放/滞回对照:V4B 离开/进入比 15~48% vs PD136HA 50~67% · 判据强度差异与高速车/短占压风险(100km/h 占压 36ms vs 低Q 50ms 确认) · 超时常量同源实证:HOLD 5*1200/6000、LC_HOLD 4*1200/4800(均 300s/240s) · 拨码:SA_1/SA_2 语义一致可直接照搬(两型号引脚均上拉,ON=读出 0) · 线圈电感四级门为替换最大风险(<24µH 恒判车) - README: 新增「交付对齐报告」索引 + docs 树补全 - 两份 model analysis 加双向交叉链接
25 KiB
DLD154V4B 车检器分析
型号: DLD154V4B | 固件: V4.36.40(2026-09-09 刷新;此前快照 V4.29 / V2.8)| 平台: AT32F421F8P7(Cortex-M4, 120MHz, FreeRTOS) 源码:
vd_detector/DLD154V4B/utilities/at32f421_freertos_demo/(TaskLoop.c 1797 行 + main.c 304 行) ⚠ §9 = 待验证专题(23µH 悬停临界跳变,2026-09-09,代码未改,机理待现场验证) 原理图:models/DLD154V4B/DLD154V4_Ver4.01-20251021_Logic.pdf(本仓附件,2026-09-03 由 Ver3.00 更新) 硬件变更: 见文末(2026-09-03:R19 拆 + R27 补焊 0Ω 的实验板;产品仍用三极管库存板 R19 在 / R27 空,C_eff=43nF) 硬件前端对比:docs/hardware-loop-frontend-pd132t-vs-v4b.md(直连 vs PD132T CD4060 分频) 血缘:M1H 的现代实现——灵敏度表/映射/IIR 系数继承,M4 优化(快 tick/确认/斜率限幅)是 8051 时代做不到的增量。 交付对齐报告:docs/pd136ha-to-dld154v4b-delivery-alignment.md(PD136HA → DLD154V4B 替换评估,2026-09-11)
1. 平台与工程
| 项 | 值 |
|---|---|
| MCU | AT32F421F8P7(Cortex-M4 @120MHz, 64KB Flash) |
| RTOS | FreeRTOS(loop_task_function 主任务) |
| 工具链 | Keil MDK / AT32 标准库 |
| 版本体系 | 4.36.x REV 修订号制(V2.35 引入):MAIN/SUB 产品定,小功能/参数/文档只 bump REV;启动打印 fw:4.36.x main=4 sub=36 rev=x hw:3.00 |
| 看门狗 | IWDT ≈1.64s(V2.10 新增,TMR15 ISR 5ms 递增 + 主循环 poll_wdg 500ms 双保险喂狗) |
| 通信 | 无 RS485;TTL 调试口 9600 8N1(DBG 周期 2s + EVT 事件) |
固件演进:V4.23 判稳/呼吸 → V4.24 环境重校准 → V4.25 黄灯预判锁存 →
V4.26 电感量监视+补偿提速 → V4.27 频率测量 4 倍修正 → V4.28/29 C_eff 标定 →
V4.30~V4.36 低Q 释放/卡死治理链 + 电感分级产品化语义(详见 §8)。
详细见 DLD154V4B 仓 docs/devlog.md(V2.77)。
2. 硬件资源
| 引脚 | 功能 |
|---|---|
| PA7 | LP 线圈捕获(TIM3_CH2,输入 DIV_2 = 每 2 信号沿捕获一次;计数器 tick=120MHz) |
| PA0 / PA1 | SA1 / SA2 灵敏度拨码 |
| PA2 | SW3 存在/脉冲模式 |
| PA3 | SW4 离开延时开关 |
| PA4 | SW5 安全复位 |
| PA5 / PA6 | RLY2 默认输出(绿灯镜像此路) / RLY1 拨码可选脉冲继电器 |
| PA9 / PA10 / PB1 | LEDA 绿 / LEDC 黄 / 红灯(TMR14 PWM 呼吸) |
振荡回路(原理图 Ver4.01):固定 33nF + 拨码经 R27 0Ω(实验板)/ 三极管电路 R19(产品库存板) 接通第二颗 33nF → 两级频率(名义 66nF 低频 / 33nF 高频)。⚠ 固件无法读档位(拨码不引 IO)。
产品电容口径(重要):产品 = 三极管库存板(R19 在 / R27 空),低频档实测 C_eff≈43nF(41.3~45.5,V4.34 基准); 0Ω 实验板 C_eff≈68(仅机理验证,不用于产品计算)。高频档(33nF)实测 C_eff≈34.4。
3. 检测算法
3.1 频率测量
- TIM3_CH2 输入捕获(PA7):计数器 tick = 120MHz(sclk,APB1÷1),通道输入 DIV_2(每 2 信号沿捕获 1 次)
- ⚠ V4.27 修正(2026-09-03):旧实现 calc_freq 按 60MHz 假设且未补偿 DIV_2 → f 打印/估算低 4 倍(示波器 30.23kHz vs 打印 7kHz);修正后 f_kHz = 240000×LPCNT/CAPVD(等效 240000/Xn)
- 归一化:
LPCNT = MEASUREMENT_BASE(131072) / Xn(BASE=2^17),累加 LPCNT 个周期得 Value ≈ 131072 - 测量窗 ≈ 131072/(120MHz tick) = 1.09 ms(Value=Σ Xn 计数,1 计数=1/120M s)
- ⚠ 强制断开期(fault3)Xn/Value 仍由 TMR3 捕获 ISR 实时更新,而 Origin 只在 vd1_task 更新(停摆即冻结)——V4.36.40 热切换修复的关键依据
3.2 滤波(M4 优化,区别于参考型号)
- IIR:
ALFA_CAP1=79@10ms → τ≈32ms - 斜率限幅:单次变化 >5% 截断(拒绝 EMI/闪电尖峰)
- 进入/释放确认按 Q 档(V4.36.8,Q∝1/f 代理):进入 ENTRY_CONFIRM 高Q(f≤80k)=3 / 中Q(80~100k)=4 / 低Q(f>100k)=5; 释放 REL_CONFIRM 高3 / 中4 / 低5(低Q 抖动大,多样本防假进入/输出抖落)
- 低Q 释放平滑(V4.36.19/26):
REL_ALFA=30@10ms → τ≈85ms,独立 IIR 仅用于低Q 释放判定(复刻打印降采样平均效应抗抖) - 释放慢滤波
RELEASE_ALFA=21@10ms → τ≈117ms(对齐 PD132T α79@43.7ms)
3.3 基线
- 正常:
WINDOW_ORIGIN=500滑动平均(500×10ms = 5s),有车冻结 - 上电判稳(V4.23 重写):窗口 100 样本≈1s,窗口均值漂移 ≤ 0.1%(STABLE_ORIGIN_PPT=1)连续 2 窗 →
settle_cnt++; 判稳 =(≥128 样本 && ≥2 窗)|| ≥500 样本兜底(STABLE_MAX_SAMPLES=500, 5s);退出/重新初始化清零 → 杜绝二次稳定期 1 样本瞬判 - 就绪巩固期 Q 分级(V4.36.36):判稳完成(Loop stable)后绿灯按 Q 档继续慢闪—— 高Q 5s(READY_HOLD_HI=1000)/ 中Q 7s(1400)/ 低Q 10s(2000),5ms tick 递减。 目的:低Q 线圈上电自检完(绿灯灭)立刻压板易绿灯常亮,巩固期内 Origin/EMA/滤波真实多收敛 5~10s
- 冻结超时:
FREEZE_TIMEOUT=1000(10s)+ ±2% 稳定性窗口,持续偏高且稳定才强制更新基线 - 环境重校准(V4.24/31,受控替换):
dev > +4×dlt高位判定为疑似环境变化后:- 黄灯预判锁存
ENV_WARN_WAIT=200(2s)→ 常亮;回摆/目标靠近不灭 - 冻结等待
ENV_RESYNC_WAIT=700(7s,V4.31 拍板 预判2s+补偿7s+恢复2s;回摆清零) - 学习窗 200tick(2s)空闲均值 ×3 + settle 语义(漂移 ≤0.1%),预算
ENV_LEARN_MAX_TICKS=3000(30s)放弃 - 空闲原子替换 Origin(
env_resync_apply)+ 清冻结三件套;ENV_RECOVER_WAIT=200(2s)空闲确认后解除预判
- 黄灯预判锁存
- 释放后 Origin 分级补偿(V4.36.26/32,仿 PD132T 慢采样等效):
释放后全冻结 1s(
REL_ORIGIN_FREEZE_TICKS=100)→ 残余缓离窗口不入均值窗; 之后 降权 2s ×1/5(ORIGIN_LOWLEARN_TICKS=200,均值窗 500→2500 样本 / 25s 窗,ORIGIN_LOWLEARN_MULT=5) ——切断"残余低值样本拉低 Origin → 释放线下降 → cycle 正反馈" - 真空 EMA 重锚 B3(V4.36.31/33/35):
VACUUM_EMA_ALFA=128(τ≈1.28s)跟踪无车真空; 判定参考vac_ref = min(Origin, EMA),但仅当 Origin−EMA > 1×dlt(VAC_REF_DELTA_DLT=1,真锚错)才用 EMA 锚低 ——防金属板悬停感应边缘快速拉低 EMA 导致触发线漂移。 ⚠ V4.36.31 cast bug(V4.36.35 治本):(uint32_t)(负差)/128 = +3355万/样本(C 语义:负转无符号爆炸); 修复 = 有符号先除g += (uint32_t)(_ema_d/128);V4.36.34 的"偏差>25% 自愈重置"保留为最后防线
3.4 进入/离开
- 进入:
CAPVD < Origin − dlt(按 Q 档 3/4/5 次确认),dlt = Origin×SensTable[SENS]>>16 - 离开:简单滞回 3 次防抖(V2.9 起默认,
(Origin−dlt)<CAPVD且cnt_release≥3);平坦性三条件(CN200910309382)代码保留在#if USE_FLATNESS_EXIT内,默认禁用(现场实测不理想,2026-08-28) - 离开阈值
dlt_rel = Origin×SensTable_1[SENS]>>16 - 低Q 环带超时兜底(V4.36.30,时间回滞替代空间回滞):板停在触发-释放回滞带内不再永久卡死——
CAPVD > 进入线持续REL_BAND_TIMEOUT_TICKS=250(2.5s)→ 强制释放 - 低Q 释放带回加宽(V4.36.28):
REL_BAND_LO_MULT=180(dlt_rel×1.8,23→41 counts@SENS3),回滞 = 49−41 = 8 counts
3.5 灵敏度表
USE_PLANB_TABLE = 1 (方案B,V4.06 定稿,实际编译)
SensTable[4] = {337, 71, 38, 25} // 进入(调深;V4.07 SENS=0 回调 357→337)
SensTable_1[4] = { 51, 27, 18, 12} // 释放(调浅;等比 ×25/21 ×12/14)
USE_PLANB_TABLE = 0 (PD132T 完全对齐表,备选)
SensTable[4] = {300, 60, 32, 21} // V2.11:全档与 PD132T 一致
SensTable_1[4] = { 60, 32, 21, 14}
SENS = 3-(sw&0x03)(拨码反码,与 M1H 一致);拨码去抖:连续 5 次一致才生效- ⚠ V2.8:SENS=3 最高档 10→20、9→14——现场广告杆落杆误触发(机械/电磁扰动越过 0.015% 阈值)
- ⚠ V2.11:全档对齐 PD132T(客户现场替换需求);V4.06 起方案B 现场调校(SENS=3 实测接近 PD132T)
3.6 线圈电感量监视(V4.26 → V4.36.37 四分)
- 判据:默认低频档口径,空场频率合理窗 18~125kHz(V4.36.9/18/25 收敛:20
120 → 18125) - 条件:仅稳定 + 无车 + 未断开时判(无车主路径调用,Origin 反推空场 f;车压/自检不判);越界/恢复均 5s 防抖(
COIL_FAULT_HOLD_TICKS=500,V4.36.21 自 1s 加长) - 四分级语义(V4.36.25 三分 → V4.36.37 方案A 分级):
| f 区间 | 电感(43nF) | fault | 黄灯 | 判定 |
|---|---|---|---|---|
| 18~125k | 38µH~1.15mH | 0 | 灭 | 正常 |
| f<18k | L 偏大 | 1 | 一长一短 | 照常 |
| 125~156k | 24~38µH | 1 | 一长一短 | 照常 |
| 156~171k | 20~24µH | 2 | 一长两短(V4.36.38) | 恒判车(不随宏) |
| f>171k | <20µH 短路级 | 3 | 快闪 200ms(同真断开) | 宏=0 判车 / 宏=1 等同断开 |
- 宏与阈值:
COIL_L_MIN_UH=24↔COIL_L_MIN_F_KHZ=156(f@24µH=156.7k)COIL_L_SHORT_UH=20↔COIL_L_SHORT_F_KHZ=171(f@20µH=171.6k,V4.36.37 新增)COIL_UNDER_MIN_AS_OPEN:默认 1(V4.36.39 用户拍板出厂态)——短路级=完全断开态(判定暂停 + 继电器保持释放 + 绿灯灭 + 黄灯快闪 + 专职恢复监测);0保留"仅快闪提示、判定照常"
- 诊断:
EVT|coil_fault f:xx kHz L~xxx uH ...、EVT|coil_ok ... - L 估算(V4.28/29/34):
L_uH = 2.533e7/(f_kHz² × COIL_CAL_C_NF),产品宏 43(三极管库存板;0Ω 板 68 仅实验) - 热切换恢复(V4.36.40 修复):短路级强制断开期 vd1_task 停摆 → Origin/LPCNT 冻结 → 旧 recover 用冻结值判 f 永远 >171k → 换正常线圈也不恢复(只能断电)。
修复:recover 改用 TMR3 捕获 ISR 实时 Xn(
f=240000/Xn)判回窗,连续 5s → 实时置档 → ISR 停压 LOOP_OK → 主循环上升沿自动发起重连确认(100ms)→ 无车判稳门控 → Origin 判稳重建 → 正常线圈 fault 归 0。换线圈不断电约 6s 自愈
3.7 指示逻辑
- 红灯:TMR14 PWM 呼吸(PB1,暗→暗 2520ms,60ms/步)
- 绿灯:= RLY2(PA5)odt 镜像(吸合亮/释放灭,V4.36.10 由 RLY1 改默认继电器);
自检/判稳/就绪巩固期慢闪(
!LOOP_OK || g_reconn_stab || fault==3 || !stable || ready_hold>0) - 黄灯优先级链(V4.36.38 现行,1>4>2>1'>3>灭):
- 快闪 200ms:
!LOOP_OK(断开/从未接)或g_reconn_stab(重连判稳中)或 fault==3 短路级 - 常亮:环境异常预判/重校准学习(
g_env_warn/g_env_resync锁存) - 一长两短(900/300/100/300/100/700ms,6 相):fault==2 可用级(20~24µH)
- 一长一短(900/300/100/700ms,4 相):fault==1 出窗(L 偏大 / 24~38µH)
- N 短闪(80ms 亮/200ms 灭 ×N≤3,1.2s 间隔):断开史
- 灭
- 快闪 200ms:
- 现场判读口诀:一长两短=偏低但能用(照常判车);一长一短=出窗仍可用;快闪=真断开或 <20µH 短路级
4. 时序/速率/周期速查(2026-09-09 V4.36.40 刷新)
V4B 是混合节拍架构,与所有参考型号的单节拍不同:
| 量 | 值 | 说明 |
|---|---|---|
| 检测主循环 | 10 ms | FreeRTOS vTaskDelay(10),vd1_task 由 CAP_OK 门控 |
| 测量窗 | 1.09 ms | 131072/120MHz(CAPVD 原始值节拍) |
| CAPVD 更新节拍 | 10 ms | IIR 消费节拍(vd1_task 在 10ms 循环跑) |
| 基线更新周期 | 5 s(500 窗) | 稳定期 ~1.3s 判稳(128 样本 + 2 窗漂移 ≤0.1%) |
| IIR 时间常数 τ | 32 ms | 10ms × 256/79(低Q 释放平滑另用 REL_ALFA=30 → τ≈85ms) |
| 时序状态机 tick | 50 ms | TMR15 ISR 5ms×10(进入/离开/脉冲/超时) |
| 进入确认 | 3 |
按 Q 档(高3/中4/低5) + 时序 IN_DELAY 500ms |
| 离开判定 | 简单滞回 3~5 次防抖(平坦性 #if 禁用) | 按 Q 档 + OUT_DELAY 500ms(SW4=ON) |
| 低Q 环带超时兜底 | 2.5 s | CAPVD>进入线持续 → 强制释放(V4.36.30) |
| 释放后 Origin 补偿 | 冻结 1s + 降权 2s×1/5 | V4.36.26/32 |
| 真空 EMA | τ≈1.28 s | V4.36.31(α=1/128) |
| 脉冲宽 | 500 ms | PULSE_DELAY=10 @50ms |
| 有限存在 | 300 s | HOLD_TIME=6000 @50ms |
| 安全复位 | 240 s | LC_HOLD_TIME=4800 @50ms |
| 环境重校准 | 2s 预判 → 7s 补偿 → 2s 恢复 | ENV_WARN/RESYNC/RECOVER 200/700/200 + 学习 3×200tick,预算 30s |
| 就绪巩固期 | 5s / 7s / 10s | 按 Q 档(高/中/低),绿灯慢闪,V4.36.36 |
| 线圈监视防抖 | 5 s | 500×10ms(coil_monitor,仅稳定无车判) |
| 重连确认窗 | 100 ms | 载波连续恢复计数(V4.36.2) |
| 重连起振抑制 | 200 / 300 / 1500 ms | 按 Q 档(高/中/低,V4.36.7/11) |
| 重连判稳门控 | 600ms 无漂移 / 5s 兜底 | V4.36.15(值稳定才放行) |
| 有车断开继电器保持 | 1000 ms | RELAY_HOLD_MS(V4.36.3/7) |
| DBG 周期打印 | 2 s | 含 f_kHz + L_uH(C_eff 标定后) |
| 看门狗 | IWDT ≈1.64s | TMR15 ISR 计数 + 主循环 poll_wdg 500ms 喂狗 |
5. 拨码与配置
| DIP | 引脚 | ON=1 | OFF=0 |
|---|---|---|---|
| SA_1/SA_2 | PA0/PA1 | 灵敏度低位/高位 | SENS = 3-(sw&0x03) |
| SW_3 | PA2 | 脉冲输出 | 存在输出 |
| SW_4 | PA3 | 离开延时 500ms | 无延时 |
| SW_5 | PA4 | 安全复位 | 正常运行 |
拨码去抖:连续 5 次一致才生效。 频率档位(33/66nF)不在 DIP 内,由板载拨码直控电容(不引 MCU IO)→ 固件按默认低频档标定。 ⚠ 拨码不重启检测器(无复位电路联动)——电感分级变更后靠自动恢复机制收敛,无需断电。
6. 与 M1H 的血缘对比(同血统两代)
| 特征 | M1H (2008) | DLD154V4B |
|---|---|---|
| 平台 | STC12C5202 (8051, ~12MHz) | AT32F421 (M4, 120MHz) + FreeRTOS |
| 归一化基数 | 32768 | 131072(2^17,快 4 倍精度) |
| 测量窗 | 32.8ms | 1.09ms(快 30×;V4.27 修正 120M tick 口径) |
| CAPVD 节拍 | 32.8ms | 10ms(快 3.3×) |
| 基线 | 100 窗 3.28s(有车也跟踪) | 500 窗 5s(有车冻结 + 冻结超时 + 环境重校准 + 释放后分级补偿) |
| 灵敏度表 | {216,108,36,10}/{108,72,18,9} | 方案B {337,71,38,25}/{51,27,18,12}(现场调校);PD132T 对齐表 {300,60,32,21}/{60,32,21,14} |
| IIR | ALFA 79 @32.8ms τ=106ms | ALFA 79 @10ms τ=32ms(快 3.3×) |
| 进入 | 单次越线 | 3~5 次确认(按Q档) + 斜率限幅 |
| 离开 | 简单阈值 | 简单滞回 3~5 次防抖 + 环带超时兜底 |
| 产品自诊断 | 无 | 断开编码 / 电感四分监视(18~125k)+ L 粗估 + 短路级等同断开 + 热切换自愈 |
| 看门狗 | WDT_CONTR | IWDT ≈1.64s(V2.10 双保险) |
| 时序 tick | 50ms | 检测 10ms + 时序 50ms(混合) |
7. 设计特点
- 混合节拍是本型号最大特色:检测(IIR/基线/判据)在 10ms 快循环,时序状态机(进入/离开/脉冲/超时)在 50ms tick——两者解耦,响应快且时序参数与 M1H 直接对齐
- 基线多重保护:有车冻结 + 冻结超时(10s)+ 稳定性检查(±2%)+ 受控环境重校准(2s 预判/7s 补偿/30s 放弃)+ 释放后冻结 1s + 降权 2s——比参考型号多三层自适应
- 低Q 专项治理(V4.30~V4.36,见 §8):环带超时兜底、真空 EMA 重锚、释放平滑、带回加宽、确认分档——23µH 级低Q 线圈从"偶发锁死 75s"到"全程可控释放"
- 平坦性离开判定(专利 CN200910309382)是参考型号没有的——V2.9 起默认关闭(现场实测不理想),切回简单滞回(与 154Pro 一致),代码保留可开
- 黄灯人机接口完整(V4.23~V4.38):快闪 > 环境学习锁存 > 一长两短(可用级) > 一长一短(出窗)> 断开史 N 短闪 > 灭——现场 10s 级可判故障类型与"能不能用"
- 自诊断带校准(V4.26~V4.40):电感监视基于真实频率(V4.27 修正 4 倍)+ 标定等效电容(产品 C_eff=43)+ 四分语义 + 短路级等同断开(默认开)+ 热切换不断电自愈
8. V4.30~V4.36 演进(2026-09-04 ~ 09-09,低Q 治理链 + 产品化语义)
8.1 低Q 释放/卡死治理链(机理编号)
| 机理 | 现象 | 药方(版本) |
|---|---|---|
| 1 | Origin 学高锚错 | V4.36.26 释放后冻结 500ms + τ85ms |
| 2 | 差 1~2 counts 脆断 | V4.36.28 REL_BAND_LO_MULT 150→180(带回 41) |
| 3 | 板深停触发区 | V4.36.29 容差 4(已撤,太易释放)→ V4.36.30 环带超时 2.5s 兜底 |
| 4 | Origin 学到搁置位 | V4.36.31/33 真空 EMA 重锚(min(Origin,EMA),门控 >1×dlt) |
| 5 | 残余缓离拉低 Origin | V4.36.32 冻结 1s + 降权 2s×1/5(仿 PD132T 慢采样) |
| 6 | EMA cast 爆炸 | V4.36.34 钳位+自愈(掩盖)→ V4.36.35 有符号先除治本((uint32)负差/128=+3355万) |
诊断字段(V4.36.27/34):DBG 行含 QLO/RSM/RLN/RCN/VEM/SUM,ADR 每 10s 打 &VEM &ORGSUM &Origin &RSM。
8.2 电感分级产品化语义(用户拍板链)
| 版本 | 变更 | 决策 |
|---|---|---|
| V4.36.20~23 | 最低电感量 20 → 25 → 24µH | 频率上限 171 → 153 → 156kHz |
| V4.36.24 | 宏 COIL_UNDER_MIN_AS_OPEN 双模式 |
0=仅快闪 / 1=完全断开 |
| V4.36.25 | 电感三分:窗回 125k;125~156k 一长一短;>156k 快闪 | 修正误归正常 |
| V4.36.37 | 方案A 分级降级(用户选 A) | fault2 = 156~171k 保判车 + 独立黄灯;fault3 = >171k 短路级才等同断开 |
| V4.36.38 | fault2 黄灯 疾闪 100ms → 一长两短(用户定) | 与一长一短同家族、"两短"区分 |
| V4.36.39 | 宏默认 0 → 1(用户拍板) | 短路级出厂即等同断开,客户无需编译期开宏 |
| V4.36.40 | 热切换死锁修复 | recover 用实时 Xn 判回窗;换线圈不断电 ~6s 自愈 |
语义要点:不误杀 20~24µH 的"低但可用"线圈(照常判车+一长两短提示);<20µH 真短路级才停判(不可靠输出风险)。
9. 待验证:23µH 悬停临界跳变(2026-09-09,代码未改)
状态:现象已定位到代码路径,机理为推断,尚未现场验证、未做任何代码改动。 触发需三个条件同时满足、悬停窗口极窄(约 50~200 counts)—— 故"偶发、难复现"。存档备查。
9.1 现象(用户原述)
- 23µH 线圈,低频档 + 高灵敏度(SENS=3),上电持续运行
- 金属板反复接近/远离 → 正常(绿灯亮灭、继电器释放均正常)
- 偶然一次:金属板晃到临界高度停留 → 继电器频繁跳变(绿灯同步频繁亮灭),可持续复现
- 金属板远离等 ~10s 再靠近 → 一直复现不了
- 断电重启后再试 → 也一直复现不了
9.2 参数定位
| 项 | 值 | 依据 |
|---|---|---|
| 23µH @ C_eff=43nF | f ≈ 160 kHz | L = 2.533e7/(f²×C) |
| 电感分级 | 156 < f ≤ 171 → want=2 可用级(黄灯一长两短) |
COIL_L_MIN_F_KHZ=156 / COIL_L_SHORT_F_KHZ=171 |
| Q 档 | f > 100k → 低 Q(g_q_lo=1) | RECONNECT_Q_MID_F_KHZ=100 |
| 高灵敏度 | SensTable[3]=25 → dlt = Origin×25/65536 ≈ 0.038%(Origin≈130000 → dlt≈50 counts) |
方案B 调校表 |
| 迟滞带 | 进入线 −1.0×dlt / 释放线 −1.8×dlt → 带宽 0.8×dlt ≈ 40 counts |
REL_BAND_LO_MULT=180 |
| vac_ref 切换门槛 | 1×dlt ≈ 50 counts | VAC_REF_DELTA_DLT=1 |
⚠ 若现场为 0Ω 实验板(C_eff≈68nF)→ 23µH 对应 f≈127kHz(want=1,一长一短),Q 档不变。黄灯表现可反推板型。
9.3 触发三要素(缺一不可 → 解释"偶发")
- 低 Q(f>100k):23µH 必然满足 → 释放判定走
g_rel_smooth(τ≈85ms)+ 1.8× 加宽 - 高灵敏度:dlt 仅 50 counts → 迟滞带仅 40 counts 宽,极易被抖动穿透
- 悬停在进入线附近(dev ≈ −1×dlt):正好踩在 vac_ref 切换门槛上,且仍在真空 EMA 更新窗(±4×dlt)内
9.4 机理:vac_ref() 参考切换 = 阈值阶跃(推断)
代码事实(TaskLoop.c L290):
static uint32_t vac_ref(void)
{
if (g_vacuum_ema == 0) return loop1_Origin;
if (loop1_Origin - g_vacuum_ema > dlt_ORG * VAC_REF_DELTA_DLT) /* 门槛 1×dlt */
return g_vacuum_ema; /* ← 参考整体下移,进入线/释放线同步阶跃 */
return loop1_Origin;
}
真空 EMA 更新条件(L1302–1326):无车 且 dev ∈ ±4×dlt 且 freeze_tick==0 → 悬停在进入线附近时 dev≈−1dlt,完全落在窗内,EMA 以 τ=1.28s 向悬停值收敛。
极限环(周期 ≈1~1.5s,1s 冻结期决定下限):
- 无车,板悬停 →
CAPVD ≈ Origin−1dlt→ EMA 缓慢向 CAPVD 靠 - EMA 越过
Origin−1×dlt→ vac_ref 切到 EMA → 进入线瞬移 50 counts - CAPVD 相对新进入线变"浅" → 维持无车;EMA 继续跟随并稳定在低值
- 手抖使 CAPVD 再下探 1×dlt → 低于新进入线 → 进入确认 5 样本(50ms)→ 有车
- 有车 → EMA 冻结(更新只在无车分支)→ vac_ref 保持低位
- 释放线
EMA−1.8dlt,g_rel_smooth跟上后必然高于它 → 释放命中(5 样本)→ 无车 - 释放 →
g_origin_freeze_tick=100(1s 全冻结)→ 1s 后 EMA 重新跟随 → 回到步骤 1
低 Q 测量抖动大 + g_rel_smooth 比 CAPVD 滞后 85ms,两个相位差保证"进了难出、出了难进"的交替翻转。
9.5 为什么难复现 / 远离恢复 / 断电消失
| 观察 | 解释 |
|---|---|
| 难复现 | 悬停深度必须落在 (1×dlt, 4×dlt) ≈ 50~200 counts 窄窗内,手放偏一点就进不去 |
| 远离 10s 恢复 | CAPVD 回真空 → dev→0 → EMA(τ=1.28s)拉回真空值 + Origin 均值窗(5s)洗掉污染 → 工作点重新对准 |
| 断电消失 | Origin / EMA / g_rel_smooth / 环带计数全部清零重建,须重新经历"压→悬停"路径才能把 EMA 培养到门槛 |
| 本质 | 非几何阈值问题(否则同一高度必然复现),而是运行时自适应状态被悬停"培养"出来的极限环 |
9.6 现场验证清单(复现时优先做)
- 抓串口
EVT|enter_try/EVT|leave_try/Car_In/Car_OFF四类行 → 看 CAPVD 与 Origin/dlt 的相对位置、f 值确认 Q 档 - 临时在
vac_ref()加 1 行打印(用 EMA 还是 Origin +Origin−EMA差)→ 直接确认阈值是否在跳(可回退) - 黄灯对照:一长两短 = 三极管板(f≈160k)/ 一长一短 = 0Ω 板(f≈127k)
- SENS 降到 1/2(dlt 放大约 3~6 倍)→ 若跳变消失,坐实"门槛太窄"
9.7 修复候选(验证后再动,未实施)
| # | 方案 | 评价 |
|---|---|---|
| ① | EMA 更新加真空守卫:要求 dev > −0.5×dlt(接近真空)才更新 EMA |
最对症,直接断掉"悬停污染 EMA" |
| ② | vac_ref 切换加回滞:切到 EMA 后需回升到 Origin−0.5dlt 才切回 |
治标,便宜、无副作用 |
| ③ | VAC_REF_DELTA_DLT 1→2~3 |
悬停不再触发切换,但削弱 V4.36.31 原意 |
| ④ | 进入/释放加最小保持 300ms | 通用防抖兜底,可叠加 |
倾向 ①+④(①治根,④保证任何自适应意外都不直接甩到继电器上)。
9.8 与既有治理链的关系
§8.1 机理 4(V4.36.31/33 真空 EMA 重锚)是本现象的上位药方;V4.36.33 的 >1×dlt 门控只防住"小偏差重锚",
但悬停深度 1~4dlt 时 EMA 仍会被跟随并越过门槛 → 属于机理 4 的残留边角。若验证成立,方案 ① 是机理 4 的补完。
2026-09-03 硬件变更:拨码电容开关旁路三极管(原理图 Ver4.01)
准确改动(用户确认):
- R19 取下(拆除)
- R27 补焊 0Ω(原空贴)
- 效果 = 拨码开关不再经过三极管电路,通过 0Ω 电阻直接控制第二颗 33nF 电容
原因/效果(2026-09-03 现场标定):
- 原电路(拨码经三极管控电容):低频档(66nF 名义)实测等效谐振电容 C_eff≈43nF(2 台 5 组反推),第二颗 33nF 只等效并入 ~8.6nF
- 旁路后(0Ω 直控):C_eff=68.1~68.9nF(均值 68.4)≈ 名义 66nF,电容全量并入
- 产品决策(V4.34):产品基准回到三极管库存板——
COIL_CAL_C_NF=43,0Ω 改动仅作机理验证(库存板存量消化优先) - 33nF(高频)档标定 34(两板一致)