1. 项目背景与核心需求
在工业自动化、医疗设备和环境监测等领域,模拟信号的精确采集与数字化处理一直是关键环节。AD7490作为一款16位高速逐次逼近型(SAR)ADC,配合PIC18F97J60这款集成以太网功能的8位微控制器,能够构建一套高性价比的模拟信号采集与传输系统。这种组合特别适合需要远程监控的中低速信号采集场景,比如生产线上的温度传感器网络、分布式环境监测节点等。
传统的数据采集系统往往面临几个痛点:模拟信号传输距离受限、抗干扰能力差、布线成本高。而采用AD7490+PIC18F97J60的方案,通过将模拟信号就地转换为数字信号并通过以太网传输,可以有效解决这些问题。AD7490的16位分辨率在大多数工业场景中已经足够,其1MSPS的采样率也能满足多数中速信号的需求,比如电机振动监测(通常需要10-50kHz采样率)、过程控制(1-10kHz)等。
2. 硬件系统架构设计
2.1 核心器件选型分析
AD7490是ADI公司推出的16位1MSPS SAR ADC,采用5V单电源供电,功耗仅12.5mW(1MSPS时)。与ΔΣ型ADC相比,SAR架构在中等精度下能提供更快的转换速度,且不需要额外的滤波等待时间。其并行接口可以直接与微控制器的I/O端口连接,简化了硬件设计。在实际选型时,我们还需要考虑:
- 输入范围:AD7490支持±VREF输入,通过配置可设置为0-VREF或±VREF/2
- 参考电压:需要外接低噪声参考源,如ADR421(2.5V)或ADR439(3V)
- 抗混叠滤波:根据奈奎斯特准则,前端需要配置截止频率≤500kHz的低通滤波器
PIC18F97J60是Microchip推出的集成10/100以太网MAC和PHY的8位MCU,具有128KB Flash和3.8KB RAM。其特点包括:
- 内置以太网协议栈,支持TCP/IP、UDP、HTTP等协议
- 80MHz工作频率,满足中等数据处理需求
- 丰富的外设接口:SPI、I2C、UART等
2.2 电路设计关键点
原理图设计时需要特别注意以下几个部分:
模拟前端电路:
Vin ──┬───[10kΩ]───┐ │ │ [100nF] [100Ω] │ │ └───┬───┐ └─── ADC_IN+ │ │ GND [10nF]这是一个简单的抗混叠滤波和信号调理电路,其中:
- 10kΩ电阻限制输入电流
- 100nF电容滤除高频噪声
- 100Ω电阻与ADC内部采样电容形成RC网络,确保采样保持阶段充分建立
电源设计:
+5V ────[LDO]─── 3.3V (数字部分) │ └───[LC滤波]─── 5V (模拟部分)建议采用双路LDO供电,数字和模拟部分独立。模拟电源需增加LC滤波(如10μH+10μF),参考电压源应远离高频数字信号线。
PCB布局要点:
- 采用星型接地,模拟地和数字地在ADC下方单点连接
- 模拟信号走线尽量短,避免平行于数字信号线
- 在ADC电源引脚就近放置0.1μF去耦电容
3. 软件实现与配置
3.1 ADC驱动开发
AD7490通过并行接口与MCU连接,基本操作时序如下:
- 置CONVST为低启动转换
- 等待BUSY信号变高(转换开始)
- BUSY变低后读取数据
示例代码片段:
#define ADC_DATA_PORT PORTD #define ADC_BUSY_PIN PORTBbits.RB0 #define ADC_CONVST_PIN PORTBbits.RB1 uint16_t read_adc7490(void) { ADC_CONVST_PIN = 0; // 启动转换 while(ADC_BUSY_PIN); // 等待转换开始 while(!ADC_BUSY_PIN); // 等待转换完成 return ADC_DATA_PORT; // 读取结果 }关键配置参数:
- 采样率:通过定时器中断触发CONVST,最高1MHz
- 输入范围:通过硬件连接选择单极性/双极性模式
- 数据对齐:16位数据可直接读取
3.2 网络通信实现
PIC18F97J60内置以太网模块,使用Microchip提供的TCP/IP协议栈:
void ETH_Init(void) { MACInit(); // 初始化MAC层 IPSet(192,168,1,100); // 设置静态IP TCPSet(5000); // 监听5000端口 } void send_adc_data(uint16_t data) { TCPWrite("ADC:", 4); // 发送数据头 TCPWrite(&data, 2); // 发送ADC值 TCPFlush(); // 立即发送 }实际应用中需要考虑:
- 数据打包协议设计(建议采用简单的二进制格式)
- 超时和重传机制
- 多客户端连接管理
4. 系统优化与性能测试
4.1 噪声抑制技巧
实测中发现的主要噪声源及解决方案:
电源噪声:
- 在ADC电源引脚增加10μF钽电容+0.1μF陶瓷电容组合
- 使用低噪声LDO如LT1763
- 测试结果:PSRR提高15dB
数字开关噪声:
- 在并行数据线上串接22Ω电阻
- 降低MCU I/O口驱动强度
- 效果:ENOB从14.2位提升到15.1位
接地回路干扰:
- 采用隔离式DC-DC为模拟部分供电
- 使用数字隔离器如ADuM1400隔离并行接口
- 测试:共模抑制比提升40dB
4.2 采样精度测试方法
使用高精度信号源产生以下测试信号:
- 直流:测量DNL和INL
- 低频正弦波:进行FFT分析
- 满幅阶跃:测试建立时间
典型测试结果:
| 测试项目 | 条件 | 结果 |
|---|---|---|
| ENOB | 100kHz输入 | 15.3位 |
| THD | 1kHz, -0.5dBFS | -92dB |
| 通道间串扰 | 相邻通道满幅输入 | -110dB |
注意:实际精度受PCB布局影响很大,建议至少做两次原型迭代。在第一版设计中,我们发现将参考电压走线过长会导致约2LSB的误差。
5. 实际应用案例
5.1 工业温度监测网络
在某化工厂的温度监测系统中,我们部署了20个基于AD7490+PIC18F97J60的采集节点,每个节点连接4路PT100温度传感器。系统架构如下:
[PT100]──[信号调理]──[AD7490] │ [PIC18F97J60]──[以太网交换机]──[监控服务器]关键参数:
- 采样率:10Hz/通道(远高于温度变化速度)
- 分辨率:0.01°C(16位ADC+软件滤波)
- 数据传输:UDP协议,每5秒打包发送一次数据
实施中发现的问题及解决:
- 初期采用TCP协议导致网络拥堵 → 改用UDP+应用层确认
- 电磁干扰导致个别节点数据异常 → 增加磁环和共模扼流圈
- 长期运行出现偶发死机 → 看门狗定时器+自动复位电路
5.2 实验室振动分析仪
用于电机振动监测的便携式设备,采用AD7490采集加速度计信号:
[IEPE加速度计]──[恒流源]──[AD7490]──[PIC18F97J60]──[WiFi模块]特殊处理:
- 抗混叠滤波:8阶巴特沃斯,截止频率25kHz
- 触发采样:利用ADC的BUSY信号触发外部中断
- 数据预处理:在MCU端进行FFT运算,仅上传频谱数据
性能指标:
- 动态范围:90dB
- 频率分辨率:1Hz(基于1秒采样)
- 电池续航:连续工作8小时
6. 进阶开发建议
对于需要更高性能的场景,可以考虑以下改进方向:
多片ADC同步采样:
- 使用AD7490的CONVST信号并联驱动多片ADC
- 通过PIC的PMP接口并行读取数据
- 应用场景:三相电流同步检测
低功耗优化:
- 利用AD7490的休眠模式(功耗降至1μA)
- 动态调整采样率(如环境监测中可夜间降低采样率)
- 实测:采用间歇工作模式可使整机功耗降低70%
边缘计算:
- 在MCU端实现简单算法(移动平均、阈值检测等)
- 示例代码:
#define WINDOW_SIZE 10 uint16_t moving_avg(uint16_t new_val) { static uint16_t buffer[WINDOW_SIZE]; static uint8_t index = 0; static uint32_t sum = 0; sum -= buffer[index]; buffer[index] = new_val; sum += new_val; index = (index + 1) % WINDOW_SIZE; return sum / WINDOW_SIZE; }安全性增强:
- 启用PIC18F97J60的AES加密引擎
- 实现简单的挑战-响应认证机制
- 防止未经授权的数据访问