马永军,曹建宇,周东晖
(天津科技大学 人工智能学院,天津300457)
A/D 转换系统在自动控制领域中发挥着不可替代的作用。其数据采集的精度与稳定度直接影响着自动控制系统的控制性能。虽然随着A/D 转换芯片的位数不断增长,A/D 转换系统的精度也得到了大幅度的提升。但是在A/D 转换系统中,由于硬件设计、温度漂移等原因造成的偏移误差与增益误差往往被忽略。其为了得到更平滑的数据而进行的均值滤波处理往往会忽略采集数据的离散度信息,并且对于大脉冲干扰的抑制能力有限。
针对上述问题本文设计了一款基于AD7799的A/D 转换系统。系统通过获取两个高精度基准电压芯片的采样值从而计算出本系统的偏移误差与增益误差,进而校准采样数据的值。并且通过改进的移动平均滤波算法,在保留原始数据离散度信息的前提下进行限幅滤波,增强其抗干扰能力。
系统将采集的模拟量经过数据校正和数据滤波两部分处理后通过串口协议发送给用户。其中数据滤波部分通过获取两个基准电压源的采样值计算出系统的增益误差与偏移误差,之后将采集的模拟量进行校正。数据滤波部分将获取的校正数据送入改进的移动平均滤波器中获取滤波后的数据。之后将处理好的数据写入串口缓冲区等待发送至用户以供使用。系统结构如图1所示。
图1 系统结构框图Fig.1 System structure block diagram
系统硬件由电源电路、A/D 转换电路、主控制器核心电路3 部分组成。
系统电源电路分为电源供电部分和基准电压部分,电源供电部分需要为主控制器和AD7799 提供驱动能力足够、电源纹波符合要求的恒压电源[1]。基准电压部分需要为AD7799 提供具有出色的额定温漂性能和精度的基准电压。
系统使用5 V 电源作为输入电源。STM32 主控芯片和AD7799 芯片需要3.3 V 的数字电路电源。为此选用了LM1117-3.3 线性稳压芯片。该芯片能够提供800 mA 的电流驱动能力,能够支持主控制器与A/D 芯片使用[2]。为了保证输出电压的稳定性,在电源输入端使用10 μF 电容进行滤波处理,在电源输出端使用了10 μF 与100 μF 电容并联进行滤波处理。数字电源供电电路如图2所示。
图2 数字电源供电电路Fig.2 Digital power supply circuit
系统使用了3 个不同的基准电压源。其中REF3025 芯片为A/D 芯片提供2.5 V 的量化基准电压。REF3012 芯片和REF3020 芯片分别提供1.25 V和2.0 V 基准电压输入A/D 芯片的2 个通道以计算增益误差与偏移误差。3 个基准电压芯片均为REF系列芯片,其在0 ℃~70 ℃范围内的温度漂移最大值仅有50×10-6/℃,在-40 ℃~0 ℃范围内温度漂移最大值仅有75×10-6/℃。并且电流输出能力达到25 mA,能够满足系统要求。基准电压电路如图3所示。
图3 基准电压电路Fig.3 Reference voltage circuit
A/D 转换电路用于支持AD7799 芯片正常工作使用。SCLK,DIN,DOUT 和CS 作为控制信号与主控制器相连[3]。DVDD 使用3.3 V 电源供电、AVDD 使用5 V 电源供电。REF+与REF-引脚间提供2.5 V的基准电压。通道1 与通道2 分别提供1.25 V 与2.0 V 基准电压作为输入,通道3 为采样模拟量数据输入端。A/D 转换电路如图4所示。
图4 A/D 转换电路Fig.4 A/D conversion circuit
系统使用型号为STM32F103c8t6 芯片作为主控制器。其核心电路包括复位电路、下载方式选择电路、滤波电路、晶振电路4 部分组成。
复位电路使用阻容复位方式。为主控制器上电到初始化完成提供一段时间差,并且在为系统提供复位功能。系统选用SWD 下载方式,需要将BOOT0与BOOT1 引脚下拉[4]。滤波电路保证主控制器的输入电压的稳定,每一对电源输入端使用100 nF 电容进行滤波。晶振电路为主控制器提供基础时钟频率。主控制器核心电路如图5所示。
图5 主控制器核心电路Fig.5 Core circuit of main controller
A/D 转换系统误差主要有偏移误差与增益误差。其中偏移误差是指当输入信号为0 时输出信号与输入信号之间的误差;增益误差是指输入信号在量程范围内真实斜率与理想斜率之间的误差[5]。
在理想情况下,A/D 转换系统的传递函数如图6 中直线L1所示[6],其输入与输出的对应关系为
式中:Vout为输出电压 (V);Vin为输入电压(V);Vref为基准电压(V);N为A/D 芯片的位数;[]表示取整函数。
但是由于偏移误差与增益误差的影响,其传递函数如图6 中直线L2所示,其输入与输出关系为
式中:Vout为输出电压 (V);Vin为输入电压(V);Vref为基准电压(V);VOE为增益误差(V);VGE为增益误差(V);N为A/D 芯片的位数;[]表示取整函数。
因为式(2)中VOE,Vref,VGE和N均为常数,在忽略量化误差后可整理为
式中:k,b均为常数。A/D 理想传递函数与实际传递函数如图6所示。
图6 A/D 理想传递函数与实际传递函数图Fig.6 Ideal transfer function and actual transfer function diagram of A/D converter
通过两个基准电压源计算出常量k与b,之后便可通过采样值Vout校正得到实际值Vin。
传统的移动平均滤波算法将一段短时间内的采样值看做一个长度为N的队列,新一次的采样值进行入队操作并且移除队首的采样值[7]。设某一时间点时队列中的数据计为xi,则此时的采样值为
但是该方法只考虑了某一时间段内数据的均值,所以对于大脉冲干扰的滤波效果不明显[8]。改进的移动平均滤波算法引入了队列数据的离散度进行限幅,在保留了数据离散度信息的情况下,能够更有效地抑制大脉冲干扰以及高斯白噪声。
改进的移动滤波算法将根据原始数据队列的离散度进行限幅,当新测量数据超过限幅值则使用限幅最值加入限幅队列。原始数据队列用以保存离散度信息,限幅队列用于计算滤波值。限幅范围为
式中:L为限幅值(V);为原始数据均值(V);σ 为原始数据标准差(V);k为常数,表示限幅范围系数。
在理想情况下,输入数据的噪声符合正态分布。高斯白噪声部分概率分布图如图7所示。该滤波算法限制了-kσ~+kσ 以外的高斯白噪声。因为高斯白噪声关于μ 对称,在-kσ~+kσ 以内的噪声部分总和约为0。使得改进后的移动平均滤波算法对于高斯白噪声的滤波效果更好。
图7 输入数据噪声概率分布图Fig.7 Probability distribution of input data noise
传统移动平均滤波算法与改进移动平均滤波算法在实际数据为1.5 V,白噪声信噪比为25 时滤波效果对比如图8所示。其中x轴为采样点,y轴为采样电压值。曲线原始数据表示实际采样值,曲线传统滤波算法为传统移动平均滤波器的值,曲线改进滤波算法为改进后移动平均滤波器的值。由图可见,改进后的移动平均滤波器拟合的曲线更接近实际值,拟合效果更好。
图8 存在高斯白噪声时滤波效果对比Fig.8 Comparison of filtering effects in the presence of Gaussian white noise
当输入数据为带有高斯白噪声的波动数据时,因为改进后的滤波移动平均滤波算法保留了原始数据的离散度信息。限幅后数据仍能反应数据的波动。当输入数据为带有高斯白噪声的正弦信号时滤波效果对比如图9所示。可见改进后的滤波器拟合曲线的能力更强。
图9 正弦白噪声时滤波效果对比Fig.9 Comparison of filtering effects in the presence of white noise in sinusoidal input
当大脉冲干扰与高斯白噪声同时存在时,由于改进后的移动平均滤波算法根据离散度进行限幅。能够更有效地抑制大脉冲干扰。在大脉冲干扰时滤波效果对比如图10所示。可见,改进后的滤波器在大脉冲干扰时性能远优于传统的移动平均滤波器。
图10 大脉冲干扰时滤波效果对比Fig.10 Comparison of filtering effects under large pulse interference
本文提出了一种基于AD7799的数据校正与滤波方法。经过实验验证该校正方法能够有效校正偏移误差与增益误差。该滤波方法能够有效地抑制大脉冲信号干扰。该方法能够有效地提高在诸如智能汽车感知系统、智能温湿大棚等嵌入式数字信号采集场景中的采样精度,具有良好的应用前景。