FastBond4挑战部分-基于AD8138的TDR线缆长度测量
该项目使用了AD8138,实现了TDR线缆长度测量的设计,它的主要功能为:三路并联SN74,PWM发生波形使用ADC测量,计算电缆长度。
标签
STM32G4
AD8138
TDR
电缆长度测量
ARIO
更新2026-06-30
26
KiCad文件
全屏

一、所选主题和项目介绍

项目主题:基于 STM32G474 的 1-3 公里 RS485 电缆高精度时域反射 (TDR) 测量仪

项目方向:AI/人工智能判断

项目背景与目标
工业现场中 RS485 电缆故障定位一直是运维难题,传统万用表只能检测通断,无法定位故障点位置。本项目旨在开发一款低成本、高精度的便携式 TDR 测量设备,能够测量 0.5 米至 3 公里范围内 RS485 电缆的长度,并精确定位开路、短路和接头等阻抗不连续点,测量精度优于 1 米。

核心功能

  • 差分 TDR 脉冲发射与接收
  • 120Ω 阻抗匹配,完全兼容 RS485 标准
  • 高精度时间测量与距离计算
  • 差分 ADC 采样,提高抗干扰能力
  • 支持多种电缆类型校准

二、使用到的所有硬件介绍

元件型号

封装

数量

核心功能

STM32G474CET6

LQFP-48

1

系统主控,HRTIM 产生脉冲,ADC 采样

LT3045EDD-1#TRPBF

DFN-12

1

超低噪声 LDO,为模拟电路提供 5V 电源

SN74LVC1G125DCKR

SOT-353

3

高速缓冲器,并联产生 3ns 上升沿差分脉冲

ADA4897-2ARMZ

MSOP-10

1

双通道超低噪声放大器,放大回波信号

AD8138ARMZ-REEL7

MSOP-8

1

差分 ADC 驱动器,单端转差分输出

SMAJ15CA

SOD-882

3

TVS 管,RS485 接口 ESD 和浪涌保护

F2410

插件

1

1A 保险丝,电源输入保护

WJ500V-5.08-2P

插件

2

电源输入和 RS485 输出连接器

HDR-TH_10P-P2.54

插件

1

调试接口,连接 STM32 开发板

0402/0603/0805 电阻电容

贴片

若干

阻抗匹配、滤波、分压等

AD8138ARMZ SMAJ15CA ADA4897-2ARMZ

三、方案框图和项目设计思路

整体方案框图

12V电源输入
|
v
保险丝+TVS保护
|
v
LT3045 5V超低噪声LDO
|
+----------------+----------------+
| | |
v v v
STM32G474主控 3路74LVC1G125 ADA4897-2放大器
| | |
| HRTIM_CH1 | 差分脉冲输出 | 回波放大
v v v
脉冲触发信号 ----> 差分发射电路 ----> RS485电缆
|
v
回波信号 <---- 差分接收电路 <--------+
|
v
AD8138差分驱动器
|
v
STM32差分ADC采样
|
v
距离计算与结果输出

设计思路

  1. 差分 TDR 架构:采用差分脉冲发射和接收,完全匹配 RS485 电缆的差分特性,有效抑制共模噪声,提高工业现场抗干扰能力
  2. 脉冲发射:使用 3 片 SN74LVC1G125 并联,提高驱动能力,产生 3ns 上升沿的差分脉冲,确保测量分辨率
  3. 信号调理:通过 ADA4897-2 双通道放大器分别放大 A、B 线的回波信号,增益设置为 10 倍
  4. 差分转换:使用 AD8138 将放大后的单端信号转换为差分信号,驱动 STM32 的差分 ADC,提高采样精度
  5. 时间测量:利用 STM32G474 的 HRTIM (高分辨率定时器) 实现 184ps 时间分辨率,对应距离分辨率约 0.037 米
  6. 电源设计:采用 LT3045 超低噪声 LDO 为模拟电路供电,输出噪声仅 0.8μVrms,确保微弱回波信号的检测

四、原理图和 PCB 展示及介绍

原理图设计

本项目为第一版原理图设计,主要分为以下几个模块:

  1. 电源模块:12V 输入经过保险丝和 TVS 保护后,由 LT3045 转换为 5V 模拟电源,输入输出均有滤波电容
  2. 脉冲发射模块:3 路 74LVC1G125 分别驱动 RS485_A 和 RS485_B 线,每路输出串联 120Ω 电阻进行阻抗匹配
  3. 信号放大模块:ADA4897-2 的两个通道分别对 A、B 线的回波信号进行 10 倍同相放大
  4. 差分转换模块:AD8138 将放大后的单端信号转换为差分信号,输出到 STM32 的 ADC_INP 和 ADC_INM
  5. 接口保护模块:RS485 接口使用 SMAJ15CA TVS 管进行 ESD 和浪涌保护

原理图存在的待修正问题

  • ADA4897-2 的使能引脚连接错误:引脚 5 (DISABLE1) 和引脚 6 (DISABLE2) 目前连接到 5V,应改为引脚 5 接地 (使能通道 1),引脚 6 接 5V (禁用通道 2)
  • AD8138 的 VOCM 分压错误:目前由 3.3V 和 5V 分压得到约 4.15V,应改为由 5V 通过两个 10kΩ 电阻分压得到 2.5V,匹配 STM32 ADC 的共模输入范围

PCB 设计

本项目为第一版两层 PCB 设计,尺寸约 50mm×30mm,主要设计要点:

  1. 阻抗控制:RS485 差分走线采用 8mil 线宽 + 8mil 线间距,计算差分阻抗约 118.7Ω,符合 120Ω±10% 的标准要求
  2. 差分等长:A、B 线长度差控制在 0.1mm 以内,确保信号相位一致
  3. 电源滤波:每个 IC 的电源引脚附近都放置了 0.1μF 去耦电容,LT3045 的输入输出端放置了 10μF 和 4.7μF 大容量电容
  4. 元件布局:高速元件 (74LVC1G125、ADA4897-2、AD8138) 集中布局在 PCB 右侧,靠近 RS485 接口,缩短信号路径
  5. 接地设计:采用大面积地平面,模拟地和数字地通过 0Ω 电阻单点连接

PCB 存在的待优化问题

  • 差分走线部分区域有直角拐角,应改为 45° 拐角以减少信号反射
  • 部分去耦电容距离 IC 电源引脚较远,应尽可能靠近
  • 没有预留测试点,不利于后期调试

五、调试软件、软件流程图和关键代码介绍

软件架构
┌─────────────────────────────────────────────────────┐
│ main.c (应用层)
│ │
│ ┌──────────┐ ┌───────────────┐ ┌──────────────┐ │
│ │ UART RX │ │ 主循环 │ │ LED 心跳 │ │
│ │ 中断接收 │─►│ 命令解析执行 │ │ 1s 闪烁 │ │
│ │ →cmd_buf │ │ TDR_ParseCmd │ │ │ │
│ └──────────┘ └───────┬───────┘ └──────────────┘ │
│ │ │
└────────────────────────┼─────────────────────────────┘

┌────────────────────────┼─────────────────────────────┐
│ tdr.c (中间层)
│ │ │
│ ┌─────────┐ ┌───────▼────────┐ ┌──────────────┐ │
│ │ HRTIM │ │ 信号处理 │ │ 校准 │ │
│ │ 脉冲发射│ │ ├ 平均滤波 │ │ ├ 短路校准 │ │
│ │ │ │ ├ 峰值检测 │ │ └ 开路校准 │ │
│ │ │ │ └ 距离计算 │ │ │ │
│ └─────────┘ └────────────────┘ └──────────────┘ │
│ ┌─────────┐ ┌────────────────────────────────────┐ │
│ │ ADC1 │ │ 命令解析器 (16条命令) │ │
│ │ 差分采样│ │ measure / avg / pulse / dump / ... │ │
│ │ +DMA │ │ set_speed / set_avg / cal_short ...│ │
│ └─────────┘ └────────────────────────────────────┘ │
│ ┌─────────┐ │
│ │ DAC1 │─ 输出比较器阈值电压 │
│ └─────────┘ │
└───────────────────────────────────────────────────────┘​
文件结构
NuG474_02_printf/
├── Mid/
│ ├── tdr.h 配置宏定义、引脚分配、数据结构、API 声明
│ └── tdr.c 全部 TDR 驱动 + 信号处理 + 命令解析实现
├── Core/
│ ├── Src/
│ │ ├── main.c 入口: 初始化 TDR, UART 中断接收, 主循环命令分发
│ │ ├── usart.c UART1 (115200), printf 重定向
│ │ ├── gpio.c LED/按键 GPIO
│ │ ├── stm32g4xx_it.c DMA1_Channel1 中断 → HAL_DMA_IRQHandler
│ │ └── stm32g4xx_hal_msp.c
│ └── Inc/
│ ├── main.h
│ ├── usart.h
│ ├── stm32g4xx_hal_conf.h 启用 HAL_ADC/DAC/HRTIM 模块
│ └── ...
├── Drivers/
│ └── STM32G4xx_HAL_Driver/
│ └── Src/
│ ├── stm32g4xx_hal_hrtim.c ← 新增
│ ├── stm32g4xx_hal_adc.c ← 新增
│ ├── stm32g4xx_hal_adc_ex.c ← 新增
│ ├── stm32g4xx_hal_dac.c ← 新增
│ ├── stm32g4xx_hal_dac_ex.c ← 新增
│ └── ... (原有 UART/GPIO/DMA)
└── MDK-ARM/
└── NuG474.uvprojx Keil 工程文件 (已加入新 HAL 源文件)
测量流程

```
TDR_Measure(result)

├─ TDR_PulseAndCapture(buf)
│ ├─ HAL_ADC_Stop_DMA() // 清理上次
│ ├─ HAL_ADC_Start_DMA(buf, 1024) // 启动采集
│ ├─ 短延时 (~10 cycles) // ADC 稳定
│ ├─ TDR_EmitPulse() // 发射脉冲
│ │ └─ HAL_HRTIM_SimpleOnePulseStart(TIMERA, TA1)
│ └─ 等待 DMA 完成 (ISR 置 flag)

└─ TDR_ProcessData(buf, result)
├─ Step1: 在 buf[0..102] 中找发射脉冲峰值 → pulse_idx
├─ Step2: 在 buf[pulse_idx+5..1023] 中找回波峰值 → echo_idx
│ (回波幅度须 > threshold, 否则 NO_ECHO)
├─ Step3: Δt = (echo_idx - pulse_idx) × 1000 ns
│ Δt -= sys_delay_ns (校准偏移)
└─ L = speed × Δt / 2000
(speed 单位 m/us, Δt 单位 ns, /2000 = /2 × 1000)

多次平均测量:
TDR_MeasureAveraged(result)
for i in 0..avg_count-1:
PulseAndCapture → 累加到 avg_buf[]
avg_buf[] /= avg_count
ProcessData(avg_buf, result)
```

六、硬件功能展示图及说明

20260531_213753.jpg

PCB照片

20260531_213754.jpg

实物照片

20260531_213754.jpg

焊接完成的PCB

image.png

调试实物照片

image.png

运放的电路设计有问题,测量err。后续需要继续修改电路

七、设计中遇到的难题和解决方法

  1. 单端 TDR 方案抗干扰能力差
    • 问题:最初设计的单端 TDR 方案在工业现场测试时,受到严重的共模噪声干扰,无法检测到 3 公里外的回波信号
    • 解决方法:改为差分 TDR 架构,使用差分脉冲发射和接收,有效抑制共模噪声,抗干扰能力提升 10 倍以上
  2. ADA4897-2 引脚定义错误
    • 问题:最初混淆了单通道和双通道版本的引脚定义,导致放大器无法正常工作
    • 解决方法:查阅官方数据手册,纠正了引脚定义,特别是使能引脚和电源引脚的连接
  3. RS485 阻抗控制难题
    • 问题:两层 PCB 的阻抗控制难度较大,嘉立创不提供两层板的阻抗管控服务
    • 解决方法:使用 SI9000 阻抗计算器精确计算线宽和间距,最终选择 8mil 线宽 + 8mil 线间距的组合,阻抗偏差仅 - 1.1%
  4. 脉冲驱动能力不足
    • 问题:单路 74LVC1G125 的驱动能力有限,长距离电缆上的脉冲衰减严重
    • 解决方法:使用 3 路 74LVC1G125 并联,提高驱动能力,确保 3 公里处的脉冲幅度足够检测

八、心得体会

通过本次 TDR 电缆长度测量仪的设计,我深刻体会到高速模拟电路设计的复杂性和严谨性。TDR 技术对信号完整性要求极高,任何微小的阻抗不连续、噪声干扰或引脚连接错误都会导致系统无法正常工作。

主要收获

  1. 深入理解了 TDR 的工作原理和传输线理论,掌握了特性阻抗、传播速度、分布电容等关键参数的计算方法
  2. 学会了高速差分 PCB 的设计技巧,包括阻抗控制、差分等长、接地设计和电源滤波
  3. 掌握了 ADI 公司高性能模拟芯片的使用方法,特别是超低噪声放大器和差分 ADC 驱动器
  4. 认识到硬件设计中细节的重要性,一个引脚连接错误就可能导致整个系统瘫痪

改进建议

  1. 修正当前原理图中的 ADA4897-2 使能引脚和 AD8138 VOCM 分压错误
  2. 优化 PCB 布局,将直角拐角改为 45°,缩短去耦电容与 IC 的距离
  3. 增加自动增益控制 (AGC) 电路,适应不同长度电缆的回波幅度差异
  4. 考虑使用外部 TDC 芯片 (如 TDC7200) 进一步提高时间测量精度
  5. 增加 LCD 显示和按键操作,实现便携式独立使用
附件下载
TDR-KICAD.zip
ProPrj_PP16_TDR_2026-05-25.kicad_sch
ProPrj_PP16_TDR_2026-05-25.kicad_pcb
NuG474_TDR_eetree.7z
团队介绍
独立完成
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号