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:
@@ -30,12 +30,11 @@
|
||||
* 滤波参数 — M4 优化版
|
||||
*
|
||||
* 与 M1H (8051, 50ms tick) 的关键差异:
|
||||
* - tick 提升到 10ms,滤波系数同步调整,保持等效时间常数
|
||||
* - 新增斜率限幅 (MAX_SLOPE_RATE) 过滤瞬态尖峰
|
||||
* - tick 提升到 10ms,ALFA_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'|
|
||||
|
||||
Reference in New Issue
Block a user