refactor: 去掉快速 IIR,单路 IIR ALFA_CAP1=79 @10ms (τ≈32ms)

ALFA_CAP1=79 @10ms, τ≈32ms — 已足够快,无需双路 IIR 的复杂度。
保留所有 V2 保护机制: 斜率限幅、进入确认、冻结超时+稳定性检查。

改动:
- ALFA_CAP1: 18→79
- 删除 CAPVD_fast 变量及双路 IIR 逻辑
- 进入检测改用 CAPVD 直接判定(仍保留 ENTRY_CONFIRM=3)
- 净删 50 行,架构更简洁
This commit is contained in:
wangfq
2026-06-29 18:35:13 +08:00
parent 3ddde99273
commit e839943436
2 changed files with 27 additions and 77 deletions

View File

@@ -30,12 +30,11 @@
* 滤波参数 — M4 优化版
*
* 与 M1H (8051, 50ms tick) 的关键差异:
* - tick 提升到 10ms滤波系数同步调整,保持等效时间常数
* - 新增斜率限幅 (MAX_SLOPE_RATE) 过滤瞬态尖峰
* - tick 提升到 10msALFA_CAP1=79 @10ms (τ≈32ms, 等效原 79@50ms 的 5× 响应速度)
* - 斜率限幅 (MAX_SLOPE_RATE) 过滤瞬态尖峰
* - 进入确认 (ENTRY_CONFIRM) 替代单次阈值判定
*===========================================================================*/
#define ALFA_CAP1 18 // IIR α = 18/256 ≈ 0.07 (@10ms → τ≈135ms, 等效 50ms 的 79/256)
/* 快速 IIR (CAPVD_fast): α=128/256=0.5, τ≈28ms, 用 (old+new)/2 实现,无需宏 */
#define ALFA_CAP1 79 // IIR α = 79/256 ≈ 0.31 (@10ms → τ≈32ms)
#define MAX_SLOPE_RATE 5 // 斜率限幅: 单次最大变化 5% (物理限制, 拒绝 EMI 尖峰)
#define ENTRY_CONFIRM 3 // 进入确认: 连续 N 次低于阈值才判定有车
#define FREEZE_TIMEOUT 1000 // 基线冻结超时: ~10s @ 10ms/tick, 持续偏高且稳定后强制更新基线
@@ -104,11 +103,10 @@ extern uint8_t g_loop_stable; // 线圈数值已稳定 (0=稳定中,
/* 离开防抖计数器(连续 CAPVD 恢复到阈值以上才释放) */
extern uint8_t loop1_cnt_release; // 离开防抖计数
/* M4 优化: 快速 IIR + 进入确认 */
extern uint32_t loop1_CAPVD_fast; // 快速 IIR 值 (α=0.5, τ≈28ms, 用于检测)
/* 进入确认 (M4 优化) */
extern uint8_t loop1_entry_cnt; // 进入确认计数
extern uint16_t loop1_freeze_cnt; // 基线冻结持续计数(超时后强制更新 Origin
extern uint32_t loop1_freeze_ref; // 冻结参考值CAPVD 偏离此值超限则重置计数)
extern uint16_t loop1_freeze_cnt; // 基线冻结持续计数
extern uint32_t loop1_freeze_ref; // 冻结参考值
#if USE_FLATNESS_EXIT
extern uint8_t g_exit_state; // 离开检测: 0=追踪斜率, 1=等待平坦
extern uint16_t g_max_slope; // 第一上升坡面最大 |f'|