ADS122U04与PIC18F96J94高精度传感器测量方案
1. 项目背景与核心器件选型在工业测量和传感器信号采集领域将微弱的模拟信号转换为高精度数字表示一直是关键挑战。ADS122U04作为TI推出的24位精密Δ-Σ ADC集成了PGA、基准电压源和温度传感器特别适合RTD、热电偶等小信号测量场景。而PIC18F96J94作为Microchip的8位MCU具备丰富的外设接口和低功耗特性两者组合可构建高性价比的测量系统。1.1 ADS122U04关键特性解析24位分辨率理论动态范围达144dB实际有效分辨率约20位2kSPS时灵活输入配置支持4路单端或2路差分输入输入范围±2.85VAVDD5V时集成PGA增益1~128可调输入噪声低至25nV/√Hz增益128时双IDAC电流源10μA~1.5mA可编程可直接驱动RTD传感器UART接口仅需两根线通信简化隔离设计1.2 PIC18F96J94的适配优势内置硬件UART模块支持自动波特率检测5V I/O电平直接兼容ADS122U04接口64KB Flash满足复杂数据处理需求低至0.1μA的休眠电流适合电池供电场景提示在电磁环境复杂的工业现场建议使用隔离型UART收发器如ISO6720实现信号隔离此时ADS122U04的2线UART优势尤为明显。2. 硬件设计要点2.1 典型应用电路设计----------- 传感器信号 -----|AIN0 VDD|----- 3.3-5V | | IDAC1输出 ------|AIN1 AVDD|---- 模拟电源 | | 基准电压 -------|AIN2 DVDD|---- 数字电源 | | |ADS122U04 GND|---- 星型接地 | | MCU TX --------|RXD TXD|----- MCU RX | | MCU RTS -------|nRDY GPIO|----- 中断输出 -----------2.2 电源设计注意事项去耦电容布局每个电源引脚配置10μF钽电容100nF陶瓷电容电容应尽量靠近芯片引脚5mm接地策略采用分割地平面数字地与模拟地在ADC下方单点连接避免高频数字信号跨越模拟地区域基准电压选择内置2.048V基准5ppm/℃适合多数应用高精度场景可外接REF5025等低漂移基准2.3 传感器接口设计以PT100三线制接法为例IDAC1(1mA) │ ┌─┐ PT100 ───┤R ├─── AINP └─┘ │ RL (线电阻) ┌─┐ │R ├─── AINN └─┘ │ GND通过IDAC驱动可消除引线电阻影响配合PGA32时0.1℃分辨率对应约0.5LSB变化。3. 软件实现与寄存器配置3.1 初始化流程void ADS122U04_Init(void) { // 1. 复位芯片拉低nRESET或发送复位命令 UART_Send(0x06); // 发送复位命令 // 2. 配置寄存器示例20SPSPGA32连续转换模式 uint8_t config[4] { 0x01, // REG0: MUXAIN0/AIN1, PGA32 0x04, // REG1: DR20SPS, 50/60Hz抑制 0x10, // REG2: IDAC11mA, VREF内部 0x00 // REG3: 默认GPIO配置 }; UART_Send(0x43); // WREG命令(从REG0开始) UART_Send(config, 4); // 3. 启动连续转换 UART_Send(0x08); }3.2 数据读取与处理int32_t Read_ADC_Data(void) { uint8_t data[3]; if(UART_Available() 3) { UART_Read(data, 3); return (data[0]16) | (data[1]8) | data[2]; } return 0x800000; // 错误返回值 } float ConvertToVoltage(int32_t raw, float vref, uint8_t pga) { return (raw * vref) / (8388607.0 * pga); // 83886072^23-1 }3.3 关键寄存器详解寄存器位域推荐配置功能说明REG0MUX[3:0]0x01AIN0AIN1差分输入PGA[2:0]0x05PGA32 (0b101)REG1DR[3:0]0x0420SPS 滤波使能MODE[1:0]0x00连续转换模式REG2IDAC[2:0]0x04IDAC11mAVREF[1:0]0x00内部基准4. 性能优化与故障排查4.1 噪声抑制技巧数字滤波启用内置sinc3滤波器REG1[6:5]11工频抑制设置DR20SPS可同步抑制50/60Hz干扰均值滤波在MCU端实现滑动窗口滤波推荐窗口大小164.2 常见问题处理问题1读数跳变大检查电源纹波应10mVpp验证基准电压稳定性确保传感器激励电流稳定问题2UART通信失败确认波特率匹配默认115200检查nRDY引脚状态尝试发送复位命令0x06问题3线性度不佳校准PGA失调电压写入REG2[7]1检查输入信号是否超出PGA范围验证IDAC电流精度可用精密电阻测量4.3 校准流程示例void Perform_Calibration(void) { // 1. 短接AINP/AINN UART_Send(0x42); // WREG命令仅写REG2 UART_Send(0x80); // 使能校准 // 2. 等待校准完成约2ms Delay_ms(3); // 3. 保存校准结果 UART_Send(0x20); // 读取REG2 uint8_t cal_val UART_Read(); }5. 实际应用案例温度测量系统5.1 PT100测量实现float Read_PT100_Temperature(void) { int32_t raw Read_ADC_Data(); float voltage ConvertToVoltage(raw, 2.048f, 32); // PT100转换公式简化版 float R voltage / 0.001f; // IDAC1mA return (R - 100.0) / 0.385; // 0.385Ω/℃ }5.2 系统功耗管理间歇采样模式配置DR5SPS使用nRDY中断唤醒MCU采样间隔期进入休眠电流1μA动态PGA调整void AutoRange_PGA(uint8_t *pga_setting) { int32_t raw Read_ADC_Data(); if(abs(raw) 6000000) *pga_setting 1; // 降低增益 else if(abs(raw) 1000000) *pga_setting 1; // 提高增益 }5.3 数据记录实现利用PIC18F96J94的EEPROM实现离线存储#define EEPROM_ADDR 0x1000 void Log_Data(float temp) { uint16_t val (uint16_t)(temp * 10); // 0.1℃分辨率 EEPROM_Write(EEPROM_ADDR, val 8); EEPROM_Write(EEPROM_ADDR1, val 0xFF); }通过合理配置ADS122U04的PGA和采样率配合PIC18F96J94的低功耗特性本方案在-40~125℃范围内可实现±0.5℃的测量精度典型功耗低于2mA特别适合电池供电的便携式设备。实际开发中建议使用TI提供的ADS122U04EVM评估板加速原型验证其配套的Delta-Sigma ADC评估软件可直观显示噪声性能和线性度指标。