基于ARM9电能质量监测仪的数据采集

2010年03月13日 10:05    发布者:李宽
为了保证电力系统安全、可靠、高效地运行,高质量的电能供给是一项重要的工作。为此,利用便携式电能质量监测仪对电网电能质量参数进行准确地测量。 ARM9的主频高、速度快、内存容易扩展,可以运行嵌入式Linux操作系统,为应用程序的设计提供了方便的条件,其开发板所用的处理器是ARM9- S3C2410。基于ARM9-S3C2410的电能质量监测仪的整体结构框图,如图1所示。



由图1可知,该系统的硬件除了已经扩充了存储器的ARM9-S3C2410A核心板外,还包括外围信号调理、键盘及显示等电路,以MAX1324组成的A/D和信号调理电路,是该数据采集的重要内容,文中主要介绍这一部分的硬件和相关软件设计。

1 数据采集的硬件设计

开发板ST2410的硬件资源丰富,提供了40脚外部扩展接口,通过该接口,可以方便地扩展信号采集等外围电路。信号调理部分电路的具体结构,如图 2所示。



1.1 信号调理电路

模拟信号输入前端电路,是利用电压互感器(PT)和电流互感器(CT),对被采样电压和电流进行隔离和电平转换。一次互感先将电力电网的高压、大电流转换成标准的交流100 V和5 A,二次互感器再将其转换成A/D芯片MAX1324输入所要求的-10~+10 V电平,从而得到电力系统公共连接点的全部原始数据。

抗混叠滤波器的作用,是将输入信号中的高频分量滤除,以防止被测信号的高频干扰与有用的低频信号发生混叠,影响测量精度。抗混叠滤波采用压控电压源二阶低通滤波器,如图3所示。考虑到本装置需要监测1~50次谐波,要求在 50~50×50 Hz频率范围内的幅频特性曲线越平坦越好。



1.2 A/D转换

因为在测量电网的三相不平衡参数时,要用到中性线的电压和电流,虽然从理论上,可以通过相电压和相电流算出中性线的电压和电流值,但是,测量值应该更加接近物理现实。所以,最好同时测量电网中用户公共连接点的三相电压、三相电流和中性线的电压与电流,共计8路模入信号。多路信号的同步采样可以有效克服因通道转换而产生的相差问题,所以A/D应该选用8路同步采样芯片。美信公司的MAX1320和MAX1324都是适合上述设计要求的专用芯片,MAX1324的模入电压范围为±10 V,比MAX1320芯片的输入电压范围宽。在同样干扰和噪声条件下,A/D转换的相对精度会高一些,所以采用MAX1324,它内部集成了8个独立的采样保持器和8通道的多路开关,容易实现8路模拟量的瞬时采集,其转换结果以补码的形式按顺序输出。

对于一个已经给定转换位数的ADC,它对信号所能离散数据位的电平值是确知的,14位MAX125提供214级的离散电平为2×10 V/214≈1.22 mV,相对分辨率可达±0.025%。在国家谐波测量标准中,对于规定的畸变率,电流的测量精度要求相对高一些,考虑到各种情况,实践亦证明采用14位的 ADC是完全可以满足谐波测量的设计要求的。

电能质量监测仪的ARM处理器芯片S3C2410A内部还带有8通道1O位的A/Dc。根据上述分析可知,10位A/D难以满足谐波监测仪对数据采集的要求,而且该A/DC也不具备同步采样功能。然而在测量电网基波的频率时,国家标准要求对工频的测量精度是50±0.01 Hz,这意味着在一个周期内,要采集50÷0.0l=5 000个点以上,所以A/D转换时间在20 ms/5 000=4μs以下。频率测量对幅值的精度要求并不高,只要能够正常判断正负值即可。ARM芯片内10位A/D的转换速度最高可达500 ksps(2μs),所以,用以测量电网的基波频率正合适。这样,MAX1324和ARM内的A/DC分别用作谐波和频率测量就各尽所能了。

MAX1l324与处理器S3C2410的接口如图4所示,MAX1324的模拟供电电压是5 V,而MAX1324允许的数字供电电压范围为2.7~5.25 V,图中是3.3 V。这样,可以不用电平转换而直接与S3C2410的数字I/O接口相连。



在进行数据采集时,操作过程分为以下3步:(1)首先要将MAX1324的工作方式设置为8个通道的瞬时采样,引脚ALLON接高电平,拉低和时,向数据线D0~D7写入全“1”,这样8个通道就能都被选中,实现同步ADC;(2)拉低ARM的 GPAl2端子,使CONVST引脚为低电平,输入信号在采样保持器达到稳定的电平后,再由CONVST的上升沿开始启动A/D,这里的多通道转换是按通道号由低到高的顺序进行,当最后一个通道的转换结束后,所有通道转换结束信号跳变为低电平,转换结果先储存于片内对应的14位×8的SRAM中;(3)读取模数转换结果数据,其方式有两种:一种是查询方式,MAX1324的引脚接到S3C2410的一个I/0引脚上,S3C2410启动A/D转换后,不断地查询这个I/0引脚是否为低电平,以判断转换是否结束,然后再依次读取转换后的数字信号;另一种是中断方式,MAX1324的引脚直接接到 S3C2410的一个外部中断引脚上,一旦转换结束,则向S3C2410申请中断,S3C2410就会进入中断服务程序,依次读取MAX1324转换后的数据。为了提高CPU的使用效率,采用中断方式,图4中MAX1324的引脚接到S3C2410的外部中断EINT3的引脚上。当A/D数据转换结束后,就会向S3C2410的EINT3发出低电平,当EINT3引脚为低电平时,就会先后向MAX1324的引脚发出8个读脉冲,控制选通引脚分时读取 MAX1324转换后的8个通道ADC数据。

2 接口驱动

设备驱动程序的任务包括自动配置和初始化子程序,负责检测所要驱动的硬件设备是否能正常工作。如果该设备正常,则对这个设备及其相关的设备驱动程序需要的软件状态进行初始化。

Linux下的设备驱动程序被组织为一组完全不同任务的函数的集合。编写A/D驱动,主要完成对A/D器件控制寄存器和数据寄存器的 open0,closeO,read0,writeO等的操作,并在file_operations中注册。

static struct file_operations adcmax1324_fops={
open:ademaxl324_open,
ioctl:adcmaxl324_ioctl,
read:adcmaxl324_read,
write:ademaxl324_write,
release:adcmaxl324_release,
}

下面介绍其中几个重要的函数:

(1)adcmaxl324_write函数:调用该函数,通过双向数据线DATAO~DATA7向MAX1324写人数据OxOOFF,把 MAX1324设置成8通道同时转换的模式;(2)ademax1324_ioctl函数:Ioctl函数跟踪信号,启动A/D转换; (3)adcmax1324_read函数:read函数把中断处理函数中读到的数据发到用户程序。

最后在init()中完成初始化工作。包括注册设备驱动程序和申请系统资源。在编写驱动程序时通常编写成模块的形式,在模块加载时调用初始化函数 module_init(),在卸载时调用卸载模块函数module_exit()。

3 结束语



文中实现了基于ARM9的电能质量监测仪数据采集的设计。介绍了硬件电路及其相关软件,经实验测试,基于MAX1324ECM的上述数据采集电路,实测准确度可以达到±0.5%,实验结果如表1所示,因此 MAX1324ECM完全适用于电能质量监测中的数据采集。

参考文献

   1. 孔五阳,徐群.MAX1320在同步向量测量中的应用.微计算机信息,2007,23(2):290-291.
   2. 曹晖,刘晓华.电能质量测量系统中数据采集要求的定量分析.电测与仪表,2004,41(7):26-28.
   3. 潘小波,杨维翰.基于ARM9的谐波监测仪数据采集接口.安徽工业大学学报,2007,24(2):209-212.
   4. 孙天泽,袁文菊.嵌入式设计及Linux驱动开发指南.北京:电子工业出版社,2005.
   5. 刘伟民,韩斌,李征.基于Linux的数据采集及在qt界面的显示.微计算机信息,2008(22):97-99.

作者:黄磊,杨维翰(安徽工业大学,电气信息学院,安徽,马鞍山,243002) 许昆(大庆油田有限责任公司)
来源:电子科技 2009(12)