APP下载

提高多路非直流量A/D数据采集时间的一种方法

2013-09-04卢秀和王艳双

长春工业大学学报 2013年1期
关键词:模拟量平均值波形

卢秀和, 陈 楠, 王艳双

(长春工业大学 电气与电子工程学院,吉林 长春 130012)

0 引 言

A/D转换是PIC18F4520单片机一个主要的组成模块,由于单片机只能对数字量进行识别,这时就需要设置一种模拟接口,用于把连续不断的模拟量转换成一系列不连续的、离散的数字信号,以方便对所需监控的状态进行读取[1]。

PIC18F4520单片机的A/D模块为10位A/D,占用两个数据存储器,即低地址的8位和高地址的低2位[2]。

这样看来,如果所采集的信号为直流信号时,就会转换出相同的数字量,反之,当采集的信号为非直流信号时,就会转换出不同的数字量。由于一些系统需要对一些非直流信号进行实时的监控,这样就无形中加大了对单片机的工作约束。文中提出一种相对于传统对顺序多路非直流信号采集时的方法——循环中断式采集。这种方法相对于传统的方法,降低了单片机对执行程序时间的要求,同时提高了采集精度。

A/D采集运用到剩余电流探测器(电器火灾监控探测器的一种,通常含有四路A/D采集信号)中,如果采用常规顺序A/D采集方法,不仅加大了PIC18F4520单片机对程序执行时间的要求,同时还降低了系统的精度。采用循环中断式采集方法时,相对于常规方法来说,不仅降低了程序执行的时间,同时加大了系统的精度。

1 逆变系统多路非直流采集信号

1.1 系统简介

通过分立式剩余电流探头分别检测出四路剩余电流,接入机器的四路输入,然后对每路电流进行整流,运用单项桥式整流电路,去掉四路信号中小于0的波形,然后送入运算放大器中进行放大,同时完成了把电流信号转换成电压信号进行采集,将输出的电压信号传入PIC18F4520单片机中进行采集。放大电路如图1所示[3-4]。

图1 模拟输入信号处理电路

由于PIC18F4520单片机内部的A/D模块供电电压为5V,因此,在设计此电路时必须保证运算放大器输出到A/D接口的波形最大值不得超于5V,否则导致单片机烧毁。

1.2 搭建硬件电路的系统

搭建硬件电路的系统框图如图2所示。

图2 系统框图

1.3 四路A/D采集波形

通过示波器测量,四路波形如图3和图4所示。

图3 第一路A/D波形

图4 后三路A/D波形

从图中可以看出,所采集的波形周期为20ms,四路 A/D 的平均值分别为230,73,73,73mV。为了提高精度,设置一周期采集的点数为64点,这样要求系统在完成一次完整的循环时间(包括四路A/D数据处理时间与系统其它程序执行时间)为20ms/64=312μs,系统要求对四路模拟量进行采集,而且要求必须是实时监控。

PIC18F4520采用的A/D电压为内部电压,即5V,为10位 A/D,A/D数据换算公式[5]:

分别把230mV,73mV代入式(1),得到四路 A/D采集数据为:47,14,14,14,转化成十六进制数为0x002F,0x000E,0x000E,0x000E。

2 编程思路

主要介绍用到的两种滤波程序。为了进一步提高A/D采集精度,运用了3点去坏值和滑动平均值滤波两种滤波程序[6]。

3点去坏值:在定时器定时312μs的时间内,对所采集的模拟信号连续采集3个数据,然后进行3个数据的比较,去掉最大值与最小值,留下中间值作为本次采集所得值,然后将此数据送入滑动平均值滤波区,进行滑动平均值滤波[7]。

滑动平均值滤波:对四路A/D分别在数据存储器中开启占有64个12位的数据存储区,把经过3点去坏值的数据放入此存储区内,当放满64个数据后,算出此时的平均值,作为模拟输入量的平均值,然后当下一个经过3点去坏值的数据来之前,对滤波存储区内的数据进行循环左移,即把第1个数据去除,第2个数据赋值给第1个,以此类推,最终把第64个数据赋值给63,然后把此时经过3点去坏值的数据赋值给第64位,以后当每次采集得到数据时,都经过此方法进行循环左移。算出每次滤波区的平均值即可[8]。

为了更加准确地证明相对于常规顺序采集方法,文中提出的循环中断式采集方法能够更加准确地采集模拟信号,对两种方法都进行了编写相应的实验程序。

3 常规顺序A/D采集方法

简单的理解方法就是,当采集完第一路A/D模拟量时,马上开始对第二路A/D数据进行采集,依次类推第三路与第四路。系统采集流程图如图5所示。

图5 常规顺序A/D采集方法流程图

从图中可以看出,此方法要求四路A/D的采集时间与数据处理时间要求在一次定时器定时之内完成,这样就可能出现程序执行过程时间过长,大于定时器定时时间,导致不能正确采集四路模拟量,从而不能得到正确的数字量。

经过编写相应的实验程序发现,如果采集点数为64点系统无法得到正确的平均值,为了能得到正确的平均值,只好减少点数,这样才能在规定的时间内完成系统程序,直到减少到16点后,才得以成功,这样就要求定时器定时为20ms/16=1.25ms。系统采集数据见表1。

从数据的变化可以看出,完全符合波形变化。但是此种方法由于采样点数的减少,从而加大了误差,而且对时间的要求非常严格。

通过采集的数据可以得到平均值为0x002A,0x000B,0x000B,0x000A,对应的十进制为42,11,11,10,相对于测得的数据47,14,14,14,可以算出误差比例为10%,21%,21%,38%。

表1 常规顺序A/D采集所得数据

4 循环中断式采集方法

本方法是在系统采集完一路A/D模拟量之后,进行A/D数据处理程序与系统其它程序的执行,在第二次进入定时器中断后,开始对第二路A/D模拟量的采集,以此类推第三路与第四路。系统采集流程如图6所示。

图6 循环中断式采集流程图

从图中可以看出,此方法只需要求对一路A/D采集时间与数据处理时间在一次定时器定时之内完成,不管采集的模拟量为四路或者更多,都不会影响系统对时间的严格要求。

经过编写相应的实验程序,可以得到正确的平均值,由于采集点数为64点,从而加大了精确度。系统采集数据见表2。

表2 循环中断采集所得数据

通过采集的数据可以得到平均值为0x002E,0x000E,0x000E,0x000D,对应的十进制为46,14,14,13,相对于测得的数据47,14,14,14,可以算出误差比例为2%,0,0,7%。

5 两种方法的快速性比较

通过两种实验对比,可以得到一些性能指标参数的对比数据,见表3[8]。

表3 两种方法参数对比

6 结 语

经过实验验证,相比于传统的实验方法,文中提出的循环中断式采集方法在占机时间上为常规方法的1/4,为系统执行其它程序释放了相当大的时间,在使用PIC18F4520单片的程序存储器少于常规方法,同时提高了系统的采集精度[9]。运用到剩余电流检测器中,保证了机器本身更加准确的运行、及时的报警以及相应的处理工作。

[1] 宋大维,崔友,孙鹏远,等.基于 RS-485总线的高压设备智能试验台[J].长春工业大学学报:自然科学版,2003,24(4):56-58.

[2] 刘启中,李荣正,王力生,等.PIC单片机原理及应用[M].北京:北京航空航天大学出版社,2003.

[3] 勒孝峰.模拟电子技术[M].北京:北京航空航天大学出版社,2009.

[4] 林渭勋.现代电力电子技术[M].北京:机械工业出版社,2006.

[5] W·H·高斯曼.数字电子学[M].李昔.译.北京:国防工业出版社,1985.

[6] 刘和平.PIC18Fxxx单片机程序设计及应用[M].北京:北京航空航天大学出版社,2005.

[7] 明日科技,王娣,安剑,等.C语言程序开发范例宝典[M].北京:人民邮电出版社,2010.

[8] 龙宏波,叶晓慧,谭思炜.归一化加权平均值算法在测量中的应用[J].电光与控制,2010,17(12):2-3.

[9] 李颉,吕强中.PIC单片机A/D转换数据存储及串口效率[J].机械工程与自动化,2006(3):5-6.

猜你喜欢

模拟量平均值波形
平均值的一组新不等式
由时变Lévy噪声驱动的随机微分方程的平均值原理
基于LFM波形的灵巧干扰效能分析
用于SAR与通信一体化系统的滤波器组多载波波形
基于FPGA的多通道模拟量采集/输出PCI板卡的研制
关于600MW火电机组模拟量控制系统设计和研究
基于ARM的任意波形电源设计
双丝双正弦电流脉冲波形控制
模拟量输入式合并单元测试仪的研制
平面图形中构造调和平均值几例