docs(vd960Loop): variation ↔ ΔL/ΔL-L 物理对应分析 + 换算工具
- variation-analysis.md 新增 §9: CAPVD ∝ √L 推导, 精确/一阶/频域三口径公式 - 灵敏度档位 → ΔL/L 触发阈值表 (SensTable/65536 ×2, DLD154Pro 交叉验证) - 电容档无关性: 33/43/66/76nF 共用同一换算表 (variation/Origin 中 C 消掉) - tools/variation_calc.py: 正向/反推/3B LE 补码解析/灵敏度对照/交互 5 模式 - devlog 置顶 2026-08-25 条目
This commit is contained in:
@@ -4,6 +4,50 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-25 — variation ↔ ΔL/ΔL-L 物理对应分析与工具
|
||||
|
||||
### 背景
|
||||
|
||||
后台需要把上报的 `variation`(CAPVD 计数域)换算成物理电感变化量,用于标定灵敏度、分析车辆信号强度。
|
||||
|
||||
### 核心推导
|
||||
|
||||
CAPVD ∝ 周期 T = 2π√(LC),即 **CAPVD ∝ √L 而非 L**:
|
||||
|
||||
```
|
||||
variation/Origin = 1 − √(1 + ΔL/L₀) 精确
|
||||
ΔL/L₀ ≈ −2 × variation/Origin 一阶(残差 <0.2%)
|
||||
Δf/f ≈ variation/Origin 频域对应
|
||||
```
|
||||
|
||||
- 系数 2 来源于 √(1+x) ≈ 1+x/2 展开
|
||||
- 符号:车辆进入 ΔL<0 → variation 恒为正,与 V1.05 协议语义一致
|
||||
- **电容档无关性**:Origin 与 CAPVD 均 ∝ √C,variation/Origin 中 C 消掉 → 33/43/66/76nF 四档共用同一换算表,现场换档不换标定
|
||||
|
||||
### 灵敏度档位 → ΔL/L 触发阈值(SensTable {216,108,36,10})
|
||||
|
||||
| SENS | Δf/f 进入 (=SensTable/65536) | ΔL/L 进入 ≈ −2× |
|
||||
|------|------------------------------|-----------------|
|
||||
| 0 低 | 0.330% | −0.659% |
|
||||
| 1 中 | 0.165% | −0.330% |
|
||||
| 2 高 | 0.055% | −0.110% |
|
||||
| 3 最高 | 0.015% | −0.031% |
|
||||
|
||||
交叉验证:DLD154Pro 技术文档 sens_in {108,54,28,14} 标注 ΔL/L = 0.330%/0.165%/0.085%/0.043%,恰为 SensTable/65536 的 2 倍——产品线口径一致。
|
||||
|
||||
### 改动
|
||||
|
||||
| 文件 | 内容 |
|
||||
|------|------|
|
||||
| `docs/variation-analysis.md` | 新增 §9(物理链路/公式/档位表/电容无关性/示例/注意事项) |
|
||||
| `tools/variation_calc.py` | 新增换算工具:正向(freq+cap+variation+origin→L₀,ΔL,ΔL/L)、反推、3B LE 补码解析(V1.05)、灵敏度对照、交互模式 |
|
||||
|
||||
### 验证
|
||||
|
||||
工具四模式实测通过,正反算自洽(ΔL/L=0.33% ↔ variation=216 @ Origin=131072)。
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-14 — variation 上报量 2B→3B 有符号 (协议 V1.05)
|
||||
|
||||
### 背景
|
||||
|
||||
@@ -218,3 +218,112 @@ if (v & 0x800000) v |= 0xFF000000; // bit23 = 1 → 负数,符号扩展
|
||||
- 将 variation 改为上报 **斜率 / 趋势** 而非瞬时差,削掉锯齿混叠
|
||||
- ~~补 variation 饱和保护~~ → V1.05 已完成
|
||||
- **随包上报当前基线状态(跟踪 / 冻结 / 有车)**,让后台区分锯齿谷与真空闲、冻结大值与真车
|
||||
|
||||
---
|
||||
|
||||
## 9. variation ↔ ΔL / ΔL-L 物理对应(2026-08-25 补充)
|
||||
|
||||
> 配套工具:`tools/variation_calc.py`(正向/反推/3B 补码解析/灵敏度对照,纯 stdlib)
|
||||
|
||||
### 9.1 物理链路:CAPVD 正比于 √L,不是 L
|
||||
|
||||
由 `main.c` 频率转换公式反推:
|
||||
|
||||
```c
|
||||
freq = sclk_freq × input_div × LPCNT / CAPVD → CAPVD ∝ 1/freq = T(周期)
|
||||
```
|
||||
|
||||
LC 振荡器周期 `T = 2π√(LC)`,因此:
|
||||
|
||||
```
|
||||
CAPVD = A·√(LC) (A = 系统归一化常数,含时钟/分频/MEASUREMENT_BASE=131072)
|
||||
```
|
||||
|
||||
**CAPVD 与周期成正比,与 √L 成正比**——这是 variation 换算 ΔL 的关键前提(平方根关系,不是线性)。
|
||||
|
||||
### 9.2 换算公式
|
||||
|
||||
设基线电感 L₀,有车后电感 L₀+ΔL:
|
||||
|
||||
```
|
||||
Origin = A·√(L₀·C)
|
||||
CAPVD = Origin·√(1 + ΔL/L₀)
|
||||
variation = Origin − CAPVD = Origin·[1 − √(1 + ΔL/L₀)]
|
||||
```
|
||||
|
||||
| 口径 | 公式 | 适用 |
|
||||
|------|------|------|
|
||||
| **精确** | `ΔL/L₀ = (1 − variation/Origin)² − 1 = (variation/Origin)² − 2(variation/Origin)` | 大信号(如大车全覆盖) |
|
||||
| **一阶近似** | `ΔL/L₀ ≈ −2 × variation/Origin` | 检测阈值区间,残差 <0.2% |
|
||||
| 频域对应 | `Δf/f ≈ variation/Origin`(CAPVD ∝ 1/f) | 与验收标准 §3 频偏口径衔接 |
|
||||
|
||||
符号语义:车辆进入 → 涡流 → ΔL<0 → CAPVD<Origin → **variation 恒为正**,与 V1.05 协议一致;负值 = 反向漂移 / 基线污染。
|
||||
|
||||
**一阶近似的误差上界**:二阶残差 ≈ (variation/Origin)²,最低灵敏度档 0.33% 时仅 0.0011%,相对误差 <0.2%——系数 2 直接可用。
|
||||
|
||||
### 9.3 灵敏度档位 → ΔL/L 触发阈值
|
||||
|
||||
进入条件 `CAPVD < Origin − dlt_ORG`,进入瞬间 `variation ≈ dlt_ORG = Origin×SensTable/65536`,逐档对应:
|
||||
|
||||
| SENS | 进入表 | 离开表 | Δf/f 进入 (=vr) | **ΔL/L 进入 ≈ −2×vr** | ΔL/L 离开 |
|
||||
|------|--------|--------|-----------------|----------------------|-----------|
|
||||
| 0 低 | 216 | 108 | 0.3296% | **−0.659%** | −0.330% |
|
||||
| 1 中 | 108 | 72 | 0.1648% | **−0.330%** | −0.220% |
|
||||
| 2 高 | 36 | 18 | 0.0549% | **−0.110%** | −0.055% |
|
||||
| 3 最高 | 10 | 9 | 0.0153% | **−0.031%** | −0.027% |
|
||||
|
||||
> 交叉验证:DLD154Pro 技术文档 sens_in {108,54,28,14} 标注 ΔL/L = 0.330%/0.165%/0.085%/0.043%,恰为 SensTable/65536 的 2 倍——产品线已统一使用 `ΔL/L ≈ 2×SensTable/65536` 口径。
|
||||
|
||||
### 9.4 电容档位无关性(33/43/66/76nF)
|
||||
|
||||
四档电容只改绝对工作频率 f₀ = 1/(2π√(L₀C)):
|
||||
|
||||
| C 档 | 频率 @ L₀≈59μH |
|
||||
|------|----------------|
|
||||
| 33nF | ~114 kHz |
|
||||
| 43nF | ~100 kHz |
|
||||
| 66nF | ~81 kHz |
|
||||
| 76nF | ~75 kHz |
|
||||
|
||||
但 **Origin 与 CAPVD 均 ∝ √C,比值 variation/Origin 中 C 被消掉**:
|
||||
|
||||
```
|
||||
variation/Origin = 1 − √(1 + ΔL/L₀) ← 与 C 无关
|
||||
```
|
||||
|
||||
**结论:四档电容共用同一套 ΔL/L 换算表,现场换档不换标定。** 这是 LPCNT = MEASUREMENT_BASE/Xn 自适应归一化的直接收益。
|
||||
|
||||
### 9.5 绝对电感与 ΔL 完整换算
|
||||
|
||||
```
|
||||
① 绝对电感: L₀ = 1/(4π²·f₀²·C) ← f₀ 用上报频率(3B),C 用当前档位电容
|
||||
② 相对变化: ΔL/L₀ ≈ −2 × variation/Origin
|
||||
③ 绝对变化: ΔL = L₀ × ΔL/L₀
|
||||
```
|
||||
|
||||
示例(C=43nF, f₀=100kHz → L₀≈58.9μH;SENS=1 触发,variation=216, Origin=131072):
|
||||
|
||||
```
|
||||
variation/Origin = 0.1648%
|
||||
ΔL/L₀ ≈ −0.330%
|
||||
ΔL ≈ −58.9μH × 0.330% ≈ −0.194 μH
|
||||
```
|
||||
|
||||
### 9.6 使用注意事项(后台/上位机口径)
|
||||
|
||||
1. **必须归一化**:variation 是 CAPVD 计数域(~131072 量级),直接拿绝对值当 ΔL 会差 4~5 个数量级。所有换算先除 Origin。
|
||||
2. **只有有车冻结期的 variation 干净**:有车时 Origin 冻结,variation 忠实反映信号强度,此刻换算 ΔL/L 最可信;无车时 Origin 5s 阶跃 → variation 呈锯齿,锯齿峰 = 5s 漂移量,不能当车辆信号。
|
||||
3. **基线重锁识别**:冻结超时(10s 稳定)后 Origin 强制 = CAPVD,variation 突降归零——后台应识别为"基线重锁"事件,勿当车辆离开。
|
||||
4. **文档口径 2 倍陷阱**:SensTable/65536 直接读是 Δf/f(0.33%),标成 ΔL/L 是 0.66%。验收/规格文档必须注明口径(推荐统一用 ΔL/L)。
|
||||
5. **绝对 ΔL 依赖 C 档信息**:协议帧未带 C 档位,后台需按现场配置查表,或由 f₀ 与档位映射反推(f₀ 落在哪档频率区间即哪档)。
|
||||
|
||||
### 9.7 工具用法速查
|
||||
|
||||
```bash
|
||||
cd tools
|
||||
python3 variation_calc.py --freq 100 --cap 43 --variation 216 --origin 131072 # 正向
|
||||
python3 variation_calc.py --freq 100 --cap 43 --dl-rel 0.33 # 反推
|
||||
python3 variation_calc.py --parse-var F6FFFF # 3B LE 补码解析
|
||||
python3 variation_calc.py --sens-table # 四档对照
|
||||
python3 variation_calc.py --interactive # 交互
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user