Commit Graph

16 Commits

Author SHA1 Message Date
wangfq
fec67d6f20 feat: 冻结超时增加稳定性检查 — CAPVD波动超±2%则重置计数
问题: 上次提交仅计数冻结持续时长,若CAPVD在冻结期间大幅波动
(如车辆缓慢驶入过程中CAPVD持续爬升),30s后也会被误认为"环境变化"。

方案:
- 新增 loop1_freeze_ref: 记录进入冻结时的CAPVD值
- 每tick检查 |CAPVD - freeze_ref| > freeze_ref * 2%
- 波动超限 → 重置计数并以当前值重新开始计时
- 只有CAPVD连续30s稳定在±2%窗口内 → 才更新Origin

这确保了"连续稳定的新值"而非"连续偏高但波动的值"才会触发基线更新。
2026-06-29 10:30:01 +08:00
wangfq
269fa7f4cc feat: 基线冻结超时 — 持续偏高30s后强制更新Origin
问题: 原点保护冻结基线后,若CAPVD因环境变化(温度、器件老化等)
稳定在新的高频值,Origin永远不会更新,导致永久误判有车。

方案:
- 新增 FREEZE_TIMEOUT=3000 (~30s @ 10ms/tick)
- CAPVD偏离时 loop1_freeze_cnt 逐帧递增
- 超时后强制 Origin = CAPVD(当前稳定值),视为新常态
- 中途若CAPVD回归正常范围,计数清零,继续正常跟踪
- 车辆进入时同步清零冻结计数
2026-06-29 10:24:53 +08:00
wangfq
17e4b07860 feat: M4 核心优化 V2.0 — 双路 IIR + 斜率限幅 + 进入确认
三项改进突破 8051 时代限制:
1. 10ms tick + 双路 IIR
   - CAPVD (慢速): α=18/256, τ=135ms — 基线跟踪,等效原 50ms 设计
   - CAPVD_fast (快速): α=0.5, τ=28ms — 检测判定,比原快 5×

2. 斜率限幅 (MAX_SLOPE_RATE=5%)
   - EMI/闪电瞬态尖峰被截断
   - 真实车辆缓慢频率漂移不受影响

3. 进入确认 (ENTRY_CONFIRM=3)
   - 连续 3 次 CAPVD_fast 低于阈值才判有车
   - 单次干扰无法通过 → 误触发率大幅降低

进入响应 ~530ms (比原 550ms 还快), 基线稳定性不变
2026-06-26 16:05:00 +08:00
wangfq
2f6cb54847 fix: 时序参数修正 — OUT/PULSE_DELAY 均为500ms
- OUT_DELAY: 1.9s→500ms (10 tick), SW_4=ON时生效, OFF时为0
- PULSE_DELAY: 950ms→500ms (10 tick), 固定不变
- 删除 OUT_DELAY_FAST/PULSE_DELAY_FAST, 仅保留一组值
- SW_4 语义: 0=无离开延时, 1=500ms离开延时
- 同步更新产品手册、技术规格书、README、devlog
2026-06-24 09:13:46 +08:00
wangfq
034a82f024 fix: SW4 快速模式 — 离开和脉冲延时均缩短为500ms
- TaskLoop.h: 新增 OUT_DELAY_FAST=10, PULSE_DELAY_FAST=10
- TaskLoop.h: SET_DLY 注释从"延时"改为"快速模式"
- TaskLoop.c: FLAG_OUT 不再跳过延时,改为 OUT_DELAY_FAST 计数
- TaskLoop.c: FLAG_PLUSE 改用 PULSE_DELAY_FAST 计数
- 旧行为: SET_DLY=1 时 FLAG_OUT 立即跳到 FLAG_PLUSE
- 新行为: SET_DLY=1 时两者均用 10 tick (500ms) 快速延迟
2026-06-24 09:07:01 +08:00
wangfq
86d09eb953 feat: USE_FLATNESS_EXIT 宏开关 — 平坦性/简单防抖可切换
- TaskLoop.h 新增 #define USE_FLATNESS_EXIT 1
- #if USE_FLATNESS_EXIT 包裹所有平坦性状态变量和逻辑
- #else 回退到 cnt_release>=3 简单防抖
- 置 0 即可切回传统离开判定
2026-06-23 17:24:46 +08:00
wangfq
aff6aa9a2b feat: 移植 CN200910309382 平坦性离开判定
- 进入: 保持单一阈值法 f-f_b > Δ1
- Phase 1 (g_exit_state=0): 追踪第一上升坡面 max |f'|, |f''|
- Phase 2 (g_exit_state=1): 三条件平坦性
  |f-f_b| < Δ1 (SensTable_1)  &&  |f'| < Δ2  &&  |f''| < Δ3
- Δ2 = max_slope / 8, Δ3 = max_slope_rate / 8 (动态阈值)
- 连续3次平坦确认后释放, 防大车多峰误触发
- 安全复位时重置平坦性状态
2026-06-23 16:17:19 +08:00
wangfq
69bb28cf58 fix: 上电后稳定期 — 128样本(~128ms)仅跟踪基线不检测
- 新增 g_loop_stable 标志,Origin确立后持续慢闪
- vd1_task 稳定期内只做 IIR + 基线跟踪,跳过进入检测
- 稳定期 128 样本 (~128ms) 后自动启用检测
- 绿灯慢闪延续到稳定期结束
- 安全复位时重置 g_loop_stable
2026-06-23 14:40:38 +08:00
wangfq
6dfa9ee831 fix: 黄灯逻辑 — 断开中快闪, 重连后N短闪
- 线圈断开中: 快闪 (200ms), 无论断开多少次
- 线圈重连后: 按断开次数显示 N 短闪 (1/2/3次)
- 无线圈上电后首次接线: 不计入, 黄灯灭
- 判定条件: g_disconnect_active || !g_loop_power_up_state → 快闪
2026-06-23 14:18:07 +08:00
wangfq
c4b514c547 fix: 绿灯自检闪烁改为200ms, 修正LED命名注释
- LEDA=绿灯(PA9), 自检慢闪 200ms亮/200ms灭
- 红灯(PB1)始终PWM呼吸, 不干预
- LEDB宏无实际IO, 仅命名遗留
2026-06-23 14:00:04 +08:00
wangfq
f59baac571 feat: 绿灯行为 — 自检慢闪 + 车辆存在指示
- 自检阶段 (loop1_INI_LOOP 或线圈未稳定): 绿灯慢闪 (500ms)
- 正常工作: 有车亮, 无车灭
- 绿灯统一由 TMR15 ISR poll_green_led() 驱动, 单点控制
- 移除 vd1_task 和 loop_task 中所有手动 LEDB_ON/OFF
- 移除线圈重连时的 6 次绿灯闪烁 (由黄灯故障码替代)
2026-06-23 13:55:53 +08:00
wangfq
f61e2e3cc0 refactor: 重写黄灯故障指示 — 断开次数编码闪烁
- 无线圈上电: 黄灯快闪 (200ms)
- 线圈断开 N 次: N 短闪 (80ms亮/200ms灭 × N, 1.2s间隔)
- 不计入上电前未接线的情况
- 删除旧状态机 (g_led_loop_reconnect 等 4 个变量)
- 新增 g_disconnect_count/active + g_fault_phase/tick
2026-06-23 13:47:27 +08:00
wangfq
eff59c9ba9 perf: 提高测量精度和响应速度
- TIM3 分频 DIV_4→DIV_2(中断率×2,CPU仍<3%)
- 去掉 XNSUM_FOR_ORIGIN_FACTOR (>>6),保留全部采样精度
- LPCNT = MEASUREMENT_BASE(131072)/Xn,替代 (32768<<6)/Xn
- 测量窗口 17.5ms→~1ms(快16倍)
- Origin 范围 32K→131K,灵敏度阈值自动按比例缩放
- 离开增加 cnt_release>=3 防抖,防瞬间噪声误落杆
2026-06-23 11:02:12 +08:00
wangfq
95bf13a5ef refactor: 精简检测算法,对齐 M1H/TLD-110 参考实现
- 删除二阶差分滤波(计算但从未参与判决)
- 删除 FltHistoryManager 死代码(20+ 未用字段)
- 删除 StageRangeConfig(区间约束计算后未引用)
- 删除动态窗口切换,改为 M1H 固定 100 窗口基线
- 修复 LPCNT 计算溢出 (32768/Xn<<6 改为乘除顺序)
- 进入/离开判决对齐 M1H:单次检测 + TMR15 时序防抖
- 时序状态机简化:去掉 PLUSE_IN_F/PLUSE_IN 中间层
- 拨码去抖次数对齐 M1H: 10→5
- 代码量: 1177→706 行 (-40%)
2026-06-23 08:39:48 +08:00
wangfq
1d1e7fbc19 refactor: 对齐 DLD154V4B 规格和 M1H 参考
- 灵敏度表改为 M1H 值: {216,108,36,10} / {108,72,18,9}
- 时序参数对齐: OUT_DELAY 39→38, PULSE_DELAY 10→19
- LED 宏命名对齐 154V4B: LEDA=红(PB1), LEDB=绿(PA9), LEDC=黄(PA10)
- RLY1/RLY2 引脚交换: PA6=RLY1, PA5=RLY2
2026-06-22 19:52:46 +08:00
wangfq
7b95eb1183 init: DLD154V4B 单路车检器项目 2026-06-22 18:20:37 +08:00