这些不同的电参量测量芯片功能各有侧重,性能各有所长。我们在使用这些芯片过程中,发现不少特殊问题,并针对这些特点设计了通用的智能电参量测量模块。本文根据实际应用AT73C500/501过程中出现的问题,对该芯片的应用进行了深入探讨,给出相应解决办法;同时,设计了高效的电参量测量模块校准软件,实现电参量测量模块自动、快速生产调试。
图1
1 AT73C500/501芯片简介
1.1 芯片性能指标
AT73C500/C501为美国Atmel公司2000年推出的电能测量专用芯片组。其中AT73C501为A/D变换芯片用于测量前端信号采样;AT73C500为DSP芯片,根据AT73C501的采样数据完成电参量的计算。使用这两种芯片配合工作测量三相电参数个有如下特点:
*满足IEC1036一级精度要求;
*使用外部温度补偿的参考电源,满足IEC687的0.5和0.2级精度;
*测量三相有功功率、无功功率、视在功率和电能;
*测量功率因数、电网频率、电压和电流有效值;
*多相或单相运行;
*接口灵活,具有8位微处理器接口、8位状态输出、8路脉冲输出;
*支持增益和相位校准;
*支持低端非线性校准;
*启动电流可编程;
*最大可测带宽1kHz;
*单+5V供电;
*校准数据可以从串行EEPROM读取,也可以由外接微处理器读取。
1.2 AT73C500/501芯片简介
AT73C501是28引脚PLCC封装的六路Sigma-Delta A/D变换器。AT73C501内部包含六路16位A/D变换器、1个参考电压发生器、1个电源电压监视单元和1个时钟单元。每路A/D变换器都由高性能、过采样的Sigma-Delta调制器和数字均分滤波器组成。
芯片的AIN1、AIN3、AIN5为电流采样通道输入,AIN2、AIN4、AIN6为电压采样通道输入,所有六路A/D输入都是单端输入,简化了外围设计。其它主要引脚有:
ACK―采样数据输出准备好;
OX、XI―接外部晶体3.2768MHz,提供工作时钟;
CLK―提供DSP AT73C500工作时钟输出;
CLKR―串行总线数据输出时钟;
FSR―输出采样的帧信号;
DATA―串行总线采样数据输出。
AT73C500为44引脚PLCC封装的新型电能测量专用DSP芯片,具有一个高效的数字信号处理器(DSP)内核,DSP技术的使用,使AT73C500具有其它电能测量芯片所没有的一些特点和复杂功能。主要引脚如下;
B0~B7―MCU总线;
B8~B15―状态、工作模式总线;
IRQ1―接AT73C501的ACK,外部采样数据中断请求;
CLK―时钟输入,3.2768MHz;
STROBE、BRDY、RD/WR、ADDR0、ADDR1―AT73C500和外部MCU的数据传输接口信号;
SOUT0―时钟输出给外部串行EEPROM;
SOUT1―串行输出,作为AT73C500的片选信号或外部EEPROM的数据输入(DI);
SIN―串行数据输入,接收AT73C501或外部EEPROM的数据输入(DO);
SCLK―串行位时钟输入来自AT73C501。
2 智能电参量采集模块设计
我们设计的智能电参量采集模块,用于低压变压器在线监测设备中。测量模块作为关键的台变运行监测部件,要求设计成通用性强的采集模块。这样,可以方便地和现有的各种设备接口,扩展现有设备的功能。应具有造价低,可靠性强,便于维护等优点。针对功能需求,在综合对比几种电能量测量芯片的价格、性能、系统实现难易程度等几方面的基础上,我们采用AT73C500/501设计了智能电参量采集模块。
2.1 智能电参量采集模块前端原理
电参量采集模块前端以AT73C500/501为核心,由信号取样电路、逻辑电路及其它元器件测量单元结构共同组成。三相电压信号分别使用电阻分压器的互感器提取。被测三相电流由一次电流1.5A或6A、二次电流5mA、二次负荷20Ω的电流互感器转化为电压信号。
图1为测量采集模块原理。
选择AT73C500的工作模式时,由于校准数据直接影响测量精度,而且每次复位后AT73C500都要重新读入校准数据,如果AT73C500使用微处理器模式,导入校准数据的握手协议过于复杂,需要单片机软件干预;因此从可靠性角度考虑,AT73C500被设置成EEPROM模式,将校准数据从EEPROM AT93C46中读出,同时,单片机也能对AT93C46内的校准数据读写。
前端测量电路工作流程:上电复位后,单片机对AT73C500复位,然后AT73C500进行初始化工作。首先将RD/WR写高,状态/模式总线上的四个三态门被选通,AT73C500通过BUS12至BUS15读入模式信息。在判断工作模式为EEPROM模式后,AT73C500向状态/模式总线的最低位(BUS8)写低电平,经逻辑译码电路(GAL20V8)后产生初始化信号CS1。CS1信号选通串行EEPROM AT93C46,AT73C500读出存储在AT93C46中的校准数据。校准数据读出以后,AT73C500向BUS8写高电平,经锁存后CS1变成高电平,初始化阶段结束,测量单元开始正常的测量工作。AT73C501开始通过同步串行总线向AT73C500传送采样结果。
AT73C500的计算结果有两种输出方式:一种是以数据的形式输出,另一种是以脉冲的形式输出。两种方式共和数据总线,因此使用逻辑译码电路(GAL20V8)区分。当有一包数据要输出时,AT73C500向状态总线的BUS9写高电平脉冲,经锁存后产生数据就绪信号DATRDY。DATRDY信号用于智能外接单片机线上数据就绪,此时ADDR0为低电平,无脉冲输出。数据输出结束后,DATRDY变为低电平。数据总线输出脉冲时,DATRDY始终为低电平;同时,DR/WR为低电平,ADDR0为高电平。
2.2 AT73C500数据采集接口单元设计
2.2.1 单片机选型
对智能电参量采集模块的各项数据进一步加工处理和与外部通信等功能,一般要由单片机来完成。前端测量单元的测量结果由AT73C500的数据总线送出。AT73C500的数据总线为并行总线。总线上数据传输速度非常快,其中锁存信号STROBE的脉宽仅为153ns。基于速度、成本上的考虑,选用美国Atmel公司的精简指令集(RISC)AVR单片机AT90S8535实现接口单元的功能。AT90S8535内部有8KB Flash程序存储器,512B SRAM,使用8MHz的晶振,每条指令的执行时间仅为125ns。
2.2.2 接口逻辑控制电路
由于AT73C500/501有多种工作模式和数据传输方式,同时系统有1片EEPROM AT93C46存储器,保存校准参数信息。AT93C46必须能够由单片机读写,还要能由AT73C500读取系数。考虑到还有其它的复杂数据控制接口信号,因此,采用1片PLD GAL20V8实现复杂逻辑功能和数据、地址译码。图2为接口逻辑控制电路。
2.2.3 单片机数据采集接口单元
测量单元的测量结果通过并行数据总线高速输出,因此,如何准确及时地接收总线上的数据是接口单元要解决的首要问题。
AT73C500数据总线时序中有两个不利于数据接收的问题。
AT73C500数据总线时序中有两个不利于数据接收的问题。
一是数据写到总线选通STROBE信号低电平宽度太窄,不利于单片机捕捉。这个问题即使使用了AVR单片机依然不能忽视。如果AT90S8535采用查询普通I/O口的办法捕捉STROBE脉冲,查询一次至少要执行两个单周期指令或执行一条两周期指令,执行时间最少为250ns,超过了STROBE低电平的宽度(153ns),因此丢失数据的可能性非常大。为了准确地捕捉STROBE信号,该信号被连接到AT90S8535外中断0的输入引脚(1NT0)。当INT0引脚上的STROBE信号触发了INT0中断请求时,通用中断标志寄存器GIFR中的INTF0位被置1,AT90S8535通过查询INTF0位,判断是否出现STROBE信号。使用这种方法STROBE低电平状态由单片机硬件捕捉,不存在丢失STROBE事件的可能性,只要在下一次中断申请出现以前将INTF0位清除即可。
图3
另一个不利于数据接收的问题是,两个STROBE信号之间的时间过短,最短时间间隔只有11个时钟周期(3.2768MHz)。针对这种情况,考虑到数据包有效时的信号DATARDY可以利用,将DATARDY接到INT1引脚,利用DATARDY和STROBE的关系,进行数据接收,硬件连接如图3所示。
3 智能电参量采集模块软件设计
电参量采集模块软件主要是单片机AT90S8535的控制软件。软件主要的功能是完成对AT73C500/501的配置,测量数据的处理;同时,利用外部通信接口传输采集的数据,响应外部设备的各种查询,校准数据设置操作。程序设计的难点在于对AT73C500测量数据的采集。
采集程序初始化时,只允许INT1中断(由数据包准备好标志DATARDY触发)。当DATARDY有效,进入INT1中断时,在中断内允许INT0中断(由数据写到总线选通STROBE信号触发)。这样,在INT1中断程序内,查询到STROBE引起的中断有效标志INTF0后,马上读出AT73C500写到总线的数据。然后,清除INTF0,等待接收下个数据,直到把1个完整数据包16个字节全部接收完成,再退出INT1中断。由于每包数据之间有至少20ms的间隔时间可供AT90S8535处理,这样接收完成1包数据后,在20ms的时间内由AT90S8535完成对包数据的分析,依次完成6包数据的接收处理。
关键的数据包中断接收代码程序如下:
interrupt[EXT_INT1]void ext_int1_isr(void)
{
#asm("cli") //禁止所有中断
CIMSK=0x40; //禁止int1,允许int0
strobe1:
if(GIFR==0)goto strobe1;//等待第1个数据选通信号有效
temp_PACk0=PINB; //syncls读出同步数据1
GIFR=0xc0;BRDY=0;
strobe2:
if(GIFR==0)goto strobe2;//等待第2个数据选通信号有效
temp_pack1=PINB; //syncms读出同步数据2
GIFR=0xc0;BRDY=0;
…………
strobe16:
if(GIFR==0)goto strobe16;//等待第16个数据选通信号有效
temp_pack15=PINB;
BRDY=0;GIMSK=0x80;GIFR=0xc0;//读写16个字节,完成1包数据接收
#asm("sei")
}
在设计调试电参量测量模块过程中发现很多问题。最严重的问题是在测量过程中,当在AT73C501信号输入端出现电压类峰脉冲干扰时,AT73C500/501芯片组出现死机现象。具体表现为AT73C500不再向数据总线发送测量数据。同时AT73C501迅速升沿发烫,而此时芯片组的复位控制信号不再起作用,单片机无法控制AT73C500/501;只有模块停电,再上电之后,才能恢复正常工作。这种故障在实际的工业控制中是必须要解决的。
针对此现象,我们经过反复实验,采用软件和硬件相结合的办法,圆满解决了这个问题。
硬件方面:
*在模块的供电电源上串接电源滤波器,消除从电源侧引入的干扰;
*AT73C501的6路单端A/D输入端接入EMI磁珠,同时输入端并接双向肖特基保护管,对输入的超出输入范围的信号限幅,保护内部电路;
*AT73C500/501芯片组的供电由晶体管电子开关控制,在发生故障时,可由单片机及时切断电路,实现重新上电。
软件方面:
*增加软件看门狗,由AT73C500的数据包传输中断不断清除,一旦出现故障,没有数据包传输中断,则看门狗复位系统;
*软件对采集的数据进行合理性分析,出现异常非法测量数据时,复位AT73C500/501芯片组;
*软件定时对AT73C500的校准参数进行重装载,防止AT73C500内部寄存器校准系统系数失效。
采用以上措施,使电参量测量模块的可靠性大大提高。使因此测量模块的现场安装运行的台变监测设备运行年1来年,稳定可靠,获得用户好评。