diff --git a/方案B_正交IQ解调路径详解_vs_AD8302_vs_MCU.md b/方案B_正交IQ解调路径详解_vs_AD8302_vs_MCU.md new file mode 100644 index 0000000..62bc959 --- /dev/null +++ b/方案B_正交IQ解调路径详解_vs_AD8302_vs_MCU.md @@ -0,0 +1,1001 @@ +# 路径B:AD8333 正交 IQ 解调方案全解——与路径A/路径C的全维度对比 + +> **作者:** 小德 +> **分类:** 线圈车检 · DDS注入 · AD8333 · IQ解调 · 方案对比 +> **版本:** V1.0 +> **日期:** 2026-07-05 +> **关联文档:** 方案B_AD8302接口与IQ解调算法详解.md + +--- + +## 前言 + +在方案B(DDS注入 + 阻抗分析)的大框架下,从模拟前端到数字量的转换有三条具体路径: + +| 路径 | 核心器件 | 输出类型 | 原理 | +|------|---------|---------|------| +| **路径A** ✅ | AD8302 | 幅度比 G + 相位差 Φ | 两路信号幅度/相位比较 | +| **路径B** ⬅ 本文 | **AD8333** | 正交 I + Q 基带信号 | 真正正交混频 | +| **路径C** | MCU ADC + 软件 | 原始采样值 | 数字 IQ 解调 | + +本文分两大部分:**① 三路径横向对比(成本、技能、工时)** → **② 路径B完整实现方案**。 + +--- + +## 第一部分:三路径横向对比 + +### 1.1 BOM 成本对比 + +#### 核心芯片价格 + +| 器件 | 单价(¥,1kpcs) | 单价(¥,样品) | 供货 | +|------|----------------|---------------|------| +| AD8302 | 22~30 | 35~45 | 交期 8~12 周,立创/贸泽有货 | +| **AD8333** | **45~70** | **70~100** | **交期 12~16 周,需订货** | +| LTC5599 | 50~80 | 80~120 | 交期 12~20 周,偏门 | +| STM32G474(路径C仅用此) | 12~18 | 20~28 | 好买 | + +#### 外围元件成本 + +| 类型 | 路径A(AD8302) | 路径B(AD8333) | 路径C(纯MCU) | +|------|----------------|----------------|---------------| +| 运放/缓冲器 | OPA2188×1 (¥3) | OPA2188×2 (¥6) | OPA2188×1 (¥3) | +| LPF 无源元件 | R×4+C×4 (¥0.5) | R×8+C×8 (¥1) | R×2+C×2 (¥0.3) | +| 变压器/巴伦 | 1个 (¥1.5) | 2个 (¥3) + 差分转换 | 1个 (¥1.5) | +| ADC 外围 | 无需额外 | 差分/单端转换 (¥2) | 抗混叠LPF (¥0.5) | +| 去耦/保护/偏置 | 标准 (¥1) | 更多通道 (¥2) | 标准 (¥1) | +| **外围合计** | **¥6~8** | **¥14~20** | **¥6~8** | + +#### 总 BOM 成本 + +``` + 路径A (AD8302) 路径B (AD8333) 路径C (纯MCU) +芯片 ¥25~35 ¥60~90 ¥15~22(MCU本身已有) +外围 ¥6~8 ¥14~20 ¥6~8 +PCB面积 300mm² 500mm² 100mm² +───── ──────────── ──────────── ─────────── +总计 ¥31~43 ¥74~110 ¥21~30 + ⭐⭐⭐(经济) ⭐⭐(较贵) ⭐⭐⭐⭐(最省) + +注:路径C中MCU增加的算力需求可能需要升级MCU型号(如从Cortex-M0→M4), + 成本差约 ¥5~10,升级后总算 ¥26~40,与路径A接近。 +``` + +**结论:路径B的 BOM 成本是路径A的 2~3 倍,是路径C的 3~4 倍。** + +--- + +### 1.2 PCB 面积与布局复杂度 + +| 项目 | 路径A | 路径B | 路径C | +|------|-------|-------|-------| +| 核心芯片引脚 | 14-TSSOP | **32-LFCSP** | 无额外 | +| 差分信号线 | 无 | 4~6 对差分线(LO±, RF±, 可选 OUT±) | 无 | +| 所需供电轨 | 5V 单电源 | **5V + ±2.5V 双电源**(或单电源+虚拟地) | 3.3V | +| 外围器件数 | ~12 个 | ~25 个 | ~5 个 | +| **预估面积** | **300mm²** | **500~700mm²** | **100mm²** | +| 4层板需求 | 非必需 | **推荐 4 层**(差分信号 + 完整地平面) | 2 层可用 | + +**路径B的 PCB 挑战:** +- AD8333 是 32 引脚 LFCSP(5mm×5mm),引脚间距 0.5mm,需要精密焊接 +- 差分 LO 和 RF 输入需要等长走线、阻抗控制 +- 两路 I/Q 输出可能使用差分输出(AD8333 可配置),需要额外的差分-单端转换 +- 高频(~120kHz)虽然不是射频,但差分信号的对称性仍会影响解调性能 + +--- + +### 1.3 硬件设计复杂度与技能要求 + +| 维度 | 路径A | 路径B | 路径C | +|------|-------|-------|-------| +| **硬件电路** | ★★☆ 中等 | ★★★ 高 | ★☆☆ 低 | +| 差分信号设计 | 不需要 | 需要 | 不需要 | +| 阻抗匹配 | 简单(单端50Ω) | 差分阻抗匹配 | 简单 | +| 供电设计 | 简单(单电源) | 需双电源或虚拟地 | 简单 | +| 芯片焊接难度 | 容易(TSSOP) | 中等(LFCSP 0.5mm) | N/A | +| 调试工具需求 | 万用表+示波器 | 差分探头+示波器 | 万用表 | +| 硬件设计里程碑 | 2~3 周 | **4~5 周** | 1 周 | + +**路径B 额外的技能要求:** +``` +☐ 差分信号电路设计经验 +☐ 阻抗控制和传输线理论基础(即使是低频,差分对称性也重要) +☐ 掌握 AD8333 中频 IQ 解调器架构 +☐ 能看懂 IQ 调制/解调原理 +☐ 熟悉 LFCSP 封装手工焊接技巧(热风枪) +☐ 差分示波器探头(或 2 通道×2 间接法测差分) +``` + +--- + +### 1.4 软件/算法复杂度与技能要求 + +| 维度 | 路径A | 路径B | 路径C | +|------|-------|-------|-------| +| **软件算法** | ★★★ 中高 | ★★☆ 中等 | ★★★★ 高 | +| ADC 通道数 | 2(V_MAG, V_PHS) | 2~4(I, Q 或 I+, I-, Q+, Q-) | 2(v_ref, v_meas) | +| 采样率需求 | 1kHz | 1kHz(I/Q 已是基带) | **960kHz** | +| 实时性要求 | 低 | 低 | **高**(ISR 密集) | +| 数学运算 | 需要解耦矩阵计算 | 简单(I-Q 直接对应 R-X) | 数字混频需要三角函数 | +| 校准复杂度 | 中(温漂+增益/相位系数) | **高**(I/Q 不平衡+直流偏置+增益) | 低(只有幅度校准) | +| 算法开发工时 | 3~4 周 | **2~3 周** ✅ | 6~8 周 | + +**路径A 的软件难点:** 从 G/Φ 到 R/L 的解耦矩阵推导和标定,公式复杂但一次搞定后代码很简单。 + +**路径B 的软件亮点:** AD8333 直接输出 I 和 Q,**不需要**复杂的数学推导。I = Re(Z), Q = Im(Z),直观简单。但需要处理 I/Q 不平衡校准(两路增益不一致、正交相位误差)。 + +**路径C 的软件难点:** 需要精确的采样时序、高速 ADC 驱动、数字混频和滤波,占用大量 MCU 算力,实时性要求高。 + +--- + +### 1.5 总研发工时对比 + +``` +假设团队配置:1 名硬件工程师 + 1 名嵌入式软件工程师 + + 硬件 软件 调试/联调 总计 + ──── ──── ────── ──── +路径A 2~3周 3~4周 2~3周 7~10周 ✅ 最快 +路径B 4~5周 2~3周 3~4周 9~12周 +路径C 1周 6~8周 4~6周 11~15周 + + ⭐ 建议:量产产品选路径A(成熟、好买、进过产线验证) + ⭐ 极致性能选路径B(噪声最低、动态范围最大) + ⭐ 原型验证选路径C(零特殊物料、纯代码快速迭代) +``` + +--- + +### 1.6 关键性能对比 + +| 指标 | 路径A(AD8302) | 路径B(AD8333) | 路径C(纯MCU) | +|------|----------------|----------------|---------------| +| ΔR 分辨率(@1s) | 0.5~1mΩ | **0.1~0.3mΩ** ✅ | 0.3~0.5mΩ | +| ΔL 分辨率(@1s) | 0.01~0.02μH | **0.003~0.01μH** ✅ | 0.005~0.015μH | +| 温度-40°C~85°C 温漂 | ±2% | **±0.5%** ✅(差分架构共模抑制) | ±3% | +| 电源噪声抑制 | 中(单端输出) | **高**(差分架构) | 无(原始模拟) | +| 刷新率 | 1kHz | **1kHz~100kHz** | 0.2~6kHz | +| 信号带宽 | DC~1kHz | **DC~30MHz** | DC~500Hz(滤波后) | +| 动态范围 | ~60dB | **~80dB** ✅ | ~50dB | +| **综合评级** | ⭐⭐⭐ 均衡 | ⭐⭐⭐⭐ 最佳 | ⭐⭐ 够用 | + +--- + +### 1.7 量产可制造性对比 + +| 维度 | 路径A | 路径B | 路径C | +|------|-------|-------|-------| +| 芯片交期 | 8~12 周 | **12~16 周,风险较高** | N/A(已有MCU) | +| 贴片良率 | 99.5%+ | 98%~99%(LFCSP 偏位风险) | 99.9% | +| 测试标定 | 需标定 2 个系数 | **需标定 4~6 个系数** ✅(I/Q不平衡) | 几乎无需标定 | +| 温循可靠性 | 高 | 中(更多焊点+双电源) | 高 | +| 第二货源 | AD8318(兼容) | **几乎无兼容替代** ⚠️ | STM 多家可选 | + +--- + +### 1.8 一表打尽:三路径全维度对比矩阵 + +``` + ┌────────┬────────┬────────┐ + │ 路径A │ 路径B │ 路径C │ + │ AD8302 │ AD8333 │ 纯MCU │ +┌───────────────────┼────────┼────────┼────────┤ +│ BOM 成本/台 │ ¥35 │ ¥90 │ ¥28 │ +│ PCB 面积 │ 300mm² │ 600mm² │ 100mm² │ +│ 硬件复杂度 │ ★★☆ │ ★★★ │ ★☆☆ │ +│ 软件复杂度 │ ★★★ │ ★★☆ │ ★★★★ │ +│ 总研发工时 │ 8周 │ 10周 │ 13周 │ +│ ΔR 分辨率 │ 0.8mΩ │ 0.2mΩ │ 0.4mΩ │ +│ 动态范围 │ 60dB │ 80dB │ 50dB │ +│ 温漂抑制 │ ★★★ │ ★★★★ │ ★★☆ │ +│ 芯片交期风险 │ 中 │ 高 │ 无 │ +│ 第二货源 │ 有 │ 无 │ 有 │ +│ 总推荐指数 │ ★★★★ │ ★★★ │ ★★★ │ +└───────────────────┴────────┴────────┴────────┘ + +一句话推荐: + → 量产选路径A(AD8302)—— 成熟、均衡、好买 + → 性能优先 + 预算充足 选路径B(AD8333)—— 精度极限 + → 快速原型验证 选路径C(纯MCU)—— 零特殊物料 +``` + +--- + +## 第二部分:路径B(AD8333 正交 IQ 解调)完整实现方案 + +--- + +### 二、AD8333 正交 IQ 解调的原理与优势 + +#### 2.1 AD8333 核心架构 + +``` +┌──────────────────────────────────────────────┐ +│ AD8333 │ +│ │ +│ RFINP ─┬─→ I 混频器 ──→ LPF ──→ IOUTP │ +│ │ (× cos ωt) │ IOUTN │ +│ RFINN ─┘ │ │ +│ │ │ +│ LOINP ─┬─→ 90° 移相器 ─┬───┤ │ +│ LOINN ─┘ │ │ │ +│ │ │ │ +│ │ └──→ LPF ──→ QOUTP │ +│ │ (× sin ωt) QOUTN│ +│ └────────────────────────┘ +│ │ +│ 增益控制:GAIN 引脚(0.5~2V → -4.5~+19.5dB)│ +│ 功耗:典型 180mW(@5V) │ +└──────────────────────────────────────────────┘ +``` + +**核心原理:** + +AD8333 内部有两个乘法器(吉尔伯特单元),分别将 RF 输入信号与 LO 信号的 0° 和 90° 分量相乘: + +``` +I_out = LPF{ RF(t) × cos(ω₀t) } +Q_out = LPF{ RF(t) × sin(ω₀t) } +``` + +对于线圈响应信号 RF(t) = A(t) × cos(ω₀t + θ(t)): + +``` +I(t) = LPF{ A(t)cos(ω₀t+θ) × cos(ω₀t) } = ½A(t)cos(θ(t)) +Q(t) = LPF{ A(t)cos(ω₀t+θ) × sin(ω₀t) } = ½A(t)sin(θ(t)) +``` + +**I 和 Q 直接就是复数阻抗的实部和虚部!** + +#### 2.2 AD8333 vs AD8302 的根本差异 + +``` +AD8302 的输出: AD8333 的输出: + V_MAG ∝ |Z| I ∝ Re(Z) = R + V_PHS ∝ ∠Z Q ∝ Im(Z) = ωL + +从 AD8302 到 R/L 需要: 从 AD8333 到 R/L 就是 I 和 Q 本身: + G → |Z| → R = |Z|cosθ ΔR = I - I₀ + Φ → ∠Z → L = |Z|sinθ/ω ΔL = (Q - Q₀) / ω + + 无需解耦运算,零数学复杂度! +``` + +#### 2.3 AD8333 关键引脚与功能 + +``` +AD8333(32-LFCSP, 5mm×5mm) + +RF 输入(差分): + RFINP, RFINN RF 正向/反向输入引脚 + 输入阻抗:2kΩ || 2pF(差分) + 最大输入:±1.2V(差分) + +LO 输入(差分): + LOINP, LOINN LO 正向/反向输入引脚 + LO 驱动电平:-10dBm ~ +5dBm(典型 0dBm) + 内部有 90° 移相器,无需外部移相电路 + +基带输出(差分对,每通道两个引脚): + IOUTP, IOUTN I 通道差分输出 + QOUTP, QOUTN Q 通道差分输出 + 输出共模电平:约 VPOS/2 + 输出摆幅:±1.5V(差分,典型) + +其他: + GAIN 增益控制(0.5~2V → -4.5~+19.5dB) + VPOS, VNEG ±5V 供电 + VREF 参考电压输出(VPOS/2 = 2.5V,用作差分虚拟地) + ENBL 使能引脚(高电平使能) + MODE 输出模式选择(差分/单端) +``` + +--- + +### 三、路径B完整系统框图 + +``` +DDS (AD9834) +f₀ = 120kHz + │ + ├───────────────────────────┐ + │ │ + ▼ ▼ +┌──────────┐ ┌──────────┐ +│ LO 缓冲 │ │ 功放+ │ +│ 差分驱动 │ │ 变压器 │ +│ (巴伦) │ │ 1:N升压 │ +└────┬─────┘ └────┬─────┘ + │ │ + │ LO_+ │ 线圈 + │ LO_- │ (100~300μH) + │ │ + │ ▼ + │ ┌──────────┐ + │ │ 变压器 │ + │ │ N:1降压 │ + │ │ +巴伦 │ + │ └────┬─────┘ + │ │ RF_+ + │ │ RF_- + │ │ + └─────────┬───────────────┘ + │ + ▼ + ┌──────────┐ + │ AD8333 │ + │ IQ 解调 │ + └────┬─────┘ + ┌─────┴─────┐ + │ │ + IOUT± QOUT± + (差分) (差分) + │ │ + ▼ ▼ + ┌────────┐ ┌────────┐ + │ 差分→ │ │ 差分→ │ + │ 单端 │ │ 单端 │ + │ LTC6362│ │ LTC6362│ + └───┬────┘ └───┬────┘ + │ │ + I_sgl Q_sgl + │ │ + ▼ ▼ + ┌────────────────────┐ + │ LPF(二阶) │ + │ f_c = 300Hz │ + └────────┬───────────┘ + │ + ▼ + ADC1 ADC2 + STM32G474 + (12bit, 1ksps) + │ + ▼ + ┌──────────────┐ + │ MCU 软件: │ + │ → I/Q 归一化 │ + │ → ΔR = I - I₀ │ + │ → ΔL = (Q-Q₀)/ω│ + │ → 基线跟踪 │ + │ → 触发判决 │ + └──────────────┘ +``` + +--- + +### 四、硬件电路详细设计 + +#### 4.1 LO 输入驱动电路 + +AD8333 的 LO 输入需要差分信号,幅度约 0dBm(632mVpp 差分)。 + +``` +DDS 输出 (3.3Vpp 单端) + │ + ▼ +┌──────────────────────┐ +│ LO 缓冲级 │ +│ │ +│ ┌─────────┐ │ +│ │ OPA2188 │ │ +│ │ 同相放大 │ │ +│ │ Gain=1 │ │ +│ └────┬────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────┐ │ +│ │ 巴伦 │ │ +│ │ 1:1 │ │ +│ │ (低频用 │ │ +│ │ Mini-Circuits │ +│ │ T1-1T-KK81) │ +│ └────┬────┘ │ +│ │ │ +│ LO_+ ┴ LO_- │ +│ (差分输出,~1Vpp) │ +└──────────────────────┘ + +巴伦选择注意事项: + - 工作频率范围需覆盖 80~200kHz + - 低频巴伦较难找,可用自制:在环形磁芯上双线并绕 10:10 匝 + - 磁芯材料:镍锌铁氧体(如 TDK PC40 或 Fair-Rite 43 材料) + - 或使用 ADI 推荐的 ADT1-1WT+(虽然标称 0.4~500MHz,低频性能仍可接受) +``` + +**低频巴伦自制方案(推荐):** + +``` +材料:环形铁氧体磁芯(外径 10mm,镍锌材料,μr≈100) +绕线:0.2mm 漆包线,双线并绕 15 匝 + + DDS 单端输入 + │ + ┌────┴────┐ + │ │ + │ ███████ │ ← 磁芯 + │ █ 15T █ │ + │ ███████ │ + │ │ │ + └────┼────┘ + │ + LO_+ LO_- + (差分输出) + +电感量估算:AL ≈ 1.5μH/N², N=15 → L ≈ 340μH +在 120kHz 时阻抗 Z_L = 2π×120k×340μ ≈ 256Ω +可以良好传输 120kHz 信号。 +``` + +#### 4.2 RF 输入驱动电路 + +线圈响应信号同样需要转为差分,并调整电平至 AD8333 的 RF 输入范围。 + +``` +线圈 → 变压器 N:1 → 巴伦 1:1 → 单端→差分转换 → AD8333 RFIN + +更简化的方案(使用变压器直接差分输出): + +线圈回路: + DDS → 功放 → 变压器(1:N) → 线圈 → 变压器(N:1) → 电阻分压衰减 + │ + RF_+ + RF_- + │ + AD8333 + RFINP/N + +直接从变压器次级取差分信号,经电阻分压衰减至合适电平(~500mVpp 差分)。 +无需额外的巴伦,变压器天然产生差分信号。 +``` + +**电平计算:** + +``` +DDS 输出 3.3Vpp → 功放增益 2× → 6.6Vpp → 升压变压器 1:3 → 线圈激励 ~20Vpp +线圈响应(空载)→ 降压变压器 3:1 → ~6.6Vpp → 电阻分压衰减 ~12dB → ~1.6Vpp 单端 +→ 变压器差分输出 ~1.6Vpp 差分 → 略超 AD8333 最大 ±1.2V 差分 + +调整:衰减 ~16dB → ~1.0Vpp 差分 → 安全范围 ✅ +``` + +#### 4.3 I/Q 差分输出 → 单端转换 + +AD8333 的 I 和 Q 输出是差分对(IOUTP/IOUTN, QOUTP/QOUTN),需要使用差分放大器转为单端后送入 ADC。 + +``` +IOUTP ─┬─ 100Ω ──┐ + │ │ + │ ┌────┴──────┐ + │ │ LTC6362 │ + │ │ (全差分运放) │ + │ │ 配置为 │ + │ │ Gain=1 │ + │ │ 差分→单端 │ + │ └────┬──────┘ + │ │ +IOUTN ─┬─ 100Ω ──┘ + │ │ I_single_ended + GND GND + │ + ▼ + ┌──────────┐ + │ 二阶 LPF │ + │ f_c=300Hz│ + │ (抗混叠) │ + └────┬─────┘ + │ + ADC_IN (STM32 PA0) +``` + +**LTC6362 配置:** + +``` +LTC6362(全差分运放 → 单端输出) + +关键特性: + - 噪声:2.5nV/√Hz(超低) + - 带宽:45MHz + - 电源:2.8~5.25V(可直接用 3.3V) + - 封装:MSOP-8 + +电路配置(差分输入 → 单端输出): + + 差分输入:V_in_diff = IOUTP - IOUTN + 单端输出:V_out = V_in_diff × (Rf/Rg) + + 推荐 Rf = Rg = 10kΩ → Gain = 1 + + 输出共模:由 VOCM 引脚设定(接 VREF=2.5V) + 输出范围:0~3.3V(适合 MCU ADC 输入范围) + + LPF 集成: + 在 Rf 两端并联 Cf = 47nF → f_c = 1/(2π×10k×47n) ≈ 340Hz ✅ + 兼顾抗混叠和 IQ 信号带宽 +``` + +**没有 LTC6362 时的替代方案(双运放减法器):** + +``` +使用 2 颗 OPA2188 中的 1 颗做差分→单端: + + IOUTP ── R1=10k ──┬── Rf=10k ──┐ + │ │ + ├── OPA2188A│── I_sgl + │ (-) │ + IOUTN ── R2=10k ──┴── R3=10k ──┘ + │ + GND + + Gain = Rf/R1 = 1 + 输出 = IOUTP - IOUTN(单端) + + 同相端偏置至 VREF/2 = 1.25V 使输出在 0~2.5V 范围 +``` + +#### 4.4 抗混叠 LPF 设计 + +``` +二阶巴特沃斯,f_c = 300Hz(IQ 信号的最高有效频率分量 < 100Hz) + + R1=4.7k R2=4.7k + IN ──┬─/\/\/\/──┬─/\/\/\/──┬── OUT + │ │ │ + │ C1=100nF │ │ C2=47nF + │ │ │ + GND GND GND + + f_c = 1 / (2π × √(4.7k×4.7k×100n×47n)) + = 1 / (2π × √(2.21e-8 × 100e-9 × 47e-9)) + = 1 / (2π × √(1.04e-13)) + = 1 / (2π × 3.22e-7) + ≈ 494Hz ✅(足够抑制 1kHz 以上噪声) +``` + +#### 4.5 ADC 接口与采样 + +``` +I 通道:STM32G474 ADC1_IN1 (PA0) +Q 通道:STM32G474 ADC1_IN2 (PA1) + +ADC 配置: + 分辨率:12bit + 硬件过采样(OSR=16 → 16bit 有效) + 采样率:1ksps(每个通道) + 触发方式:TIM6 定时器 1ms 触发 + 数据模式:DMA 双通道循环采样 + 参考电压:VDDA=3.3V + +电平对齐: + AD8333 输出共模 ≈ VPOS/2 = 2.5V + LTC6362 输出偏置 ≈ VREF/2 = 1.25V(通过 VOCM 设定) + 最终 I_sgl 和 Q_sgl 输出范围:0.3~2.8V(适合 0~3.3V ADC) + +ADC 输入前加 100Ω + 1nF RC 低通(f_c ≈ 1.6MHz 去噪) +``` + +#### 4.6 AD8333 偏置与供电 + +``` +供电配置: + VPOS = +5V(来自 LDO,如 ADP3339) + VNEG = -5V(来自输出负压的 DC-DC 或电荷泵,如 LTC3260) + 总电流:~36mA(VPOS)+ ~20mA(VNEG) + 总功耗:~280mW + + ※ 双电源供电是路径B的显著缺点——需要负压生成电路。 + ※ 替代方案:使用虚拟地(VREF 作为信号地),但噪声性能会下降。 + +去耦: + VPOS:100nF + 10μF 陶瓷,紧贴引脚 + VNEG:100nF + 10μF 陶瓷,紧贴引脚 + VREF:100nF + 1μF 陶瓷,紧贴引脚 + +增益控制(GAIN 引脚): + 由 MCU DAC 输出 0.5~2V 控制 + 或电阻分压固定: + 空载增益:约 6dB(GAIN=0.8V) + 有车增益:自动/固定 + 推荐用 DAC 控制,实现动态增益调整 +``` + +#### 4.7 完整原理图节选(核心部分) + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ U1: AD8333 (IQ Demodulator) │ +│ │ +│ ┌─────────────┬──────┬──────────────────┐ │ +│ LO_+─┤1 LOINP 32├IOUTP─┼────────────────┐ │ │ +│ LO_-─┤2 LOINN 31├IOUTN─┼──────────────┐ │ │ │ +│ │ 30├QOUTP─┼────────────┐ │ │ │ │ +│ │ 29├QOUTN─┼──────────┐ │ │ │ │ │ +│ RF_+-┤3 RFINP │ │ │ │ │ │ │ +│ RF_--┤4 RFINN │ │ ▼ ▼ ▼ ▼ │ +│ │ │ ┌─────────────────┐ │ +│ GAIN─┤5 GAIN │ │ LTC6362 ×2 │ │ +│ │ VREF├──┤ (差分→单端) │ │ +│ ENBL─┤7 ENBL │ └──┬──────┬───────┘ │ +│ │ VPOS├──┤ │ │ │ +│ MODE─┤6 MODE │ │ │ │ │ +│ │ VNEG├──┤ │ │ │ +│ └─────────────┘ │ ▼ ▼ │ +│ │ LPF LPF │ +│ │ f_c=300Hz f_c=300Hz │ +│ │ │ │ │ +│ │ I_adc Q_adc │ +│ │ (PA0) (PA1) │ +│ └─────────────────────────────┘ +└─────────────────────────────────────────────────────────────────┘ +``` + +--- + +### 五、软件算法实现 + +#### 5.1 整体处理流程 + +``` +ADC 采样 (1kHz) → 去噪 → I/Q 归一化 → ΔR, ΔL → 基线跟踪 → 触发判决 + ↓ + I/Q 校准表查表 + (I/Q 不平衡补偿) +``` + +#### 5.2 I/Q 原始数据采集 + +```c +// ============================================================ +// I/Q 数据采集(DMA 双缓冲) +// ============================================================ +#define ADC_BUF_SIZE 64 // 每通道 64 点,双缓冲 + +volatile uint16_t adc_buf[ADC_BUF_SIZE * 2]; // DMA 目标 +volatile uint8_t buf_ready = 0; // 数据就绪标志 + +// DMA 半满/全满中断回调 +void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc) { + buf_ready = 1; // 半满中断 → 可处理前 64 点 +} +void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { + buf_ready = 2; // 全满 → 可处理后 64 点 +} + +// 主循环中轮询 +void Process_AD8333_Data(void) { + if (buf_ready == 0) return; + + uint16_t offset = (buf_ready == 1) ? 0 : ADC_BUF_SIZE; + buf_ready = 0; + + // 从 DMA 缓冲区提取 I 和 Q 值 + // ADC 通道顺序:偶数索引 = I,奇数索引 = Q + for (int i = 0; i < ADC_BUF_SIZE/2; i++) { + raw_I += adc_buf[offset + i*2]; + raw_Q += adc_buf[offset + i*2 + 1]; + count++; + } + + if (count >= 64) { // 每 64ms 输出一次平均值(约 15.6Hz 刷新率) + float I_avg = (raw_I / count) * 3.3f / 65536.0f; // 转为电压 + float Q_avg = (raw_Q / count) * 3.3f / 65536.0f; + raw_I = 0; raw_Q = 0; count = 0; + + Process_IQ_Sample(I_avg, Q_avg); + } +} +``` + +#### 5.3 I/Q 校准(关键步骤!) + +AD8333 存在三种非理想特性,必须在软件中补偿: + +``` +① I/Q 增益不平衡:I 和 Q 通道增益不完全一致(误差 ±0.5~2dB) +② I/Q 相位不平衡:内部 90° 移相器不精确(误差 ±1~3°) +③ 直流偏置:混频器输出存在直流偏置(影响低频频响) +``` + +**校准原理:** + +```c +// ============================================================ +// I/Q 校准参数 +// ============================================================ +typedef struct { + // 直流偏置(空载时测量) + float I_offset; // I 通道空载偏置(V) + float Q_offset; // Q 通道空载偏置(V) + + // 增益平衡(通过注入已知信号标定) + float gain_ratio; // G_Q / G_I(理想为 1.0) + + // 相位不平衡(通过已知负载标定) + float phase_error; // 正交相位误差(弧度) + + // 空载参考值(用于后续 ΔR/ΔL 计算) + float I_ref; // 空载 I 值(已校准) + float Q_ref; // 空载 Q 值(已校准) + + // 系统常数 + float omega; // 激励角频率 + float R0; // 空载线圈电阻 + float L0; // 空载线圈电感 +} IQCal_t; + +IQCal_t iq_cal; + +// ============================================================ +// 上电自校准(在确认无金属干扰时执行) +// ============================================================ +void IQ_Calibrate(IQCal_t *cal) { + float I_sum = 0, Q_sum = 0; + int N = 1000; // 采集 1000 个点(约 1 秒 @ 1kHz) + + for (int i = 0; i < N; i++) { + I_sum += Read_ADC_I(); + Q_sum += Read_ADC_Q(); + HAL_Delay(1); + } + + // 直流偏置 = 空载时平均值 + cal->I_offset = I_sum / N; + cal->Q_offset = Q_sum / N; + + // 空载参考值 = 直流偏置 + cal->I_ref = cal->I_offset; + cal->Q_ref = cal->Q_offset; + + // 增益比默认 1.0(如需高精度,通过注入已知幅度信号标定) + cal->gain_ratio = 1.0f; + + // 相位误差默认 0(如需高精度,通过已知 L 负载标定) + cal->phase_error = 0.0f; + + // 系统常数 + cal->omega = 2.0f * 3.14159265f * 120000.0f; + // R0 和 L0 从 EEPROM 校准参数读取 +} + +// ============================================================ +// I/Q 不平衡补偿 +// ============================================================ +void IQ_Compensate(IQCal_t *cal, float I_raw, float Q_raw, + float *I_out, float *Q_out) { + // Step 1: 减去直流偏置 + float I_ac = I_raw - cal->I_offset; + float Q_ac = Q_raw - cal->Q_offset; + + // Step 2: 增益补偿 + Q_ac *= cal->gain_ratio; + + // Step 3: 相位补偿(正交误差校正矩阵) + // 设真实相位误差为 θ_err + // I_corrected = I_ac + // Q_corrected = (Q_ac - I_ac × sin(θ_err)) / cos(θ_err) + if (cal->phase_error != 0.0f) { + float sin_err = sinf(cal->phase_error); + float cos_err = cosf(cal->phase_error); + *I_out = I_ac; + *Q_out = (Q_ac - I_ac * sin_err) / cos_err; + } else { + *I_out = I_ac; + *Q_out = Q_ac; + } +} +``` + +#### 5.4 从 I/Q 到 ΔR、ΔL(路径B的算法比路径A简单 10 倍) + +```c +// ============================================================ +// 核心:从校准后的 I/Q 计算 ΔR 和 ΔL +// 这是路径B的核心优势——无需路径A的解耦矩阵! +// ============================================================ + +void IQ_To_DeltaRL(IQCal_t *cal, + float I_cal, float Q_cal, // 校准后 I/Q + float *delta_R, // 输出:ΔR(Ω) + float *delta_L) // 输出:ΔL(H) +{ + // 相对于空载基线的变化量 + float dI = I_cal - cal->I_ref; + float dQ = Q_cal - cal->Q_ref; + + // ============================================================ + // 核心公式:I/Q 直接对应 R 和 ωL + // ============================================================ + // + // I ∝ Re(Z) = R ← 电阻分量 + // Q ∝ Im(Z) = ωL ← 电抗分量 + // + // 所以: + // ΔR = dI × K_scale_R (K_scale_R 通过标定得到) + // ωΔL = dQ × K_scale_L + // ΔL = dQ × K_scale_L / ω + // + // 其中 K_scale 由系统的电压→欧姆的转换因子决定 + // K = V_to_Ohm = Z0 / V0_mag + // 即先测已知负载的 I/Q 电压变化量,反推 V→Ω 比例 + // ============================================================ + + // 标定常数(初始化时计算) + // K_scale_R = R0 / (V0_mag × cos(∠Z₀)) + // K_scale_L = ωL0 / (V0_mag × sin(∠Z₀)) / ω = L0 / (V0_mag × sin(∠Z₀)) + // + // 更简单的标定方法: + // 用一个已知 ΔR 的负载(如串联 0.5Ω 电阻箱)测 dI + // 用一个已知 ΔL 的负载(如串联 1μH 电感)测 dQ + + *delta_R = dI * cal->K_R; // K_R 预标定值 + *delta_L = dQ * cal->K_L; // K_L 预标定值 +} + +// 标定函数(产线或现场执行一次) +void IQ_Calibrate_Scale(IQCal_t *cal) { + // 方法:使用标准阻抗盒,分别测 R 变化和 L 变化 + + float I_ref = Read_IQ_With_Load(R0, L0); // 空载 I + float Q_ref = Read_IQ_With_Load(R0, L0); // 空载 Q + + float dR_known = 0.5f; // Ω,串联 0.5Ω + float I_with_R = Read_IQ_With_Load(R0 + dR_known, L0); + cal->K_R = dR_known / (I_with_R - I_ref); // V → Ω + + float dL_known = 1e-6f; // H,串联 1μH + float Q_with_L = Read_IQ_With_Load(R0, L0 + dL_known); + cal->K_L = dL_known / (Q_with_L - Q_ref); // V → H + + cal->I_ref = I_ref; + cal->Q_ref = Q_ref; +} +``` + +**路径B vs 路径A 的算法对比:** + +```c +// 路径A(AD8302)—— 需要 6 步运算 + 解耦矩阵: +// V_MAG → G_dB → dG_dB → dG_lin +// V_PHS → Φ_deg → dΦ_deg → dΦ_rad +// ΔR = Z0 × (cosθ×dG_lin - sinθ×dΦ_rad) ← 需要 2 次三角函数 + 4 次乘加 +// ΔL = Z0/ω × (sinθ×dG_lin + cosθ×dΦ_rad) + +// 路径B(AD8333)—— 只需 2 步运算: +// I_cal → dI → ΔR = dI × K_R ← 1 次减法 + 1 次乘法 +// Q_cal → dQ → ΔL = dQ × K_L ← 1 次减法 + 1 次乘法 + +// 结论:路径B的算法代码量约为路径A的 1/5! +``` + +#### 5.5 剩余算法(基线跟踪、触发判决) + +基线跟踪和触发判决算法与路径A完全通用,直接复用: + +```c +// 从 方案B_AD8302接口与IQ解调算法详解.md 复用: +// - BaselineTracker_t 双基线结构 +// - TriggerEngine_t 三状态触发状态机 +// - GapDetect_t 谷底检测 +// +// 唯一差异:路径B 输入的 ΔR 和 ΔL 精度更高(约高 2~3 倍), +// 所以阈值可以设得更紧,响应更灵敏。 +``` + +具体实现直接参见《方案B_AD8302接口与IQ解调算法详解.md》的第六章和第七章,不再重复。 + +--- + +### 六、路径B性能预估验证 + +#### 6.1 理论噪声分析 + +``` +AD8333 等效输入噪声:~5.5nV/√Hz +RF 前端增益:+6dB(~2×) +LPF 带宽:300Hz +系统噪声带宽:1.57 × 300Hz ≈ 470Hz(一阶近似) + +输出噪声密度:5.5nV/√Hz × 2 × √470 ≈ 2.4μVrms + +对应 ΔR 分辨率的电压等效值: + 空载 I_ref ≈ 1.25V(VREF/2 偏置,含直流) + 信号变化:铝车架 ΔR/R₀ ≈ 3% → ΔR ≈ 0.06Ω + 对应 I 变化:~30mV + SNR = 30mV / 2.4μV = 12500 ≈ 82dB ✅ + +理论 ΔR 分辨率:0.06Ω / 12500 ≈ 5μΩ(理论极限) +实际受 1/f 噪声和电源噪声限制:~0.1~0.3mΩ ✅ +``` + +#### 6.2 路径B vs 路径A 实测预期 + +| 测试场景 | 路径A ΔR SNR | 路径B ΔR SNR | 提升 | +|---------|-------------|-------------|------| +| 空载噪声本底 | 5~10μV | 2~4μV | 2~3× | +| 铝车架 ΔR=0.06Ω | ~60dB | ~75dB | +15dB | +| 钢车架 ΔL=2μH | ~65dB | ~80dB | +15dB | +| 钢铝混合 | ~55dB | ~70dB | +15dB | +| 高温+85°C | ~45dB | ~60dB | +15dB | + +--- + +### 七、三路径选择决策树 + +``` +开始 + │ + ├── 是否需要批量量产(>1000台/年)? + │ ├── 是 → 路径A(AD8302)—— 好买、便宜、够用 ✅ + │ └── 否 → 继续 + │ + ├── 是否需要检测碳纤维+铝超跑或其它极限弱信号? + │ ├── 是 → 路径B(AD8333)—— ΔR 分辨率高出 2~5× ✅ + │ └── 否 → 继续 + │ + ├── 硬件团队是否有差分电路设计经验? + │ ├── 否 → 路径A(AD8302)—— 单端设计简单 ✅ + │ └── 是 → 继续 + │ + ├── 开发周期是否紧张(<8周)? + │ ├── 是 → 路径A(AD8302)—— 总工时 7~10 周 ✅ + │ └── 否 → 继续 + │ + ├── BOM 预算是否敏感?(目标 <¥40/台) + │ ├── 是 → 路径A(AD8302)—— ¥35/台 ✅ + │ └── 否 → 继续 + │ + ├── 是否有足够时间绕芯片交期(>16周)? + │ ├── 是 → 路径B(AD8333)—— 性能最佳 ✅ + │ └── 否 → 继续 + │ + └── 最终推荐: + ├── 原型验证 → 路径C(纯MCU,零物料依赖) + ├── 快速量产 → 路径A(AD8302) + ├── 极限性能 → 路径B(AD8333) + └── 从原型到量产的平滑过渡: + 原型阶段用路径C → 验证算法 → 硬件改为路径A/路径B + 代码架构不变,ADC 采样接口抽象化即可切换 +``` + +--- + +### 八、总结 + +#### 路径B(AD8333)的优缺点 + +**优势:** +1. ✅ **算法最简单**——I/Q 直接对应 R/ωL,零数学复杂度 +2. ✅ **噪声最低**——差分架构,共模抑制好,理论 SNR 比路径A 高 15dB +3. ✅ **动态范围最大**——80dB,覆盖从碳纤维超跑到钢制卡车的全范围 +4. ✅ **I/Q 校准一次完成,永久有效**——不随信号幅度变化 + +**劣势:** +1. ❌ **BOM 成本最高**——路径A 的 2~3 倍 +2. ❌ **芯片交期最长**——12~16 周,无第二货源 +3. ❌ **需要双电源**——需要 -5V 生成电路,增加成本和 PCB 面积 +4. ❌ **硬件设计最复杂**——差分信号 + LFCSP 焊接 + 双电源布线 +5. ❌ **PCB 面积最大**——路径A 的 2 倍 + +#### 最终建议矩阵 + +``` + ┌─────────────────────────────────────────────┐ + │ 选择合适的路径 │ + ├────────────┬──────────┬──────────┬───────────┤ + │ 条件 │ 路径A │ 路径B │ 路径C │ + │ │ AD8302 │ AD8333 │ 纯MCU │ + ├────────────┼──────────┼──────────┼───────────┤ + │ 快速上市 │ ✅ │ ❌ │ ⚠️ │ + │ 批量量产 │ ✅ │ ⚠️ │ ❌ │ + │ 极限精度 │ ⚠️ │ ✅ │ ❌ │ + │ 极低 BOM │ ⚠️ │ ❌ │ ✅ │ + │ 团队新手 │ ✅ │ ❌ │ ⚠️ │ + │ 超跑/铝多 │ ⚠️ │ ✅ │ ❌ │ + │ 双电源禁忌 │ ✅ │ ❌ │ ✅ │ + │ 芯片交期紧 │ ✅ │ ❌ │ ✅ │ + │ 快速原型 │ ⚠️ │ ❌ │ ✅ │ + └────────────┴──────────┴──────────┴───────────┘ +``` + +--- + +## 文档结束