AN-1127: ADE7880与ADE7878的区别

简介

本应用笔记说明ADE7878与ADE7880的区别,讨论二者在硬件和软件上的不同,并提供了一个用于ADE7880的头文件。

硬件区别

ADE7880ADE7878引脚兼容。


新抗混叠滤波器


然而,由于ADC带宽已从2 kHz(−3 dB点)提高到3.3 kHz(−3 dB点),因此必须更换ADC输入路径中使用的抗混叠滤波器。以前,ADE7878评估板上使用1 kΩ/22 nF(7.2 kHz转折频率)抗混叠滤波器。现在,ADE7880评估板上使用1 kΩ/10 nF(15.9 kHz转折频率)抗混叠滤波器。

检测零线电流和相电流所用的传感器可以不同

可以使用不同类型的传感器来分别检测零线电流和相电流。例如,相电流可以利用罗氏线圈来检测,零线电流可以利用电流互感器(CT)来检测,反之亦然。

ADE7880的CONFIG寄存器的位0 (INTEN)用于使能/禁用相电流通道中的积分器。

DE7880的CONFIG3寄存器的位3(ININTEN)用于使能/禁用零线电流通道中的积分器。

在ADE7880中,位于地址0xE60F的增益寄存器的定义保持不变。

软件区别

寄存器地址


寄存器映射已更改。ADE7878的许多寄存器现在都有新地址。由于新增谐波计算,ADE7880增加了一些寄存器。寄存器信息请参见“附录:ADE7880.H头文件”部分。


ADE7880不计算总无功功率和总无功电能


ADE7878计算总/基波无功功率/电能。ADE7880则仅计算基波无功功率/电能。

ADE7878将各相总无功功率的瞬时值存储在AVAR、BVAR和CVAR寄存器中。这些寄存器已不再存在。

当HSDC_CFG寄存器的位[4:3](HXFER)设为10时,ADE7878HSDC端口传输各相总无功功率。但是,当HXFER设为10时,ADE7880则传输基波无功功率。ADE7880的各相基波无功功率寄存器AFVAR、BFVAR和CFVAR未映射到寄存器空间中的某个地址,只能通过HSDC端口访问。


xPGAIN寄存器取代xWGAIN、xVARGAIN、xVAGAIN寄存器(x = A, B, C)


在ADE7878中,有功、无功和视在功率数据路径中的增益寄存器为AWGAIN、BWGAIN、CWGAIN、AVARGAIN、BVARGAIN、CVARGAIN、AVAGAIN、BVAGAIN和CVAGAIN。建议使用相同的值来初始化各相位的寄存器。

在ADE7880中,APGAIN、BPGAIN和CPGAIN寄存器取代了各相的xWGAIN、xVARGAIN和xVAGAIN寄存器。APGAIN管理相位A的所有功率增益,BPGAIN管理相位B的所有功率增益,CPGAIN管理相位C的所有功率增益。


WTHR、VARTHR和VATHR寄存器定义发生改变


在ADE7878中,48位寄存器WTHR、VARTHR和VATHR定义为:

Equation 1.

其中:
PMAX = 33,516,139 = 0x1FF6A6B,即ADC输入为满量程时计算出的瞬时功率。 fS = 8 kHz, 即DSP用于计算瞬时功率的频率。

n 为整数,决定xWATTHR/xVARHR/xVAHR寄存器的1 LSB 相当于多少wh [10n wh] 。 UFS 和 IFS分别为ADC输入为满量程时相电压和电流的有效值。

在ADE7880中,WTHR、VARTHR和VATHR现为8位无符号寄存器,定义为:

Equation 2.

其中:
PMAX = 27,059,678 = 0x19CE5DE,即ADC输入为满量程时 计算出的瞬时功率。 fS = 1.024 MHz, 即DSP以8 kHz速率计算的每个瞬时功率的累计频率。 n 为整数,决定xWATTHR/xVARHR/xVAHR寄存器的1 LSB相当于多少 wh [10n wh] 。 UFS 和 IFS 分别为ADC输入为满量程时相电压和电流的有效值。


针对总有功/无功和基波有功/无功功率的空载管理发生改变


在ADE7880中,总有功/无功功率和基波有功/无功功率的空载条件已改变,更多信息参见ADE7880数据手册。


HPF由CONFIG3寄存器中的位0 (HPFEN)管理(ADE7880)


在ADE7878中,电流和电压通道数据路径所用的高通滤波器(HPF)由24位寄存器HPFDIS管理。如果该寄存器为0(默认值),则HPF使能。如果该寄存器用非零值初始化,则HPF禁用。

在ADE7880中,HPF由CONFIG3寄存器中的位0(HPFEN)管理。如果HPFEN = 0,则HPF禁用。如果HPFEN = 1(默认值),则HPF使能。


ADE7880计算相电流和的RMS值


ADE7878和ADE7880计算相电流和的瞬时值,并将其存储在ISUM寄存器中。ADE7878不计算ISUM的rms值。

如果CONFIG3寄存器的位2(INSEL)设为1(参见ADE7880数据手册),则ADE7880计算ISUM的rms值并将其存储到NIRMS寄存器中。如果INSEL = 0(默认值),则NIRMS寄存器包含INP和INN引脚处检测到的零线电流的rms值。


ADE7880计算三相三线配置中第三电压的RMS值


在三相三线配置中(ACCMODE寄存器的CONSEL位设为01时),仅检测A相和C相,B相用作参考。ADE7878和ADE7880均会计算A相与B相之间以及C相与B相之间的线路电压的rms值,并将其存储到AVRMS和CVRMS寄存器中。ADE7880还会计算A相与C相之间的线路电压的rms值,并将其存储到BVRMS寄存器中。


ADE7880可以计算更平滑的瞬时有功功率数据


在ADE7880中,CONFIG3寄存器的位1(LPFSEL)管理总有功功率计算的建立时间。如果LPFSEL清0(默认值),则建立时间为650 ms。如果LPFSEL置1,则建立时间为1300 ms,可以使瞬时总有功功率数据更平滑。


DE7880引入了通信验证寄存器


ADE7880包括三个用于对I2C或SPI通信进行验证的寄存器:LAST_OP、LAST_ADD和LAST_RWDATA,它们分别记录上一次成功通信的性质、地址和数据。


ADE7880改进了CHECKSUM计算


在ADE7878中,CHECKSUM计算包括13个配置寄存器和6个内部寄存器。

在ADE7880中,CHECKSUM计算包括13个配置寄存器(全部位于DSP数据存储RAM的地址0x4380与地址0x43BE之间)和8个内部寄存器。此外,每次写入寄存器或意外更改数值时,STATUS1寄存器的位25(CRC)就会置1。如果MASK1寄存器的位25(CRC)置1,则 IRQ1 中断引脚会变为低电平。


电能累计模式和电能频率转换模式发生改变


在ADE7878中,电能频率转换器在引脚CF1、CF2和CF3/HSCLK上产生脉冲,这些引脚对应于ACCMODE寄存器的位[1:0](WATTACC)和位[3:2](VARACC)。瞬时功率始终以带符号形式在电能寄存器中累计,与WATTACC和VARACC位的状态无关。

ADE7880中 , ACCMODE寄存器的 WATTACC和VARACC位所决定的模式已改变(参见表1和表2)。现在,瞬时功率是否累计到电能寄存器中要依据其状态。电能频率转换器在CF1、CF2/HREADY和CF3/HSCLK引脚上产生脉冲也是根据WATTACC和VARACC位的状态,但有一个例外:在仅正值模式(WATTACC = 01)下累计瞬时总/基波有功功率时,电能频率转换器仍会在带符号累计模式下产生脉冲。


当一个电路板同时支持ADE7880和ADE7878时,如何辨别?


ADE7880和ADE7878的CONFIG寄存器位于同一地址0xE618。ADE7878的默认值为0x0,ADE7880的默认值为0x2。

要辨别电路板上安装的是ADE7878还是ADE7880,请在上电后读取地址 0xE618。如果值为 0x0,则安装的是ADE7878;如果值为0x2,则安装的是ADE7880。


表1. 总有功功率累计模式和基波有功功率累计模式
WATTACC位 (ACCMODE寄存器的位[1:0]) 总/基波有功电能寄存器累计模式 CF脉冲产生模式
00 带符号累计 同电能寄存器
01 仅正值累计 带符号累计
10(保留) ADE7880的表现与WATTACC[1:0] = 00时一致 同电能寄存器
11 绝对值累计 同电能寄存器
表2. 基波无功功率累计模式
VARACC位 (ACCMODE寄存器的位[3:2]) 基波无功电能寄存器累计模式 CF脉冲产生模式
00 带符号累计 同电能寄存器
01(保留) ADE7880的表现与VARACC位[1:0] = 00时一致 同电能寄存器
10 基波无功功率的累计取决于基波有功功率的符号。如果有功功率为正值,则以原样来累计无功功率,而如果有功功率为负值,则以相反符号形式累计无功功率。 同电能寄存器
11 绝对值累计 带符号累计

附录:ADE7880.H头文件

#ifndef __ADE7880_H__
#define __ADE7880_H__

#define AIGAIN 0x4380
#define AVGAIN 0x4381
#define BIGAIN 0x4382
#define BVGAIN 0x4383
#define CIGAIN 0x4384
#define CVGAIN 0x4385
#define NIGAIN 0x4386
#define DICOEFF 0x4388
#define APGAIN 0x4389
#define AWATTOS 0x438A
#define BPGAIN 0x438B
#define BWATTOS 0x438C
#define CPGAIN 0x438D
#define CWATTOS 0x438E
#define AIRMSOS 0x438F
#define AVRMSOS 0x4390
#define BIRMSOS 0x4391
#define BVRMSOS 0x4392
#define CIRMSOS 0x4393
#define CVRMSOS 0x4394
#define NIRMSOS 0x4395
#define HPGAIN 0x4398
#define ISUMLVL 0x4399
#define VLEVEL 0x439F
#define AFWATTOS 0x43A2
#define BFWATTOS 0x43A3
#define CFWATTOS 0x43A4
#define AFVAROS 0x43A5
#define BFVAROS 0x43A6
#define CFVAROS 0x43A7
#define AFIRMSOS 0x43A8
#define BFIRMSOS 0x43A9
#define CFIRMSOS 0x43AA
#define AFVRMSOS 0x43AB
#define BFVRMSOS 0x43AC
#define CFVRMSOS 0x43AD
#define HXWATTOS 0x43AE
#define HYWATTOS 0x43AF
#define HZWATTOS 0x43B0
#define HXVAROS 0x43B1
#define HYVAROS 0x43B2
#define HZVAROS 0x43B3
#define HXIRMSOS 0x43B4
#define HYIRMSOS 0x43B5
#define HZIRMSOS 0x43B6
#define HXVRMSOS 0x43B7
#define HYVRMSOS 0x43B8
#define HZVRMSOS 0x43B9
#define AIRMS 0x43C0
#define AVRMS 0x43C1
#define BIRMS 0x43C2
#define BVRMS 0x43C3
#define CIRMS 0x43C4
#define CVRMS 0x43C5
#define NIRMS 0x43C6
#define ISUM 0x43C7
#define RUN 0xE228
#define AWATTHR 0xE400
#define BWATTHR 0xE401
#define CWATTHR 0xE402
#define AFWATTHR 0xE403
#define BFWATTHR 0xE404
#define CFWATTHR 0xE405
#define AFVARHR 0xE409
#define BFVARHR 0xE40A
#define CFVARHR 0xE40B
#define AVAHR 0xE40C
#define BVAHR 0xE40D
#define CVAHR 0xE40E
#define IPEAK 0xE500
#define VPEAK 0xE501
#define STATUS0 0xE502
#define STATUS1 0xE503
#define AIMAV 0xE504
#define BIMAV 0xE505
#define CIMAV 0xE506
#define OILVL 0xE507
#define OVLVL 0xE508
#define SAGLVL 0xE509
#define MASK0 0xE50A
#define MASK1 0xE50B
#define IAWV 0xE50C
#define IBWV 0xE50D
#define ICWV 0xE50E
#define INWV 0xE50F
#define VAWV 0xE510
#define VBWV 0xE511
#define VCWV 0xE512
#define AWATT 0xE513
#define BWATT 0xE514
#define CWATT 0xE515
#define AFVAR 0xE516
#define BFVAR 0xE517
#define CFVAR 0xE518
#define AVA 0xE519
#define BVA 0xE51A
#define CVA 0xE51B
#define CHECKSUM 0xE51F
#define VNOM 0xE520
#define LAST_RWDATA_24bit 0xE5FF
#define PHSTATUS 0xE600
#define ANGLE0 0xE601
#define ANGLE1 0xE602
#define ANGLE2 0xE603
#define PHNOLOAD 0xE608
#define LINECYC 0xE60C
#define ZXTOUT 0xE60D
#define COMPMODE 0xE60E
#define Gain 0xE60F
#define CFMODE 0xE610
#define CF1DEN 0xE611
#define CF2DEN 0xE612
#define CF3DEN 0xE613
#define APHCAL 0xE614
#define BPHCAL 0xE615
#define CPHCAL 0xE616
#define PHSIGN 0xE617
#define CONFIG 0xE618
#define MMODE 0xE700
#define ACCMODE 0xE701
#define LCYCMODE 0xE702
#define PEAKCYC 0xE703
#define SAGCYC 0xE704
#define CFCYC 0xE705
#define HSDC_CFG 0xE706
#define Version 0xE707
#define LAST_RWDATA_8bit 0xE7FD
#define FVRMS 0xE880
#define FIRMS 0xE881
#define FWATT 0xE882
#define FVAR 0xE883
#define FVA 0xE884
#define FPF 0xE885
#define VTHDN 0xE886
#define ITHDN 0xE887
#define HXVRMS 0xE888
#define HXIRMS 0xE889
#define HXWATT 0xE88A
#define HXVAR 0xE88B
#define HXVA 0xE88C
#define HXPF 0xE88D
#define HXVHD 0xE88E
#define HXIHD 0xE88F
#define HYVRMS 0xE890
#define HYIRMS 0xE891
#define HYWATT 0xE892
#define HYVAR 0xE893
#define HYVA 0xE894
#define HYPF 0xE895
#define HYVHD 0xE896
#define HYIHD 0xE897
#define HZVRMS 0xE898
#define HZIRMS 0xE899
#define HZWATT 0xE89A
#define HZVAR 0xE89B
#define HZVA 0xE89C
#define HZPF 0xE89D
#define HZVHD 0xE89E
#define HZIHD 0xE89F
#define HCONFIG 0xE900
#define APF 0xE902
#define BPF 0xE903
#define CPF 0xE904
#define APERIOD 0xE905
#define BPERIOD 0xE906
#define CPERIOD 0xE907
#define APNOLOAD 0xE908
#define VARNOLOAD 0xE909
#define VANOLOAD 0xE90A
#define LAST_ADD 0xE9FE
#define LAST_RWDATA_16bit 0xE9FF
#define CONFIG3 0xEA00
#define LAST_OP 0xEA01
#define WTHR 0xEA02
#define VARTHR 0xEA03
#define VATHR 0xEA04
#define HX_reg 0xEA08
#define HY_reg 0xEA09
#define HZ_reg 0xEA0A
#define LPOILVL 0xEC00
#define CONFIG2 0xEC01

#endif /* __ADE7880_H__ */

作者

Generic_Author_image

Petre Minciunescu, 博士

Petre于2000年加入ADI公司,在电机控制和DSP部门担任多项系统工程师职务。他于1988年毕业于罗马尼亚布加勒斯特理工学院,获电气工程学位,并于1996年获得意大利都灵米兰理工大学博士学位。