基于ADS122U04和STM32的高精度数据采集系统设计

数据采集系统ADS122U04STM32
于 2026-07-08 13:42:18 修改
·本内容遵循CC 4.0 BY-SA版权协议

1. 项目概述:高精度模拟信号采集系统设计

在工业测量、医疗设备和环境监测等领域,我们经常需要将现实世界中的连续模拟信号转换为数字信号进行处理。这次我要分享的是基于TI的ADS122U04 24位Δ-Σ ADC和STM32F415ZG微控制器的精密数据采集系统设计方案。这个组合特别适合需要高精度、低功耗和隔离通信的场景,比如压力变送器、温度测量链等工业传感器应用。

ADS122U04作为TI新一代低功耗24位ADC,具有PGA、基准电压源和内置温度传感器等丰富功能,而STM32F415ZG则提供了强大的数字处理能力和丰富的外设接口。两者通过隔离式UART通信,可以构建一个完整的隔离测量系统。我在设计这个系统时,重点解决了以下几个关键问题:

  • 如何实现优于0.01%的测量精度
  • 抑制工业环境中的共模干扰
  • 优化PCB布局以降低噪声影响
  • 校准流程的设计与实现

2. 硬件设计关键点

2.1 ADC选型与配置

ADS122U04是一款真正意义上的工业级ADC,其主要特性包括:

  • 24位无失码分辨率
  • 2kSPS采样率(50Hz工频抑制模式)
  • 可编程增益放大器(PGA:1~128倍)
  • 内置2.048V基准(±0.2%精度)
  • 低功耗:仅1.1mA(连续转换模式)

在实际电路设计中,我特别注意了以下几点配置:

基准电压选择

C
// 使用内部基准时配置寄存器
# define REFCONFIG 0x05 // 启用内部基准,VREF=2.048V

对于更高精度的应用,建议使用外部基准源。我测试过LTZ1000基准源,可以将系统精度提升一个数量级,但成本也会显著增加。

2.2 模拟前端设计

模拟前端电路对系统精度至关重要,我的设计方案包含:

  1. 输入保护电路

    • TVS二极管:SMF05C(5V钳位电压)
    • 串联电阻:100Ω 1%精度金属膜电阻
    • 低通滤波:10nF C0G电容
  2. 抗混叠滤波器: 采用二阶Sallen-Key滤波器,截止频率设置为采样率的1/10:

    TEXT
    fc = 1/(2π√(R1R2C1C2))
    取R1=R2=10kΩ, C1=C2=100nF → fc≈160Hz
  3. PGA配置建议

    • 小信号(<10mV):PGA=128
    • 中等信号(10-100mV):PGA=32
    • 大信号(>100mV):PGA=1

2.3 隔离设计实现

在工业环境中,隔离是保证系统可靠性的关键。我的方案采用ADuM5411作为隔离器件,提供:

  • 2.5kV RMS隔离电压
  • 集成隔离DC-DC转换器
  • 四通道数字隔离

特别注意隔离电源的设计:

PYTHON
# 隔离电源布局要点
1. 初级和次级地平面完全分离
2. 使用1mm以上的爬电距离
3. 跨隔离带使用0402封装的10nF电容作为旁路

3. 软件实现细节

3.1 STM32固件架构

我采用HAL库+CubeMX配置的基础框架,主要模块包括:

  • 主控制循环
  • ADC通信任务
  • 数据处理任务
  • 校准程序

关键初始化代码:

C
// UART初始化(隔离通信)
huart1.Instance = USART1;
huart1.Init.BaudRate = 9600;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart1);

3.2 数据采集流程优化

经过多次测试,我总结出最优的数据采集流程:

  1. 发送配置命令(0x06)
  2. 等待DRDY引脚变低(约22ms)
  3. 读取3字节数据
  4. CRC校验
  5. 数据转换

为提高效率,我使用DMA传输方式:

C
HAL_UART_Receive_DMA(&huart1, rx_buf, 3);

3.3 数字滤波算法

在STM32端实现二级滤波处理:

  1. 一级滤波:移动平均(窗口大小=8)
C
# define FILTER_SIZE 8
int32_t moving_avg(int32_t new_sample) {
static int32_t buffer[FILTER_SIZE];
static uint8_t index = 0;
static int32_t sum = 0;
sum -= buffer[index];
buffer[index] = new_sample;
sum += new_sample;
index = (index + 1) % FILTER_SIZE;
return sum / FILTER_SIZE;
}
  1. 二级滤波:IIR低通
C
float iir_filter(float input) {
static float prev_out = 0;
float alpha = 0.1; // 滤波系数
float output = alpha * input + (1 - alpha) * prev_out;
prev_out = output;
return output;
}

4. 校准与性能测试

4.1 校准流程设计

我开发了一套完整的四点校准方案:

  1. 零点校准(短路输入)
  2. 满量程校准(施加标称最大值)
  3. 线性度校准(25%, 50%, 75%量程点)
  4. 温度补偿校准(0°C, 25°C, 50°C)

校准数据存储在STM32的Flash中:

C
typedef struct {
float offset;
float gain;
float temp_coeff;
uint32_t crc;
} CalibrationData;

4.2 实测性能指标

经过72小时连续测试,系统达到以下性能:

  • 有效分辨率:21.5位(@10SPS)
  • INL:±3ppm
  • 噪声:0.8μV RMS(PGA=128)
  • 温漂:0.05ppm/°C(带温度补偿)

测试中发现的主要问题及解决方案:

  1. 电源噪声影响:添加LC滤波网络后改善明显
  2. 接地环路干扰:采用星型接地后消除
  3. 热电势效应:使用铜-铜连接器降低影响

5. 关键调试经验

5.1 PCB布局技巧

  1. 模拟部分布局

    • 使用独立的地平面
    • 对称布局差分走线
    • 关键信号线长度<10mm
  2. 电源去耦

    • 每电源引脚放置100nF+10μF电容
    • 高频电容(100nF)尽量靠近引脚
  3. 热管理

    • 将ADC与发热元件(如LDO)分开放置
    • 使用thermal relief焊盘

5.2 常见问题排查

问题1:读数跳变严重

  • 检查电源稳定性(纹波应<10mV)
  • 验证基准电压噪声
  • 检查输入信号是否超出PGA范围

问题2:通信失败

  • 测量隔离两侧地电位差(应<0.5V)
  • 检查UART波特率容差(9600bps时<2%)
  • 验证CRC校验算法

问题3:温漂超标

  • 检查PCB是否存在热应力
  • 验证温度传感器读数准确性
  • 重新运行温度补偿校准

6. 系统优化建议

基于实际项目经验,我总结了几点优化方向:

  1. 动态范围扩展: 采用自动量程切换技术,通过继电器切换输入分压比,可实现120dB的动态范围。

  2. 功耗优化

    • 使用间歇采样模式(1SPS时功耗可降至50μA)
    • 关闭未使用的外设时钟
  3. EMC增强

    • 添加共模扼流圈(如DLW21HN系列)
    • 在接口处安装气体放电管
  4. 软件校准: 实现基于神经网络的非线性校准,可补偿传感器固有非线性(测试显示可将线性度提高5倍)

这个项目中最让我意外的是基准电压稳定性的影响。最初使用内部基准时,系统在温度变化时的漂移达到50ppm/°C,更换为外部基准后立即改善到5ppm/°C以下。这提醒我在高精度设计中,不能过分依赖芯片的内部基准,特别是对于24位及以上的ADC系统。

ADS1248.rar
使用使STM32ADS1248完成驱动
Si5351A时钟发生器原理与STM32嵌入式驱动开发
想法臃肿
STM32F103VCT6-FMSC-SSD1963-SCH.rar
STM32F103VCT6 FMSC SSD1963 SCH
【射频工程师私藏的20个调谐放大器致命陷阱】:20年实战总结——从LC建模失准到毫米波失效的全链路避坑指南(附ADS仿真验证+VNA实测判据)
SW_孙维
hhh.rar
此报告讲述了怎样设计设计数字式工频有效值多用表,以及方案论证及实践。
ADC采样误差溯源三重奏:温度漂移(-40~85℃实测±0.8LSB)、PCB共地噪声(地弹峰值达217mV)、运放失调(低温漂IC选型清单)
SW_孙维
STM32F103精英板启动崩坏全案复盘(Loop in Reset_Handler深度破译):8大信号完整性盲区+6种BOOT引脚误配场景+4版ST-Link固件兼容性红黑榜
SW_孙维
MCU内部ADC性能瓶颈剖析:采样精度不足的根本原因及改进方案
SW_孙维
热电偶与RTD温度采集电路设计对比:冷端补偿与线性化处理的6项实战要点
SW_孙维
多通道ADC干扰终结方案:解决交叉串扰与采样延迟的5项优化策略
SW_孙维
STM32ADS122U04高精度数据采集系统设计
本文详细阐述基于STM32F410RB与ADS122U04构建的24位高精度数据采集系统,涵盖硬件设计(电源去耦、差分布线、基准配置)、软件驱动(寄存器配置、DRDY中断读取、24位数据处理)、系统校准(偏移/增益/温度补偿)及噪声抑制(电源滤波、EMI防护、带宽限制)。重点应用于工业温度测量与电池电压采集,强调ΔΣ架构优势、PGA增益配置、实时校准流程与实测性能优化。
程昱森
245
基于ADS122U04和STM32高精度数据采集系统设计
本文设计了一种基于TI ADS122U04 24位Δ-Σ ADC与STM32F407VGT6微控制器的高精度数据采集系统。重点涵盖硬件接口设计(SPI通信、电源去耦、PCB布局)、软件驱动开发(寄存器配置、DMA+SPI数据读取)、噪声抑制措施(LC滤波、EMI滤波、屏蔽电缆)及系统校准流程(零点/满量程校准)。实际应用于热电偶温度测量,实现冷端补偿与非线性查表校正,并讨论采样率、增益与噪声的权衡优化策略。
weixin_34126557
374
STM32ADS122U04高精度数据采集系统设计指南
本文围绕STM32L073RZ与TI高精度24位ΔΣ ADC ADS122U04构建低功耗、高分辨率数据采集系统,涵盖硬件信号链优化(RC/抗混叠滤波、电源噪声抑制)、软件寄存器配置与自动校准(偏移/增益/温度补偿)、数字滤波算法(移动平均/IIR/中值)、噪声抑制实践(接地/布线/时序)及低功耗管理策略,实测ENOB达21位,适用于工业、医疗与环境监测场景。
郦小号
228
STM32F417ZG与ADS122U04高精度数据采集系统设计
本文围绕STM32F417ZG微控制器与ADS122U04 24位Δ-Σ ADC构建高精度数据采集系统展开,涵盖硬件选型依据、模拟前端与PCB布局设计、SPI/DMA驱动实现、零点与满量程校准、温度补偿算法、噪声抑制(含电源优化与滤波)、采样时序控制、多通道扩展及低功耗策略。重点解决地环路干扰、通信失败、基准漂移等典型工程问题,强调系统级可靠性设计。
Cristalsil苏
241
STM32F091RC与ADS122U04高精度数据采集系统设计
本文围绕STM32F091RC与ADS122U04构建的24位高精度数据采集系统展开,涵盖硬件设计(SPI接口、PGA配置、基准选择)、软件实现(寄存器初始化、数字滤波算法)、校准方法(零点/满量程两点校准)及PCB优化(星型接地、差分走线、去耦布局)。重点突出Δ-Σ ADC的低噪声特性、STM32的DMA/SPI协同机制,以及系统级噪声抑制与温漂补偿技术。
打喷嚏的apple
248
基于STM32F207ZG与ADS122U04高精度数据采集系统设计
本文设计基于STM32F207ZG主控与ADS122U04 24位Δ-Σ ADC的高精度数据采集系统,涵盖硬件选型(突出ADS122U04超低噪声、PGA可调、工频陷波特性及STM32F207ZG高性能外设)、模拟前端设计、PCB布局规范(AGND/DGND单点连接、电源滤波、差分走线)、软件初始化与滑动平均滤波、校准流程(零点/满量程校准使非线性误差降至±0.01%FS)及噪声抑制方法(同步采样、数字陷波、RFI滤波)。
weixin_34326429
385
STM32ADS122U04高精度ADC系统设计与实现
本文详细阐述基于STM32微控制器与TI ADS122U04 24位Δ-Σ高精度ADC的精密测量系统设计,涵盖硬件选型(含PGA、基准源、低噪声电路)、SPI接口配置、寄存器初始化、数据采集流程、两点校准算法、50nV级噪声抑制(移动平均+IIR滤波)、温度补偿及PCB布局优化等关键技术,满足微伏级信号稳定采集需求。
weixin_34008805
325
STM32L021与ADS122U04高精度低功耗数据采集方案
本文介绍基于STM32L021超低功耗MCU与ADS122U04 24位Δ-Σ ADC的高精度数据采集系统设计。涵盖信号链路优化、低噪声电源与基准设计、PCB布局要点、SPI驱动开发、滑动滤波与温度补偿算法,以及实测中20位有效分辨率、150μA连续工作电流0.5μA休眠电流等关键性能指标。重点解决噪声抑制、校准流程与常见SPI/精度问题。
孤灯苦狗
318
STM32F411RE与ADS122U04高精度ADC数据采集方案
本文介绍基于STM32F411RE微控制器与TI高精度24位Δ-Σ ADC ADS122U04数据采集系统设计。涵盖硬件选型要点(如PGA增益配置、电源与PCB噪声抑制)、SPI通信初始化、寄存器配置(连续转换/20SPS/增益128)、中断驱动读取、移动平均+中值滤波算法,以及两点校准法实现与实测精度验证(25℃下8小时漂移<2μV),满足0.1℃热电偶测温需求。
weixin_34235457
290
基于STM32和ADS122U04高精度ADC系统设计与实现
本文介绍基于STM32F765ZI微控制器TI ADS122U04 24位Δ-Σ ADC的高精度模拟信号采集系统设计。涵盖硬件选型(含PGA、基准源、低噪声供电)、SPI驱动开发、数字滤波与三级校准(零点/增益/温度补偿)、PCB布局规范(星型接地、电源隔离、走线屏蔽)及实测性能(22.5位有效分辨率、0.5μV RMS噪声)。关键技术包括高精度数据采集、噪声抑制与工业传感器接口(热电偶、4-20mA)。
cunfusq0176
374
ADS122U04高精度ADC Arduino驱动深度解析
本文深度解析TI ADS122U04这款24位Δ-Σ ADC在Arduino平台上的驱动实现,涵盖器件特性(集成MUX、PGA、双恒流源、片内温度传感器)、I²C通信约束(地址配置、时序要求、电源隔离)、分层库架构与核心API(初始化、采集、高级功能)、典型应用(四线制PT100测温、热电偶冷端补偿)及系统级调试优化方法。
小馬锅
559
STM32ADS122U04构建高精度数据采集系统
本文介绍基于STM32L073RZ微控制器与TI ADS122U04 24位ΔΣ模数转换器构建高精度数据采集系统的设计与实现。涵盖硬件接口连接(UART+DRDY中断)、ADS122U04寄存器配置、同步采集策略、噪声抑制滤波(均值/中值/FIR)、两点校准与温度补偿、低功耗优化(STOP模式+单次转换)及常见问题排查。系统实测ENOB超21位,50Hz工频噪声峰峰值降至50μV以下,平均功耗<150μA@1SPS。
一生爱亚雪
260
STM32ADS122U04高精度ADC信号采集方案
本文介绍基于STM32F205RB与TI ADS122U04的24位高精度ADC信号采集系统,涵盖硬件设计(SPI连接、PCB布局、电源去耦)、固件实现(初始化、中断处理、DMA传输)及精度优化(PGA配置、软件滤波、偏移校准)。重点解决数据跳动、SPI通信失败等典型问题,并给出实测性能与BMS多通道应用实践。
科学声音
285
STM32ADS122U04实现高精度ADC信号采集方案
本文详述基于STM32 MCU与TI ADS122U04 24位Δ-Σ ADC的高精度信号采集系统设计,涵盖硬件信号链优化(仪表放大、抗混叠滤波、REF5025基准)、PCB分区与低噪声布局、ADS122U04寄存器配置与SPI驱动、STM32 DMA双缓冲实现、系统级偏移/增益/温度校准、数字陷波滤波抑制工频干扰,以及实测SNR、INL/DNL等关键指标验证方法。
weixin_34221775
510
基于STM32ADS122U04高精度信号采集系统设计
本文设计并实现了一种基于STM32F746ZG微控制器与TI ADS122U04 24位Δ-Σ ADC的高精度模拟信号采集系统。重点涵盖硬件连接(UART/DRDY接口、电源与接地设计)、软件初始化与数据采集流程、数字滤波(移动平均/中值滤波)、精度优化(PCB布局、基准选择、PGA配置)及系统校准方法。以热电偶温度测量为应用实例,验证系统达0.15μV分辨率、±0.005% FSR线性度,并分析了噪声抑制、通信可靠性与低功耗扩展等关键技术问题。
赵大忽悠
319
STM32F446RE与ADS122U04构建高精度数据采集系统
本文介绍基于STM32F446RE MCU和ADS122U04 24位Δ-Σ ADC构建高精度数据采集系统的设计与实现。重点涵盖硬件选型(含PGA、基准源、噪声抑制)、SPI接口配置(DMA、中断、时序)、模拟前端设计(RC滤波、地隔离)、软件状态机与校准算法(增益/零点校准、温度补偿),以及工业级噪声抑制与故障排查方法,实测达0.01°C分辨率与±0.1°C精度。
weixin_30603633
478