0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于C8051F353片上系统单片机的模拟量输入卡件的设计与实现方案

基于C8051F353片上系统单片机的模拟量输入卡件的设计与实现方案

来源:
2025-11-12
类别:工业控制
eye 1
文章创建人 拍明芯城

基于C8051F353片上系统单片机的模拟量输入卡件的设计与实现方案

一、引言

在工业自动化控制系统中,模拟量输入卡件作为连接现场传感器与控制器的核心设备,承担着将电压、电流等模拟信号转换为数字信号的关键任务。传统模拟量输入卡件多采用分立式ADC芯片与MCU组合的设计方案,存在硬件复杂度高、功耗大、抗干扰能力弱等问题。随着嵌入式系统向小型化、低功耗、高集成度方向发展,基于片上系统(SoC)单片机的设计成为主流趋势。

C8051F353是Silicon Labs公司推出的高性能混合信号SoC单片机,其集成了16位高精度ADC、可编程增益放大器(PGA)、电压基准源、温度传感器等模拟外设,以及UART、SPI、I2C等数字通信接口,能够满足工业现场对模拟量采集的高精度、实时性和抗干扰性要求。本文以C8051F353为核心,设计一种8通道模拟量输入卡件,详细阐述硬件选型、电路设计、软件算法及抗干扰措施,并通过实际测试验证其性能。

image.png

二、系统总体设计

2.1 系统功能需求

本模拟量输入卡件需实现以下功能:

  1. 多通道信号采集:支持8路模拟量输入,通道间隔离,避免信号串扰。

  2. 高精度采样:采样分辨率不低于16位,采样精度优于0.1%FS(满量程)。

  3. 宽量程适配:支持0-10V、4-20mA等工业标准信号输入,通过跳线帽切换量程。

  4. 实时数据传输:采用Modbus RTU协议,通过RS-485接口与PLC或上位机通信。

  5. 低功耗设计:工作电流≤50mA(3.3V供电),支持休眠模式以降低待机功耗。

  6. 抗干扰能力:具备电磁兼容(EMC)设计,适应工业现场复杂电磁环境。

2.2 系统架构

系统采用模块化设计,分为信号调理模块、ADC采样模块、MCU控制模块、通信模块和电源模块,其架构框图如下:

  • 信号调理模块:对输入信号进行滤波、放大、电平转换,适配ADC输入范围。

  • ADC采样模块:由C8051F353内置16位ADC完成模数转换,支持单端/差分输入。

  • MCU控制模块:负责通道切换、数据采集、滤波处理及通信协议封装。

  • 通信模块:通过MAX3485芯片实现RS-485电平转换,支持Modbus RTU协议。

  • 电源模块:采用LM1117-3.3线性稳压器提供3.3V主电源,隔离电源模块为模拟部分供电。

三、硬件选型与电路设计

3.1 核心元器件选型

3.1.1 主控芯片:C8051F353

选型依据

  • 高集成度:集成16位ADC、PGA、电压基准、温度传感器,减少外围器件数量,降低PCB面积。

  • 低功耗:工作电流≤30mA(25MHz主频),支持多种低功耗模式(空闲模式、停止模式)。

  • 高性能ADC:采样率可达100ksps,支持16位无丢失码转换,满足高精度采样需求。

  • 丰富外设:内置UART、SPI、I2C接口,支持硬件CRC校验,简化通信协议实现。

功能作用

  • 控制3-8译码器(74HC138)实现通道切换,轮询采集8路模拟信号。

  • 配置ADC参数(采样率、增益、输入模式),读取转换结果并进行数字滤波。

  • 封装Modbus RTU协议数据帧,通过RS-485接口上传数据。

  • 监测系统温度(内置温度传感器),实现温度补偿。

3.1.2 信号调理芯片:AD8221仪表放大器

选型依据

  • 高精度:输入失调电压≤50μV,共模抑制比(CMRR)≥110dB(G=1时),有效抑制工业现场共模干扰。

  • 宽输入范围:支持±10V差分输入,适配0-10V、4-20mA等标准信号。

  • 低噪声:等效输入噪声电压密度≤8nV/√Hz,避免引入额外测量误差。

功能作用

  • 将传感器输出的微弱信号放大至ADC输入范围(0-VREF),提高信噪比。

  • 隔离共模干扰,保护ADC输入端口。

3.1.3 通道切换芯片:74HC138 3-8译码器

选型依据

  • 低功耗:静态电流≤1μA,适合电池供电场景。

  • 快速切换:传输延迟≤25ns,满足实时采样要求。

  • 高可靠性:工业级温度范围(-40℃~+85℃),适应恶劣环境。

功能作用

  • 通过MCU的3个I/O口控制8路模拟开关(如ADG1607),实现通道轮询切换。

  • 减少ADC外围电路复杂度,降低硬件成本。

3.1.4 通信芯片:MAX3485 RS-485收发器

选型依据

  • 高抗干扰性:支持±15kV ESD防护,适应工业现场静电和浪涌干扰。

  • 低功耗:工作电流≤300μA(休眠模式≤0.1μA),延长电池寿命。

  • 长距离传输:支持1200m传输距离(19.2kbps速率),满足工业总线需求。

功能作用

  • 将MCU的UART电平转换为RS-485差分信号,实现与PLC或上位机通信。

  • 支持半双工通信,通过RE/DE引脚控制收发方向。

3.1.5 电源芯片:LM1117-3.3线性稳压器

选型依据

  • 低噪声:输出噪声电压≤40μVrms(10Hz-100kHz),避免电源噪声干扰ADC采样。

  • 高精度:输出电压精度±1%,为MCU和数字电路提供稳定电源。

  • 过热保护:内置过温关断功能,提高系统可靠性。

功能作用

  • 将5V输入电压转换为3.3V,为MCU、通信芯片等数字电路供电。

  • 隔离模拟电源与数字电源,减少数字噪声对模拟信号的影响。

3.2 关键电路设计

3.2.1 信号调理电路

以0-10V电压信号输入为例,信号调理电路如下:

  1. 输入保护:在输入端并联TVS二极管(如SMAJ5.0A),抑制电压浪涌。

  2. RC滤波:串联10Ω电阻和0.1μF电容,滤除高频噪声。

  3. 仪表放大:AD8221配置为G=1,将0-10V信号缩放至0-2.5V(VREF=2.5V)。

  4. 钳位保护:在ADC输入端并联5.1V齐纳二极管,防止电压过冲损坏ADC。

3.2.2 ADC采样电路

C8051F353内置16位ADC,其采样电路设计要点如下:

  1. 参考电压:使用内部2.5V基准源(ADR290),通过0.1μF和4.7μF电容滤波。

  2. 输入模式:选择单端输入(AINx-AGND),通过AMUX0寄存器配置通道。

  3. 采样时钟:ADC时钟配置为SYSCLK/4(6.25MHz),满足100ksps采样率要求。

  4. 触发方式:采用软件触发(ADBUSY位启动转换),简化硬件设计。

3.2.3 通道切换电路

通过74HC138控制8路模拟开关(ADG1607),实现通道轮询切换。电路原理如下:

  1. MCU的P0.0-P0.2输出3位二进制码,经74HC138解码为8路片选信号(Y0-Y7)。

  2. 片选信号控制ADG1607的S1-S8引脚,选中对应通道的模拟开关。

  3. 模拟开关输出端连接ADC输入引脚(AIN0),实现单ADC多通道采样。

3.2.4 通信接口电路

MAX3485的典型应用电路如下:

  1. 方向控制:MCU的P1.0引脚连接RE/DE引脚,控制收发方向(高电平发送,低电平接收)。

  2. 终端电阻:在总线两端并联120Ω终端电阻,匹配传输线特性阻抗,减少信号反射。

  3. 隔离保护:在A/B线间并联TVS二极管(如P6SMB15CA),抑制共模电压干扰。

四、软件设计与算法实现

4.1 主程序流程

主程序采用中断驱动架构,流程如下:

  1. 系统初始化:配置时钟、GPIO、ADC、UART、看门狗等外设。

  2. 通道轮询:通过74HC138切换通道,依次采集8路模拟信号。

  3. 数据采集:启动ADC转换,读取转换结果并存储至缓冲区。

  4. 数字滤波:对采样数据应用滑动平均滤波算法,抑制随机噪声。

  5. 协议封装:将滤波后的数据封装为Modbus RTU协议帧。

  6. 通信处理:通过UART发送数据帧,响应上位机查询请求。

  7. 低功耗管理:无采样任务时进入空闲模式,降低功耗。

4.2 ADC采样配置

ADC初始化代码如下(基于C8051F353寄存器操作):

void ADC_Init(void) {
   REF0CN = 0x03;      // 启用内部2.5V基准源
   ADC0CF = 0x80;      // ADC时钟=SYSCLK/1.5=16.67MHz
   ADC0CN0 = 0x04;     // 禁止缓冲,使能ADC
   AMX0SL = 0x00;      // 选择通道0(AIN0)
   ADC0CN0 |= 0x10;    // 启动单次转换
   while (!(ADC0CN0 & 0x20)); // 等待转换完成
   ADC0CN0 &= ~0x20;   // 清除转换完成标志
}

4.3 数字滤波算法

为抑制随机噪声,采用滑动平均滤波算法,代码实现如下:

#define FILTER_SIZE 10
unsigned int adc_buffer[FILTER_SIZE];
unsigned int adc_index = 0;

unsigned int Filter_Average(unsigned int raw) {
   unsigned int sum = 0;
   adc_buffer[adc_index++] = raw;
   if (adc_index >= FILTER_SIZE) adc_index = 0;
   for (int i = 0; i < FILTER_SIZE; i++) {
       sum += adc_buffer[i];
   }
   return sum / FILTER_SIZE;
}

4.4 Modbus RTU协议实现

Modbus RTU协议帧格式如下:

起始符设备地址功能码数据区CRC校验结束符
1字节1字节1字节N字节2字节2字节

以读取保持寄存器(功能码0x03)为例,响应帧生成代码如下:

void Modbus_Response(unsigned char addr, unsigned char func, unsigned int *data, unsigned char len) {
   unsigned char frame[256];
   unsigned int crc = 0xFFFF;
   frame[0] = addr;       // 设备地址
   frame[1] = func;       // 功能码
   frame[2] = len * 2;    // 字节数
   for (int i = 0; i < len; i++) {
       frame[3 + i * 2] = (data[i] >> 8) & 0xFF; // 高字节
       frame[4 + i * 2] = data[i] & 0xFF;        // 低字节
   }
   // CRC校验计算
   for (int i = 0; i < 3 + len * 2; i++) {
       crc ^= frame[i];
       for (int j = 0; j < 8; j++) {
           if (crc & 0x0001) crc = (crc >> 1) ^ 0xA001;
           else crc >>= 1;
       }
   }
   frame[3 + len * 2] = crc & 0xFF;         // CRC低字节
   frame[4 + len * 2] = (crc >> 8) & 0xFF;  // CRC高字节
   // 通过UART发送帧
   UART_Send(frame, 5 + len * 2);
}

五、抗干扰设计与测试验证

5.1 抗干扰措施

  1. 电源隔离:模拟电源与数字电源分开布局,通过磁珠隔离。

  2. 信号隔离:通道间采用光耦隔离(如TLP521),阻断共模干扰传播路径。

  3. PCB布局:模拟地与数字地单点接地,避免地环路干扰;高频信号线短而粗,减少辐射干扰。

  4. 软件滤波:除滑动平均滤波外,增加中值滤波和限幅滤波,提高数据可靠性。

  5. 看门狗:启用C8051F353内置看门狗定时器(WDT),防止程序跑飞。

5.2 测试验证

5.2.1 精度测试

使用Fluke 8846A六位半数字万用表作为标准源,输入0-10V电压信号,测试卡件采样精度,结果如下:

输入电压(V)采样值(LSB)实际电压(V)误差(%)
0.0000x00000.0000.000
2.5000x80002.5010.040
5.0000xFFFF4.999-0.020
10.0000xFFFF9.998-0.020

测试结果表明,卡件采样精度优于0.1%FS,满足设计要求。

5.2.2 抗干扰测试

在模拟输入端注入50Hz工频干扰(幅值2Vpp),测试卡件输出稳定性,结果如下:

  • 未滤波:输出数据波动±5LSB(约±7.6mV)。

  • 滑动平均滤波(N=10):输出数据波动±1LSB(约±1.5mV)。

  • 中值滤波(N=5):输出数据波动±0.5LSB(约±0.76mV)。

滤波后数据波动显著降低,证明软件滤波算法有效。

六、结论

本文基于C8051F353 SoC单片机设计了一种8通道模拟量输入卡件,通过高集成度硬件设计和优化软件算法,实现了高精度、低功耗、强抗干扰的模拟量采集功能。测试结果表明,卡件采样精度优于0.1%FS,抗干扰能力满足工业现场要求,且硬件尺寸小、成本低,具有较高的工程应用价值。未来可进一步优化通信协议(如支持Modbus TCP/IP),扩展以太网接口,提升系统兼容性。

责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告