1. AD7190采集芯片概述
AD7190是ADI公司推出的一款超低噪声、24位Σ-Δ型ADC(模数转换器),专为高精度测量应用设计。这颗芯片在我们实验室的称重系统、温度监测和工业传感器接口项目中已经服役了三年多,实测性能稳定得让人放心。
与常见的ADS1256等ADC相比,AD7190最突出的特点是其内置的可编程增益放大器(PGA)和超低噪声特性。在增益为128时,它依然能保持4.8nV/√Hz的输入噪声密度,这个指标对于微伏级信号的采集至关重要。去年我们用它做铂电阻温度测量时,无需额外放大电路就直接达到了0.01℃的分辨率。
2. 硬件设计关键要点
2.1 基准电压选择
基准电压的稳定性直接决定系统精度。我们对比测试过三种方案:
- ADR445(5V基准):温漂3ppm/℃,长期稳定性15ppm
- LM4140(2.5V基准):温漂10ppm/℃,噪声更优
- AD7190内部基准:2.5V,温漂15ppm/℃
最终在电池供电的便携设备上选择了LM4140,因其低功耗特性(60μA);而在需要最高精度的实验室设备中使用了ADR445。注意基准电压值会影响输入范围,当使用5V基准且PGA=1时,差分输入范围应为±Vref/增益,即±5V。
2.2 模拟前端设计
输入端的RC滤波器参数需要仔细计算。我们的经验公式:
- 截止频率f_c = 1/(2πRC) 应设为输出数据率的10倍
- 典型配置:R=1kΩ,C=100nF(对应f_c≈1.6kHz)
- 注意电容要选用C0G/NP0材质,普通X7R电容的压电效应会引入噪声
对于热电偶等微弱信号,建议采用如下保护措施:
- TVS二极管:SMF3.3A(钳位电压3.3V)
- 串联电阻:100Ω 1%精度金属膜电阻
- 共模滤波:在AIN(+)和AIN(-)对地各加10nF电容
3. 寄存器配置实战
3.1 工作模式设置
通过配置模式寄存器(0x01)实现不同场景优化:
c复制// 单次转换模式(低功耗)
write_register(0x01, 0x80);
// 连续转换模式(最高速)
write_register(0x01, 0x00);
// 内部零刻度校准
write_register(0x01, 0x82);
校准流程必须遵循这个顺序:
- 内部零刻度校准(MD2=1, MD1=0, MD0=0)
- 内部满刻度校准(MD2=1, MD1=0, MD0=1)
- 系统零刻度校准(MD2=1, MD1=1, MD0=0)
- 系统满刻度校准(MD2=1, MD1=1, MD0=1)
3.2 数据输出处理
读取数据时要注意双缓冲区的特性:
- 先读取状态寄存器(0x00)检查DRDY位
- 再读取24位数据寄存器(0x02-0x04)
- 数据格式为二进制补码,需转换:
python复制def ad7190_raw_to_voltage(raw, vref, gain):
if raw & 0x800000:
raw -= 0x1000000
return (raw * vref) / (0x7FFFFF * gain)
4. 噪声优化技巧
通过实测对比不同配置下的噪声性能:
| 配置组合 | RMS噪声(μV) | 有效位数(ENOB) |
|---|---|---|
| PGA=128, 4.7Hz | 0.12 | 23.5 |
| PGA=64, 10Hz | 0.18 | 23.1 |
| PGA=32, 50Hz | 0.35 | 22.4 |
降低噪声的关键措施:
- 使用独立的模拟地平面
- 基准电压引脚加10μF钽电容并联0.1μF陶瓷电容
- 在AVDD和DVDD间串接10Ω电阻
- 配置合适的斩波频率(CHOP=1时噪声降低40%)
5. 典型问题排查
5.1 数据跳动异常
我们遇到过三种典型现象:
-
周期性跳变(50Hz工频干扰):
- 解决方案:开启50Hz陷波(寄存器0x02的rej60=1)
-
随机大跳变:
- 检查电源纹波(应<10mVpp)
- 确认SPI时钟相位(CPHA=1, CPOL=1)
-
固定偏移:
- 重新运行系统校准
- 检查AINCOM引脚电压(应为中间值)
5.2 校准失效处理
当校准值异常时,建议按此流程处理:
- 复位芯片(拉低RESET引脚>10ms)
- 写入配置寄存器使能内部基准
- 等待至少500ms使基准稳定
- 重新执行校准序列
6. 进阶应用实例
在工业RTD测温项目中,我们实现了三线制接法的自动补偿:
c复制// 通道切换顺序
const uint8_t ch_seq[] = {
0x10, // CH1(AIN1+ AIN2-)
0x30, // CH3(AIN3+ AIN4-)
0x50 // CH5(检测线电阻)
};
float measure_rtd(float r_ref) {
float r1 = read_channel(0);
float r2 = read_channel(1);
float rl = read_channel(2); // 线电阻
return (r1 - rl/2) + (r2 - rl/2) - r_ref;
}
这个方案将引线电阻影响降低了90%,在100米电缆场景下仍保持0.1℃的测量精度。关键点在于:
- 采用轮流激励法消除热电势
- 测量周期要小于热时间常数
- 使用相同的PGA设置测量所有通道
