feat(V4B): 释放手感对齐 PD132T — 释放慢滤波(方案A, 固件 V4.03)
现场金属板测试: 灵敏度表已对齐, 但释放高度 V4B 比 PD132T 低 (刚离开触发位置即释放 vs 需离更远)。根因: IIR 滤波时间常数差异 (V4B 10ms+α79→τ32ms vs PD132T 43.7ms+α79/64→τ142~175ms), 释放阈值浅(进入20%)放大差异。 修复(USE_SLOW_RELEASE 开关, 默认 1): - 新增独立慢滤波 loop1_CAPVD_slow(α=18/256 @10ms→τ≈142ms), 吃原始 Value 不经斜率限幅, 复刻 PD132T 恢复速度 - 离开判定改用慢滤波值, 进入路径不变 - RELEASE_ALFA=18 可调(PD132T SET_FLT=ON 时用 15≈τ170ms) - 同步: INIT_VD/稳定期/线圈重连 - 版本 V4.03(顺带修正 cmcng.h 字符串"4.00"与数字 4/2 不一致) 验证: gcc 单测 tests/test_release_slow_filter.c τ fast=30ms/slow=140ms; 释放时机差 260ms ✓ 文档: technical-spec §4.3.3 + devlog V2.12 待板级: 真机金属板测试 + MRS 编译
This commit is contained in:
@@ -35,6 +35,8 @@
|
||||
* - 进入确认 (ENTRY_CONFIRM) 替代单次阈值判定
|
||||
*===========================================================================*/
|
||||
#define ALFA_CAP1 79 // IIR α = 79/256 ≈ 0.31 (@10ms → τ≈32ms)
|
||||
#define RELEASE_ALFA 18 // 释放慢滤波 α = 18/256 ≈ 0.07 (@10ms → τ≈142ms, 方案A: 对齐 PD132T Flt_Reg=79 @43.7ms 释放手感)
|
||||
#define USE_SLOW_RELEASE 1 // 方案A总开关: 1=释放走慢滤波(对齐PD132T) 0=原快滤波释放
|
||||
#define MAX_SLOPE_RATE 5 // 斜率限幅: 单次最大变化 5% (物理限制, 拒绝 EMI 尖峰)
|
||||
#define ENTRY_CONFIRM 3 // 进入确认: 连续 N 次低于阈值才判定有车
|
||||
#define FREEZE_TIMEOUT 1000 // 基线冻结超时: ~10s @ 10ms/tick, 持续偏高且稳定后强制更新基线
|
||||
@@ -87,6 +89,7 @@ extern uint16_t loop1_CapCnt; // 当前窗口已累加次数
|
||||
extern uint32_t loop1_CapSum; // 当前窗口累加和
|
||||
extern uint32_t loop1_Value; // 一个测量窗口的原始 ΣXn
|
||||
extern uint32_t loop1_CAPVD; // IIR 滤波后的频率值
|
||||
extern uint32_t loop1_CAPVD_slow; // 释放判定慢滤波值 (方案A: 独立 IIR, τ≈142ms, 对齐 PD132T 释放手感)
|
||||
extern uint32_t loop1_Origin; // 基线(无车时的参考频率)
|
||||
extern uint32_t loop1_ORG_SUM; // 基线跟踪累加和
|
||||
extern uint16_t loop1_ORG_CNT; // 基线跟踪计数(窗口=100)
|
||||
|
||||
Reference in New Issue
Block a user