4 Commits
Author SHA1 Message Date
wangfq 5f7082c0ba fix(DLD154Pro): 基线跟踪双向对称保护同步V4B V4.20 — 负variation铁块防Origin污染锁死
负偏差(dev>0,CAPVD>Origin)只冻结永不超时更新Origin, 对称窗口[-4×dlt,+4×dlt]
补drift取绝对值(与V4B/vd960Loop一致); 与DLD154V4B V4.20修复同构
2026-09-02 14:52:13 +08:00
wangfq d6a50893dd docs(DLD154Pro): 归档 2026-08-27 小程序现场评估报告分析 (coil-eval-report-20260827.md)
设备 E04E7AA1DEA4 V3.05, 评估窗口 60s:
-  归一化基数验证通过: 有车峰值 ΔL/L=4.71% = 2×12352/524288 逐位吻合 (V3.04 协议对齐生效)
-  检测/线圈/环境均正常 (2 次车辆事件, 基线漂移 ±2Hz, 窗口内 0 断开)
- ⚠ 评估端电容档识别错误: 判 76nF (DLD110S 档), 154Pro 实际 33/66nF 两档, 低频=66nF (报告自身 66.00nF 零误差实锤)
- ⚠ 无车波动 0.1% 擦边: 483 瞬态为车辆前兆, 建议无车窗口排除进入前 2~3s
- ⚠ 频率 +360 补偿评估端未减
2026-08-27 15:20:24 +08:00
wangfq 2e4e40935c fix(DLD154Pro): 电容档位勘误 — 一级调频实为 33nF/66nF (0=66nF低频, 1=33nF高频)
现场评估实锤: 检测频率 56255Hz + 电感 121.276μH → 反推 C=66.00nF 零误差,
用户确认 154Pro 仅两档 33nF/66nF。此前代码与文档标注'0=33nF, 1=0nF'为错误认知。

- peripheral_main.c: 3 处注释修正 (引脚/调频逻辑/默认接入)
- DLD154Pro硬件资源.md / product-manual.md / technical-spec.md: 6 处修正
- devlog: 置顶勘误条目 (报告 L=121.276μH 正确; 小程序电容档表需按产品 33/66nF)
2026-08-27 15:17:43 +08:00
wangfq befe99bb1a style(DLD154Pro): 同步呼吸灯光耦加速注释 (DUTY_STEP 64 → 渐亮/灭各 2 步 ~0.55s) 2026-08-27 08:57:28 +08:00
6 changed files with 132 additions and 13 deletions
@@ -54,7 +54,7 @@ uint8_t g_rs485_id = 0;
* PA8 : RLY1 存在继电器 (单刀双掷, 低电平有效)
* PB22 : LEDA 绿色指示灯 (有车亮/无车灭, 低电平有效)
* PB23 : LEDB 红色指示灯 (呼吸灯, 低电平有效)
* PA12 : FLEVEL 线圈调频 (一级, 0=33nF, 1=0nF)
* PA12 : FLEVEL 线圈调频 (一级, 0=66nF(低频), 1=33nF(高频))
* PA14 : UART0_Tx RS485发送 (700BS 协议)
* PA15 : UART0_Rx RS485接收 (700BS 协议)
* PA13 : UART0_RE RS485方向控制 (700BS 协议)
@@ -101,7 +101,7 @@ uint8_t g_rs485_id = 0;
#define BREATH_HOLD_LOW 3
/* 光耦有信号时加速参数 (周期 ~1s) */
#define BREATH_OPTO_DUTY_STEP 64 // 步长 4x → 渐亮/渐灭各 4 步 (~0.5s 周期)
#define BREATH_OPTO_DUTY_STEP 64 // 步长 8x → 渐亮/渐灭各 2 步 (~0.55s 周期, 光耦有信号加速)
#define BREATH_OPTO_HOLD_TICKS 1 // 保持 50ms
/* 看门狗超时: Fsys=60MHz, WDOG_CLK=Fsys/131072≈458Hz, 0xFF≈558ms */
@@ -360,7 +360,7 @@ void para_store_init(void)
g_freq_level = 0;
#endif
// DLD154Pro: 一级调频, 0=33nF(低频), 1=0nF(高频)
// DLD154Pro: 一级调频, 0=66nF(低频), 1=33nF(高频)
if (g_freq_level == 0) {
FLEVEL_LOW;
} else {
@@ -415,7 +415,7 @@ void gpio_uart_init(void)
/*--- 线圈调频 (PA12=FLEVEL, 一级) ---*/
GPIOA_SetBits(GPIO_Pin_12);
GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA);
FLEVEL_LOW; // 默认接入 33nF
FLEVEL_LOW; // 默认接入 66nF (低频)
/*--- 继电器 (PA8=RLY1) ---*/
GPIOA_SetBits(GPIO_Pin_8);
@@ -642,12 +642,18 @@ void vd1_task(void){
*================================================================*/
loop1_dlt_ORG = ((uint32_t)loop1_Origin * g_loop_sens_list.sens[g_freq_sens].sens_in) >> 16;
{
/* V4B V4.20 同步: 双向对称保护 — 负variation(铁块磁导率)也冻结基线
* 原单边只挡 dev>+4×dlt, 负variation会把Origin污染抬高 → 离开时假进入 → 锁死不释放
* 修复: ① 对称窗口 [-4×dlt, +4×dlt] ② 负偏差只冻结永不超时更新 */
int32_t dev = (int32_t)loop1_CAPVD - (int32_t)loop1_Origin;
if (dev < (int32_t)(loop1_dlt_ORG * 4)) {
int32_t freeze_band = (int32_t)(loop1_dlt_ORG * 4);
if (dev < freeze_band && dev > -freeze_band) {
/* 对称窗口内 → 正常基线跟踪 */
loop1_freeze_cnt = 0;
loop1_freeze_ref = 0;
update_moving_average(&loop1_ORG_SUM, &loop1_ORG_CNT, &loop1_Origin, loop1_CAPVD, WINDOW_ORIGIN);
} else {
/*--- CAPVD 异常偏高: 暂停跟踪, 冻结超时 + 稳定性双条件 ---*/
} else if (dev < 0) {
/* 正variation (疑似车) → 冻结, 保留超时兜底更新 */
if (loop1_freeze_cnt == 0) {
loop1_freeze_ref = loop1_CAPVD;
} else {
@@ -666,6 +672,15 @@ void vd1_task(void){
}
loop1_ORG_CNT = 0;
loop1_ORG_SUM = 0;
} else {
/* 负variation (CAPVD高于Origin, 特殊铁块磁导率主导) → 只冻结, 永不更新 Origin */
if (loop1_freeze_cnt == 0) {
loop1_freeze_ref = loop1_CAPVD;
}
loop1_freeze_cnt++;
if (loop1_freeze_cnt > FREEZE_TIMEOUT) loop1_freeze_cnt = FREEZE_TIMEOUT;
loop1_ORG_CNT = 0;
loop1_ORG_SUM = 0;
}
}
+1 -1
View File
@@ -34,7 +34,7 @@ DLD154Pro是一个单线圈的蓝牙车辆检测器功能说明:
| 引脚 | 标识 | 功能 | 说明 |
| --- | --- | --- | --- |
| PA12 | F1, FLEVEL\_H | 33nF | 调频电容,0=33nF1=0nF |
| PA12 | F1, FLEVEL_H | 66nF/33nF | 调频电容,0=66nF(低频)1=33nF(高频) |
### 继电器
+73
View File
@@ -0,0 +1,73 @@
# DLD154Pro 小程序现场评估报告分析(2026-08-27)
> 设备: DLD154Pro | SN: E04E7AA1DEA4 | HW 3.01 | **FW V3.05**
> 评估窗口: 2026-08-27 13:10:51 ~ 13:11:5160s
> 原始报告: 小程序导出 `DLD154Pro_Report_1787807522640.md`(本文件为技术核对归档)
---
## 1. 结论速览
| 项 | 结论 |
|---|---|
| **归一化基数(LOOP_MEASURE_BASE** | ✅ **正确使用 524288**V3.04 协议对齐生效) |
| 检测功能 | ✅ 2 次车辆事件正常触发,灵敏度阈值判定正确 |
| 线圈状态 | ✅ 已连接、稳定(基线漂移 ±2Hz)、窗口内无断开 |
| 环境评估 | ✅ 良好(2/15),无车波动基本正常 |
| **电容档识别(评估端)** | ⚠ **错误**:判 76nFDLD110S 的档),154Pro 实际两档 **33/66nF**,当前低频档=66nF |
| **实测电感** | ✅ 121.276μH 正确(66nF 低频档反推零误差) |
## 2. 关键数字溯源
### 2.1 归一化基数 ✅(本次最核心验证)
```
有车峰值 variation = 12352
ΔL/L = 2 × 12352 / 524288 = 4.7119% ← 报告 4.71% 逐位吻合
若照搬 131072DLD154V4B/vd960Loop: 2×12352/131072 = 18.85% ← 错误场景
```
- 无车最大瞬态 483 → `483/524288 = 0.0921%`(报告 0.1%
- 有车频域交叉验证:Δf/f = (5760756255)/56255 = +2.40% ≈ variation/524288 = 2.36% ✓
**结论:小程序正确读取了 0x24 偏移 8-10 的 LOOP_MEASURE_BASE=524288V3.04 协议对齐闭环。**
### 2.2 电容档 ⚠(评估端缺陷)
```
报告检测表: f=56255Hz, L=121.276μH → C = 1/(4π²×56255²×121.276e-6) = 66.00nF 零误差
报告几何表: 识别电容档 76nF(用理论 L=110.84μH 反推 C=72.2nF → 匹配档表 76nF
```
- **154Pro 固件实际**PA12 FLEVEL 一级调频,**0=66nF(低频,默认)、1=33nF(高频)**(2026-08-27 勘误确认,代码+文档 9 处已修正)
- **76nF 是 DLD110S 的档**(两级调频低频档)——评估端把 vd960Loop 四档表 {33,43,66,76} 通用到 154Pro,判定逻辑自相矛盾
- 正确判定:当前低频档 66nF → L=121.276μH 正确,电感偏差 (121.276110.84)/110.84 = 9.42% 正常 ✓
### 2.3 灵敏度验证 ✅
- 配置 SENS=2 级(协议层,内部索引 1 → sens_in=54 → ΔL/L 触发 = 2×54/65536 = 0.165%
- 实际触发 variation=464 → ΔL/L=0.177% > 阈值 ✓ 正常触发
- 两次事件峰值:第一次 ~3.95%variation 10348)、第二次 **4.71%**variation 12352)→ 轿车信号强度正常
### 2.4 线圈稳定性 ✅
- 无车基线 56256Hz vs 当前 56254Hz,漂移 ±2Hz0.004%
- 断开次数:上电累计 1 次(装线圈时)vs 评估窗口 0 次(语义正确,V3.04 双变量)
- 直流电阻实测 0.65Ω(理论 1.09Ω,±50% 内正常)
## 3. 次要发现
1. **无车波动 0.1% 擦边**:判据 `<0.1% 正常`,报告 0.1%(最大 0.08%)。溯源:最大瞬态 4830.092%)出现在 13:09:50,紧邻 13:09:53 车辆事件前 3 秒——是**车辆接近前兆**而非环境干扰。排除前兆段实际 <0.01%。**建议:无车窗口排除车辆进入前 2~3s 前兆段**
2. **频率 +360 补偿未减**0xC0 上报 `freq = 实测 + 360`dbn_ble_srv.c:477),评估端反推 L/C 前应先减 360(0.64% 系统误差,影响小)
## 4. 待办
- [ ] 小程序"识别电容档"改为**按产品型号配置档表**154Pro={33,66}nF、110S={76,…}、vd960Loop={33,43,66,76};用实测 f 减 360 后反推 C 再匹配
- [ ] 无车窗口排除车辆前兆段
- [ ] (已闭环)154Pro 代码/文档电容档勘误 9 处 → commit `2e4e409`
## 5. 相关
- 固件 V3.05 发布: `d1fde88`RS485 减配)/ `692b406`(协议 V1.8 标注)/ `befe99b`(呼吸灯注释)/ `2e4e409`(电容档勘误)
- 归一化基数对齐背景: `vehicle-detector-development` skill → `references/measure-base-cross-product-trap.md`
- 检查清单: `loop-measure-base-alignment` skillE 段 18/19 条为本次新增)
+31
View File
@@ -4,6 +4,37 @@
---
## 2026-08-27 — 电容档位勘误:一级调频实为 33nF/66nF(现场评估实锤)
### 背景
小程序现场评估报告(E04E7AA1DEA4, V3.05)检测频率 56255Hz + 电感 121.276μH → 反推 `C = 1/(4π²f²L) = 66.00nF` **零误差**;用户确认 154Pro 只有两档 **33nF / 66nF**。此前代码与文档全部标注"0=33nF(低频), 1=0nF(高频)"为**错误认知**(高频不接电容不可能振荡,当时注释就存疑)。
### 实际档位(用户确认 + 报告反推实锤)
| FLEVEL (PA12) | 电容 | 档位 | 证据 |
|---|---|---|---|
| 0 (FLEVEL_LOW) | **66nF** | **低频(默认)** | 报告 f=56255Hz, L=121.276μH → C=66.00nF 零误差 |
| 1 (FLEVEL_HIGH) | **33nF** | 高频 | 两档 33/66nF(用户确认) |
### 修正(9 处)
| 文件 | 处数 | 内容 |
|------|------|------|
| `APP/peripheral_main.c` | 3 | 引脚注释 / 调频逻辑注释 / 默认接入注释 |
| `docs/DLD154Pro硬件资源.md` | 1 | FLEVEL 行 |
| `docs/product-manual.md` | 2 | §3 频率档位说明 / §4 配置表 |
| `docs/technical-spec.md` | 3 | 架构图 / 电气参数 / 引脚表 |
### 影响
- 报告 L=121.276μH **正确**(66nF 低频档);此前按旧注释推 33nF→242μH 是错判方向
- 小程序"识别电容档"逻辑仍有缺陷:报告内部不一致(检测表隐含 66nF、几何表判 76nF——76nF 是 DLD110S 的档),**需按产品档表(33/66nF)修正,不能通用 vd960Loop 四档表 {33,43,66,76}**
- 频率上报 +360 补偿评估端未减(0.64% 系统误差,影响小)
- devlog 2026-07 历史条目"33nF"为早期认知,保留
---
## 2026-08-27 — RS485 协议省 Flash 减配(文档如实标注未实现,V3.05 固件 + 协议 V1.8
### 背景
+2 -2
View File
@@ -95,7 +95,7 @@ DLD154Pro 是一款基于 RISC-V 微控制器的**单通道环形线圈蓝牙车
| 项目 | 说明 |
|------|------|
| 频率档位 | 通过 BLE 小程序设置,IO 控制 PA12 切换 33nF 调频电容:0=接 33nF(低频),1=接(高频) |
| 频率档位 | 通过 BLE 小程序设置,IO 控制 PA12 切换调频电容:0=接 66nF(低频),1=接 33nF(高频) |
---
@@ -127,7 +127,7 @@ DLD154Pro **无物理拨码开关**,所有参数通过手机 BLE 小程序配
| 输出模式 | 0 (存在) / 1 (进入脉冲) / 2 (离开脉冲) | 0 | 继电器输出类型 |
| 离开延时 | 0 ~ 255 (×100ms) | 5 (500ms) | 车辆离开后延时释放 |
| 有限存在 | 0 (永久) 或 1~255 (×5s) | 0 | 超时后释放并复位 |
| 频率档位 | 0 (高频) / 1 (低频) | 0 | 调频电容切换 |
| 频率档位 | 0 (高频=33nF) / 1 (低频=66nF) | 0 | 调频电容切换 (PA12) |
| 融合模式 | 0 ~ 6 | 4 (仅地感) | 见 §4.6 |
| 功能码 (function_mode) | bit0: RS485 协议, bit1: 光耦功能 | 0 | 700BS/Modbus 切换 |
| RS485 协议 | 700BS / Modbus RTU | 700BS | bit0=0→700BS, bit0=1→Modbus |
+3 -3
View File
@@ -18,7 +18,7 @@
RS485 ──────────────┤ PA14 TX / PA15 RX / PA13 RE (UART0) │
│ ├── PA8 (GPIO) ──── 继电器 RLY1
BLE ────────────────┤ 2.4GHz 无线 │
│ ├── PA12 (GPIO) ──── 调频电容 (33nF)
│ ├── PA12 (GPIO) ──── 调频电容 (66nF/33nF)
└──────────────────────────────────────┘
```
@@ -52,7 +52,7 @@ Main_Circulation (无 RTOS, 裸机轮询)
| 工作温度 | -40 | — | +85 | °C | 工业级 |
| 存储温度 | -55 | — | +125 | °C | — |
| 线圈电感范围 | 50 | 200 | 1000 | μH | 超出范围可工作但精度下降 |
| 线圈频率范围 | 20 | 80 | 200 | kHz | 含 33nF 调频电容 |
| 线圈频率范围 | 20 | 80 | 200 | kHz | 含调频电容 (33/66nF) |
| 线圈 Q 值 | 5 | — | — | — | 过低导致振荡不稳定 |
| 继电器触点电压 | — | — | 250 | VAC | 单刀双掷 (SPDT) |
| 继电器触点电流 | — | — | 3 | A | — |
@@ -72,7 +72,7 @@ Main_Circulation (无 RTOS, 裸机轮询)
|------|------|------|------|------|---------|------|
| **PA9** | **LP** | **线圈频率捕获** | IN | **TMR0** | — | **核心输入,下降沿→下降沿** |
| PA8 | RLY1 | 继电器输出 | OUT | GPIO PP | 0 (释放) | 单刀双掷,低电平有效 |
| PA12 | FLEVEL | 线圈调频 | OUT | GPIO PP | L (33nF) | 0=接33nF(低频), 1=0nF(高频) |
| PA12 | FLEVEL | 线圈调频 | OUT | GPIO PP | L (66nF) | 0=接66nF(低频), 1=接33nF(高频) |
| PA14 | UART0_TX | RS485 发送 | OUT | UART0 | — | 700BS / Modbus |
| PA15 | UART0_RX | RS485 接收 | IN | UART0 | — | 700BS / Modbus |
| PA13 | UART0_RE | RS485 方向控制 | OUT | GPIO PP | RX (接收) | 高=发送, 低=接收 |