Post Go back to editing

Incorrect current readings on A channel while correct on B channel

Thread Summary

The user is experiencing incorrect current readings on channel A of the ADE7953 meter ICs when measuring CTs, while channel B readings are closer to accurate but show an 84mA offset. The solution involved grounding one side of the CT secondary, which reduced the offset to 0.350A on each channel and improved the accuracy of the readings. The user also adjusted the antialiasing filters as suggested in the datasheet.
AI Generated Content
Category: Hardware
Product Number: ADE7953

Hello.  I use (3) of this ADE7953 meter IC to measure (6) CTs. 

Problem: I'm able to read current on channel B of each chip, but channel A seems to be nonsense.  B channel is much closer to accurate, though I do see 84mA when there should be zero.

Configuration: Each of the (3) meter chips have their (2) current inputs and I’m using all 6.  A CT is connected to each meter input and I’m switching current through only one of them (relay 6, global input 5 / input B of meter 2) expecting 5.287A as read by a fluke meter, reading 52.8mV across the 10ohm burden resistor.

 

Attached is the relevant code and resulting log.  The log prints out measurements as it queries each of the (3) meter chips every second:

Board0 Meter0 216=0x0186BD 217=0xFFD1D8 21A=0x0DC1F7 21B=0x006285 228=0x12C500 22A=0x0060AF 280=0x400000 28C=0x400000 286=0x000000 292=0x000000 (A=1.765A, B=0.049A)

Board0 Meter1 216=0x016B19 217=0xFFE52C 21A=0x02D1AA 21B=0x00329C 228=0x01AE77 22A=0x0088B1 280=0x400000 28C=0x400000 286=0x000000 292=0x000000 (A=0.362A, B=0.025A)

Board0 Meter2 216=0x0238E8 217=0xFFB63A 21A=0x0D8BD8 21B=0x0098A5 228=0x0E9BF7 22A=0x543DF4 280=0x400000 28C=0x400000 286=0x000000 292=0x000000 (A=1.738A, B=0.076A)

 

In the log, I switched power ON to meter 2 as seen with:

Relay 6 pulse on

GSO WRITE: board=0 value=0x1800

GSO MCP READBACK: board=0 wrote=0x1800 read=0x1800

Outlet relay 6 ON pulse started (board=0 local=6)

GSO WRITE: board=0 value=0x1000

GSO MCP READBACK: board=0 wrote=0x1000 read=0x1000

Outlet pulse ended (board=0 bit=11)

 

From there, I can measure the 52mV on the burden resistor R15 and readings go from:

Board0 Meter2 216=0x0AAD04 217=0xFFAEF4 21A=0x0D6DBE 21B=0x00A823 228=0x0E6233 22A=0x007C65 280=0x400000 28C=0x400000 286=0x000000 292=0x000000 (A=1.722A, B=0.084A)

-to-

Board0 Meter2 216=0x015C72 217=0xE20797 21A=0x0F1AFC 21B=0x29EC52 228=0x0E6233 22A=0x543DF4 280=0x400000 28C=0x400000 286=0x000000 292=0x000000 (A=1.938A, B=5.377A)

 

>> B channel clearly changes and is close to the right value, so good for now.  Before switched on, B channel shows 84mA, so something is wrong, but not the main concern.  It is the A inputs that should read near zero that are the problem.  Example, A=1.722A – should be near zero.

 

Configuration of each meter is like this:

    if(!gsoWriteReg8(GSO_ADE7953_ADDR, 0x00FE, 0xAD))

        return false;

 

    if(!gsoWriteReg16(GSO_ADE7953_ADDR, 0x0120, 0x0030))

        return false;

 

    if(!gsoWriteReg16(GSO_ADE7953_ADDR, 0x0102, 0x0000))

        return false;

 

    if(!gsoWriteReg8(GSO_ADE7953_ADDR, 0x0008, ADE_PGA_GAIN_2))

        return false;

 

    if(!gsoWriteReg8(GSO_ADE7953_ADDR, 0x0009, ADE_PGA_GAIN_2))

        return false;

 

    delay(500);

 

    uint16_t runreg;

    gsoReadReg16(GSO_ADE7953_ADDR, 0x0120, &runreg);

    Serial.printf("RUN reg runtime = 0x%04X\n", runreg);