AnsweredAssumed Answered

Reading User Energy Register with Reset in ADE9078

Question asked by MaurizioBianchi@PwrEng.IT on Jun 14, 2017
Latest reply on Jun 17, 2017 by MaurizioBianchi@PwrEng.IT

We're developing a hi-end power analyzer using ADE9078.
We followed instructions as in User Manual Rev.0 that is the most up to date revision we've found.

We communicate with ADE9078 using SPI interface with 2Mbps SCLK, the chip works with 12.288MHz crystal.

To initialize the chip, as suggested in User Manual, we did the following:

  • configured the xGAIN registers,
  • configured the ACCMODE register with 0x0000 (4-wire wye, 50Hz, Signed active and reactive power/energy accumulation mode),
  • configured the VLEVEL register with 0x00117514 as suggested in page 56 of User Manual,
  • configured the CONFIG0 register with 0x00000000 as we use a 800:1 Current Transformer

Additionally, as we need to read the energy register with reset, we followed what is stated at page 43 of User Manual:

  • configured the EGY_TIME register with 0x0001,
  • configured the EP_CFG register with 0x0021 (RD_RST_EN=1, EGY_LD_ACCUM=0, EGY_TMR_MODE=0, EGY_PWR_EN=1)

Finally we started the measurements by writing 0x0001 into RUN register.
We applied a 120W resistive load to and we were able to read correctly RMS Voltages and Currents, Power Factors, Active Power, Reactive Power, Active and Reactive Energies. 

Energies were requested to ADE9078 every 30 seconds and we got 1Wh on every reading as expected, good.

Then we changed our energy polling interval using a smaller one, the aim was to check the reliability of energy readings when the polling time was faster (in case of heavy loads), we expected to read 0Wh on the first 9 readings and we expected to read 1Wh at 10th reading. This is the advantage of reading the energy register with reset, as only the High byte will be reset upon reading, while the lower byte will not be cleared as described at page 43 of User Manual where we read under the paragraph Read User Energy Register with Reset the following:

if AWATTHR_HI is read, the AWATTHR_HI register value goes to zero. The AWATTHR_LO register contents are not modified. It is not recommended to read the xHR_LO registers with reset.

Hence we expected that, as the lower part of xHR was untouched, it was able to accumulate energy across time until the accumulated value was able to be seen in the xHR_HI register, but this isn't working or it's not working like that.

With 120W resistive load and energy polling interval of 3sec we got 0Wh energy only across all readings, and that's wrong as we are consuming energy that, after 10 readings and 30sec, should be sufficient to accumulate a value in the xHR_HI register. Isn't it?
The question is: what's wrong?
Is it possible to do what we're trying to obtain? If yes how should we operate to obtain this behaviour?
Thank You in advance,
/Maurizio

Outcomes