李兴霞
(佳木斯大学应用技术学院,黑龙江佳木斯154007)
农田数据采集是指将影响农作物生长的温度、湿度、光照等物理量采集、转换成数字量后,由计算机进行存储、处理、显示或打印的过程[1].数据采集系统的任务,就是采集传感器输出的信号,并转换成计算机能识别的数字信号,送入计算机,根据不同的需要由计算机进行相应的计算和处理,得出所需的数据.数据采集系统性能的好坏,主要取决于它的精度和速度[2].现有数据采集系统大都采用先放大滤波,再采样量化进入微处理器进行数据处理的惯用模式,当分辨率很高时,传统的采用Nyquist抽样速率的A/D转换器实现就非常困难.过采样技术能够实现传统ADC达不到的精度,己成为实现中低速、高精度模数转换器的主要技术.本文在采用S3C44B0XI进行农田数据采集系统设计时,利用过采样技术以较高的采样频率进行采样,从而提高整个系统的可靠性、集成度,降低成本.
在采样过程中首要的问题是采样频率的选择,Nyquist采样定理指出:若连续信号x(t)是有限带宽的,其频谱的最高频率为fc,对x(t)采样时,若保证采样频率fs≥2fc,那么,就可由采样信号恢复出x(t).在实际对x(t)作采样时,首先要了解x(t)的最高截止频率fc,以确定应选取的采样频率fs.若x (t)不是有限带宽的,在采样前应使用抗混叠(Anti-aliasing)滤波器对x(t)作模拟滤波,以去掉大于fc的高频成分.因此,在A/D转换前就需要模拟低通滤波器具有尖锐的滚降特性,来限制模拟信号的频谱.一个理想的滤波器应能让所有低于fs的频率通过,而完全阻隔掉所有大于fs的频率.通常,滤波器和采样频率的选择是将我们感兴趣的频带限制在DC和fs之间.用更高的采样频率可以降低对低通滤波器的限制.
经模拟滤波后,模拟信号被采样并转换成数字量,因为数字域仅包含有限的字长,若要用它来表示连续信号,就要引入量化误差,最大量化误差为±0.5 LSB.因为一个N位的ADC的输入范围被分成2N个离散的数值,每一个数值由一个N位的二进制数表示,所以ADC的输入范围和字长N是最大量化误差的一个直接表示,也是分辨率的一个直接表示.代表数字值的字长决定了信噪比,因此通过增加信噪比可以增加转换的分辨率[3].
加入三角波信号可提高信噪比[4].如果输入信号在两个量化步长q1与q0之间,则它将被量化成q1或q0.当增加一个适当的三角波信号,并高速采样,将会量化出一系列的q1与q0,这两个值出现的比例就代表了此输入信号在两个量化步长之间的相对位置.要应用这种方法得到比较好的效果,三角波信号的幅度必须为(n+0.5)LSB,其中,n=0,1,2,…….因为有了高采样速率,输入信号的变化相对来说比较缓慢,当用一个三角波信号与此输入信号进行叠加,并高速采样时,转换器产生一系列的0或1采样值,0和1出现的比例就表示了这个在0和1 LSB之间的实际值.因此,加入三角波信号可提高信噪比.
图1的采样因子K为16,采样值为0.563,得到了比原转换结果更小的量化误差.使用三角波调制过采样技术所增加的信噪比可以表示为:
式中:RSNgain为增加的信噪比;K为采样因子.
图1 叠加三角波信号
使用增加三角波信号的过采样每加一倍过采样速率,就可以增加6 dB的分辨率.这种方法需要输入信号在一个过采样周期内变化不能超过(±0.5)LSB.该法产生的信噪比和分辨率的增加见表1.
表1 三角波调制的过采样技术所产生的信噪比和分辨率的增加
系统构建了基于ARM&uc/OSII的嵌入式平台,并在此基础上实现了农田环境参数数据的采集.
图2在S3C44B0XI上实现过采样的工作原理示意图.虚线框部分都可以用S3C44B0X来实现.PWM信号输出可以用来产生三角波信号,数字滤波和抽取用软件来实现.
图2 用S3C44B0XI实现过采样工作原理示意图
图3为三角波信号产生以及与输入信号叠加的电路图.S3C44B0XI的PWM信号的占空比在0~100% 之间,R3和C1作为积分器产生一个0~3 V之间的三角波信号输入到运放.电路的输出信号连至ADC的输入.
图3 三角波信号产生与输入信号叠加
在进行农田环境数据采集的系统设计时,采取了如下措施来增加A/D转换分辨率和信噪比.
1)在本系统中,依据信号频率和需要增加的AD转换分辨率,确定过采样因子K=8,三角波信号频率为100 kHz,AD转换频率为500 kHz,可以增加AD分辨率2 bit,使S3C44B0XI的AD转换精度从10 bit增加到12 bit,并增加了信噪比.
2)对信号连续的多个周期进行采样,对测量结果分别处理后,用得到的平均值作为最终的结果,可以进一步增加测量结果的信噪比.
A/D信号处理模块提供的函数有:ad_init()和ad_read().
ad_init():A/D模块初始化函数,设置相应寄存器和硬件端口.
ad_read():启动并进行A/D转换.输入参数为A/D的工作方式和通道.返回A/D转换的结果.
系统的A/D转换做为一个任务进行处理.在主任务中创建如下任务负责进行A/D转换.
OSTaskCreate(Task_ADC,(void*)0,(OS_ STK*)&Task_ADC_Stack[TASK_STACK_SIZE-1],Task_ADC_PRIO)
任务Task_ADC首先要完成A/D转换的初始化工作.通过设置rCLKCON寄存器使系统的主时钟进入ADC单元模块,设置ADC转换控制寄存器使ADC转换模块使能,设置ADC的转换频率.其中ADC转换频率计算公式为:(int)(MCLK/(2* (rADCPSR+1))/16).进行完初始化工作,就可以进行A/D转换了.
过采样技术虽然很早就被提出,但是进行过采样的相关应用还相当少[5],特别是数据采集系统中,过采样更是很少被涉及.本文对基于过采样技术提高农田数据采集精度的方法进行了研究,并紧密结合实际对该方法的原理及应用进行了详细的论述.该方法的研究对于过采样技术在其他方面的应用有着很好的参考价值.
[1] 魏凯斌.基于嵌入式系统的农业采集传输关键技术研究[D].咸阳:西北农林科技大学,2007.
[2] 张小超,王一鸣,方宪法.精准农业的信息获取技术[J].农业机械学报,2002,33(6):125-128.
[3] WALT K.如何认识模数转换器的输入噪声[J].今日电子,2006(4):53-57.
[4] 李 丹.音频信号的过采样处理及转换[D].上海:复旦大学,2007.
[5] 刘 涛.过采样DAC中数字滤波器设计[D].合肥:合肥工业大学,2007.