1、ADC模块采样校正技术122ADC模块采样校正技术1. F2812的ADC模块TMS320F2812内部集成了ADC转换模块,该模块具有如下的功能:112位ADC核,内置了双采样保持器(S/H);2顺序采样模式或者同步采样模式;3模拟输入:0V3V;4快速转换时间运行在25MHz,ADC时钟,或12.5MSPS;516通道,多路选择输入;6自动序列化,在单一时间段内最大能提供16个自动A/D转换,每个转换可编程对16个输入通道中的任何一个进行选择。7序列发生器可按2个独立的8状态序列发生器或1个16状态序列发生器。2. ADC模块误差2.1 误差定义常用的A/D转换器主要存在:失调误差、增益误
2、差和线性误差。这里主要讨论失调误差和增益误差。理想情况下,ADC模块转换方程为y=xmi,式中x=输入计数值 =输入电压4095/3;y=输出计数值。在实际中,A/D转换模块的各种误差是不可避免的,这里定义具有增益误差和失调误差的ADC模块的转换方程为y=xmab,式中ma为实际增益,b为失调误差。通过对F2812的ADC信号采集进行多次测量后,发现ADC增益误差一般在5%以内,即0.95图1理想ADC转换与实际ADC转换2.2 影响分析在计算机测控系统中,对象数据的采集一般包含两种基本物理量:模拟量和数字量。对于数字量计算机可以直接读取,而对于模拟量只有通过转换成数字量才能被计算机所接受,因
3、此要实现对模拟量准确的采集及处理,模数转换的精度和准确率必须满足一定的要求。由于F2812的ADC具有一定增益误差的偏移误差,所以很容易造成系统的误操作。下面分析两种误差对线性电压输入及A/D转换结果的影响。F2812用户手册提供的ADC模块输入模拟电压为03 V,而实际使用中由于存在增益误差和偏移误差,其线性输入被减小。下面以y=x1.05+80为例介绍各项值的计算。当输入为0时,输出为80,由于ADC的最大输出值为4095,则由式y=x1.05+80求得输入最大电压值为2.8013。因此,交流输入电压范围为1.40071.4007,此时有效位数N=ln4015/ln2=11.971,mV/
4、计数位=2.8013/4015=0 6977,其余项计算同上。表1中的最后一行显示了ADC操作的安全参数,其有效位数减少为11.865位,mV/计数位从0.7326增加为0.7345,这将会使转换结果减少0.2%。在实际应用中,所采集的信号经常为双极型信号,因此信号在送至ADC之前需要添加转换电路,将双极型信号转化为单极型信号。典型的转换电路如图2所示。对于ADC模块,考虑到增益误差和失调误差对输入范围的影响,转换电路需要调整为如图3所示的电路。在图3中,输入增益误差的参考范围已经改变。图2理想情况下的电压转换电路图3校正后的电压转换电路对于双极性输入,其0 V输入的增益误差对应单极性输入的1
5、.4315V的增益误差,因此,原有ADC的增益误差和失调误差被增大了。例如,如果ADC的增益误差为5%,失调误差为2%,则其双极性的增益误差计算如下:双极性输入x= 0.0000 V,单极性的ADC输入电压x = 1.4315 V,其理想的转换值为ye=1.43154095/3=1954,而由ya=19541.05+80计算得实际转换值,则双极性增益误差为ya-ye=2132-1954=178(9.1%误差)。通过计算可以看出,ADC的误差大大增加,因此要使用ADC进行数据采集,就必须对ADC进行校正,提高其转换精度。通过以上分析可以看出,F2812的ADC转换精度较差的主要原因是存在增益误差
6、和失调误差,因此要提高转换精度就必须对两种误差进行补偿。3. ADC校正措施3.1硬件角度(1)硬件滤波,滤除干扰信号;(2)电路板布线时需要注意不要让ADCINxx引脚运行在靠近数字信号通路的地方,这样能使耦合到ADC输入端的数字信号开关噪声大大降低;(3)采用适当的隔离技术,将ADC模块电源引脚和数字电源隔离;(4)如果采样电路部分是经过多路开关切换的,可以在多路开关输出上接下拉电阻到地;(5)采样通道上的电容效应也可能会导致AD采样误差,因为采样通道上的等效电容可能还在保持有上一个采样数据的数值的时候,就对当前数据进行采样,会造成当前数据不准确。如果条件允许,可以在每次转化完成后现将输入
7、切换到参考地,然后在对信号进行下一次采样。2软件角度(1)多次采样取平均值算法,最为简单;(2)数字滤波算法,例如采用中值滤波法,具体方法为:连续采样20个数据,对这些数据进行排序之后,去掉最小的5个和最大的5个,然后取中间10个采样数据的平均值。(3)软件校正算法。F2812的ADC转换精度较差的主要原因是存在增益误差(Gain Error)和偏置误差(Offset Error),要提高转换精度就必须对两种误差进行补偿,下面将具体介绍这种实用的补偿方法。理想的12位ADC应该是没有增益误差和偏置误差的,因此其转换的计算公式为:Y=x*mi其中,x=input count=inputvolta
8、ge*4095/3.0VY=output countMi=ideal gain=1但是,实际上F2812的AD是存在增益误差和偏置误差的,其转换的计算公式如式2所示:Y=x*ma+mb其中,ma=actual gainB=actualoffset(与输入为0时相关)实际的和理想的转换计算曲线如图2所示:在校正的时候,首先选用ADC的任意两个通道(例如A1,A2)作为参考输入通道,并分别输入已知的直流参考电压,通过读取相应的结果寄存器获取转换值,利用两组输出值便可求得ADC模块得校正增益和校正偏置,然后利用这两个值对其他通道转换数据进行补偿。首先,计算两个通道得参考电压转换后得理想结果。在讲述算
9、法之前,我们先来看看各个参数之间的关系,如下图所示:由图可以得到各参数之间的关系如下:y = x * ma + bma = (yH yL)/(xH xL)b = yL xL*maCalGain = (xH xL)/(yH yL)CalOffset = yL * CalGain xLx = y * CalGain CalOffset给A1通道加2.5V,给A2通道加0.5V。A1input=VHigh=2.5V,则2.5*4095/3.0=3413(理想值)A2input=VLow=0.5V,则0.5*4095/3.0=683(理想值)校正C语言的算法如下:#defineHIGH_IDEAL_C
10、OUNT 3413/理想高值#defineLOW_IDEAL_COUNT 683/理想低值#define SAMPLES20/采样次数/定义所需的各个变量Uint16Avg_HighActualCount;Uint16Avg_LowActualCount;Uint16Sum_HighActualCount;Uint16Sum_LowActualCount;Uint16 CalGain;Uint16CalOffset;Uint16HighActualCountSAMPLES;Uint16LowActualCountSAMPLES;/变量初始化Voidinitvar (void)Avg_HighA
11、ctualCount=0;Avg_LowActualCount=0;Sum_HighActualCount=0;Sum_LowActualCount=0;CalGain=0;CalOffset=0;Uint16 I;For(i=0;i4;/读采样数据LowActualCount=AdcRegs.AdcResult24;If(i=SAMPLES)/采样满规定次数i=0;for(k=0;k4;/2.5v实际采样值放寄存器4中。RefLowActualCount=AdcRegs.RESULT34;/0.5v实际采样值放寄存器3中。If(SampleCountSAMPLES) SampleCount=
12、SAMPLES;Avg_RefHighActualCount=(Avg_RefHighActualCount*SampleCount+RefHighActualCount)/(SampleCount+1);/2.5V采样软件滤波。Avg_RefLowActualCount=(Avg_RefLowActualCount*SampleCount+RefLowActualCount)/(SampleCount+1); /0.5V采样软件滤波。T2=2730.0; /t2=RefHighActualCount-RefLowActualCount=3413-683=2730.0/实际2.5与0.5v采样
13、值放寄存器后的差值。t1= Avg_RefHighActualCount - Avg_RefLowActualCount;CalGain=t2/t1;/增益误差系数。CalOffset=RefLowActualCount/CalGain-REF_LOW_IDEAL_COUNT;/失调误差系数。/滤波次数。SampleCount+;通过计算出的CalGain和CalOffset,我们就能得到校正后其他通道的输入电压了。在AD软件校正方面,我们还可以加入滤波算法,这种方法一般在采样直流信号中,考虑到成本时用到,一般是把采样值取N个点存储在数组a 中,在作处理时比较常用的有两种方法:取N个点的均值,
14、或者将N个采样点的值按从小到大进行排列之后,取中间的N/2个值进行求和取平均值。为了使得AD能够获得比较好的精度,在我们PCB布线时就需要注意,下面这段话引自于TI的手册,以供大家参考:“对ADCINxx引脚最主要的限制是不要运行在靠近数字通路的地方,这会使耦合到ADC输入端的数字信号线上的开关噪声减到最小。此外,可以采用适当的隔离技术,将ADC模块电源引脚和数字电源隔离。”5. 实际的ADC采样电路图我们在项目实际研发过程中采用的AD采样的硬件电路如下图所示:图1为电流信号检测与调理电路,电压信号的检测与调理电路与此相类似。从电流传感器输出的信号CT1首先经过了由R1、C1组成的低通滤波电路
15、,滤除高频干扰信号,然后通过U1构成的电压跟随器,实现了电路前后两级的隔离。由于2812的I/O口输入电平必须低于3.3V,因此在芯片引脚的输入前端加了一个稳压管Z1,使AD口输入的电压幅值不超过3V。6. 2327. 23238. 2329. 232310. 23211. 3212. sgfdg13. 实例一:2.1.1 AD采样F2812的ADC模块是一个12位的模/数转换器。对于16路的AD输入单元,本实验平台为其中的8路AD输入通道确定了功能,配置了相关的单元电路,包括:两路温度信号采集、交流信号采集、温度给定、鼓风机调速给定、力应变片电桥输出信号采集、压电传感器输出信号采集以及流量计
16、输出信号采集。如图2.1所示:温度给定和鼓风机调速给定是对电位器上直流电压的采样(图a),比较简单不作过多介绍;力应变片电桥输出信号采集、压电传感器输出信号采集(图c)以及流量计输出信号采集(图b)是接口部分,分别与传感器动态试验部分(第四章)和流量仪表部分(第三章)连接。这里着重介绍温度信号采集和交流信号采集。图2. 1 AD2AD6的接口电路2.1.1.1 温度信号采集两路温度信号分别通过F2812的AD0 、AD1通道来采集。由于两个通道完全一样,这里只介绍一路温度信号(AD0)的采集。(1)硬件原理温度传感器采用的是NS公司生产的LM355,它具有很高的工作精度和较宽的线性工作范围,它
17、的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供14的常用的室温精度。LM35的输出电压与摄氏温度的线形关系可用下面公式(2.1)表示,0时输出为0 V,每升高1,输出电压增加10 mV。 (2. 1)式中,输出电压单位为mV,温度单位为。 其电源供应模式有单电源与正负双电源两种。正负双电源的供电模式可提供负温度的测量,单电源模式在25下电流约为50 mA,非常省电。本系统采用的是单电源模式,可测温度范围0150。温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经放大后输出至AD转换电路。电压信号转换成数字量后DSP根据显示需要对数字量进行
18、处理,再送数码管进行显示。关于数码管显示部分的设计在后面“2.2 输出单元”中介绍。由于温度传感器LM35输出的电压范围为01.5V,虽然该电压范围在AD转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行AD转换则会导致转换成的数字量太小、精度低。系统中选用低漂移放大器OPA2335对LM35输出的电压信号进行幅度放大,电压放大倍数为2倍,电路图如图2.2所示。图2. 2 温度测量硬件原理图(2)软件设计通过定时器在中断中实现AD采样。采用多次采样求平均值的方法使得最后计算出的温度值更准确。主程序实现DSP、ADC、定时器的初始化,并在数码管上显示温度值。软件流程图如图2.3
19、所示。图2. 3 温度测量单元软件流程图(3)实验结果在实际的使用过程中,我们发现,ADC的转换结果误差较大,如果直接将此转换结果用于控制回路,必然会降低控制精度,最大的转换误差可以达到10。为减小误差,除了采用上面所述的多次采样取平均值算法,还采用了软件校正算法。通过多次计算、对比,对F2812的ADC存在的偏置误差(Offset Error)作了补偿。多次测试表明该测温系统工作稳定可靠,响应时间短、抗干扰能力强。2.1.1.2 交流信号采集(1)硬件原理由于F2812自带的AD转换器是单极性的,即输入电压只能为03.3V。因此对于采样交流信号,首先需要将该电压值的中点(0电平点)提升至AD
20、输入量程的中点,然后再进行AD采样6。将3.3V电压经R231、R38分压得到1.6V中点电压。双二极管BAT54S保证输入AD7通道的电压在03.3V之间。硬件原理图如图2.4所示。图2. 4 交流采样电路硬件原理图(2)软件设计AD采样在中断中实现,由定时器1来软件触发中断,定时器周期设为0.1ms。每0.1ms采样一次,在AD中断服务程序中,把采样结果保存到内存中去。软件流程如图2.5所示。图2. 5 交流采样电路软件流程图(3)实验结果用信号发生器产生幅度小于3V,频率为1000Hz的正弦波作为AD7的输入。运行程序,利用DSP的开发软件CCS自带的图形绘制功能可得到A/D的采样结果如图2. 6所示。图2. 6 图形窗口中显示的A/D采样结果14. sf
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1