AnsweredAssumed Answered

ADE7953 sample code question

Question asked by Jake01 on Nov 10, 2016
Latest reply on Jan 18, 2017 by Godson

Hi,

 

I was able to download below sample code for ADE7953 in ADI website.

Can anyone answer to my questions?

 

Q1. Meaning of 662/6330 in ActivePower EQ?

Q2. Meaning of 200/16836 in IrmsA EQ?

Q3. Meaning of 1/84 in IrmsB EQ?

Q4. Meaning of 1/200 in Vrms EQ.

Q5. For FrequencyA, I think it should be 223Khz/DATA_PERIOD.wordL.low. Am I correct?

Q6. Why Multiply 1000/32768 for PowerFactor?

 

= Downloaded sample code(Metering.c) =

 ActivePowerA = DATA_AWATT.F_DATA;
 if(ActivePowerA & 0xff800000) ActivePowerA = 0 - ActivePowerA;
 ActivePowerA = ActivePowerA * 662/6330;
 ActivePowerB = DATA_BWATT.F_DATA;
 if(ActivePowerB & 0xff800000) ActivePowerB = 0 - ActivePowerB;
 ActivePowerB = ActivePowerB * 662/6330;
 
 ReactivePowerA = DATA_AVAR.F_DATA;
 if(ReactivePowerA & 0xff800000) ReactivePowerA = 0 - ReactivePowerA;
 ReactivePowerB = DATA_BVAR.F_DATA;
 if(ReactivePowerB & 0xff800000) ReactivePowerB = 0 - ReactivePowerB;
 IrmsA = DATA_IRMSA.F_DATA*200/16836;
 IrmsB = DATA_IRMSB.F_DATA/84;
 Vrms = DATA_VRMS.F_DATA / 200;
 FrequencyA = 22375000 / DATA_PERIOD.wordL.low;
 PowerFactorA = DATA_PFA.wordL.low;
 if(PowerFactorA > 0x8000)PowerFactorA = PowerFactorA - 0x8000;
 PowerFactorA = (unsigned long)PowerFactorA*1000/32768 ;
 PowerFactorB = DATA_PFB.wordL.low;
 if(PowerFactorB > 0x8000)PowerFactorB = PowerFactorB - 0x8000; 
 PowerFactorB = (unsigned long)PowerFactorB*1000/32768 ;

Outcomes