This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

INA239: Exceeding The "Maximum Expected Current"

Part Number: INA239

Hello all,

When the current in my system exceeds what the datasheet calls the "maximum expected current" or "maximum current to be sensed" or "overcurrent fault threshold" or "Imax" I observe that the CURRENT register calculation is 0, as opposed to being clamped or saturated at the maximum possible value.

Is this intentional? Won't this give a false indication of a 'safe' condition?

P. S. I realize that the VSHUNT register can be used in tandem to confirm what's going on here, however my question still remains about why this is even necessitated.

Thank you for your time,

Oswin Rodrigues

  • Hello Oswin,

    During this condition, I would actually expect the CURRENT register to be maxed out...  can you send me the value from all of the device registers, as well as the actual expected current value and shunt resistor value used for this test so that I can better analyze the situation?

  • Hello Mitch,

    Thanks for your response; my apologies for not getting back to you sooner.

    Below I have pasted a couple samplings of all the registers. The first half (rows 2-6) is with a current of 1A and the latter half (rows 7-12) is using 4A. The SHUNT_CAL value is computed using a maximum expected current of 3A and a shunt resistance of 0.01Ω.

    CONFIG, ADC_CONFIG, SHUNT_CAL, VSHUNT,  VBUS,    DIETEMP, CURRENT,  POWER,      DIAG_ALRT,  SOVL,    SUVL,   BOVL,    BUVL, TEMP_LIMIT, PWR_LIMIT,  MANUFACTURER_ID, DEVICE_ID
    0x0,    0xfb68,     0x2ee,     0x77b,   0x1e6f,  0xbc0,   0x28c4,   0x135be3,   0x3,        0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x774,   0x1e6e,  0xbc0,   0x28d4,   0x1369c4,   0x3,        0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x77a,   0x1e6f,  0xbc0,   0x28bf,   0x136017,   0x3,        0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x77c,   0x1e6f,  0xbc0,   0x28c8,   0x1363f3,   0x3,        0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x774,   0x1e6e,  0xbc0,   0x28c9,   0x136474,   0x3,        0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x1e0c,  0x1e65,  0xbc0,   0x0,      0x0,        0x203,      0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x1e0a,  0x1e64,  0xbc0,   0x0,      0x0,        0x203,      0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x1e10,  0x1e64,  0xbc0,   0x0,      0x0,        0x203,      0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x1e01,  0x1e63,  0xbc0,   0x0,      0x0,        0x203,      0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x1e01,  0x1e63,  0xbc0,   0x0,      0x0,        0x203,      0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    0x0,    0xfb68,     0x2ee,     0x1e0f,  0x1e64,  0xbc0,   0x0,      0x0,        0x203,      0x7fff,  0x8000, 0x7fff,  0x0,  0x7ff0,     0xffff,     0x5449,          0x2391
    

    Hope this helps. Let me know if I can provide any more context to help debug this. Thanks!

    Warm regards,
    Oswin Rodrigues

  • Hello Oswin,

    Thank you for sending that data, I was able to reproduce your results....  I have reached out to the design team to see if they can offer some clarification on this.

  • Hello Oswin,

    Just realized that the MATHOF bit is set in the DIAG_ALRT register. The description for this is: "This bit is set to 1 if an arithmetic operation resulted in an overflow error. It indicates that current and power data may be invalid".

    So it looks like there is an overflow error with your specific settings.  If you expect the current on the line to go up to 4A, then you could use that value as the maximum expected current instead.  This way you won't get that error when 4A is on the line. 

  • Hi Mitch,

    Thanks for the swift reply. I understand that this problem arises from having exceeded the "maximum expected current" configuration. This was indeed the starting premise of my original question.

    My concern, however, lies in how the INA responds to this situation: it 'overflows' to 0 rather than saturating at the maximum value. This would give the false impression of a safe condition when there is actually an overcurrent fault.

    Increasing the "maximum expected current" won't work for an unexpected overcurrent fault condition. (Besides, increasing it too much beyond the "expected" case will result in compromised precision, seeing that this maximum value determines the size of the LSB.)

    I hope what I'm saying makes sense?

    Cheers,
    Oswin Rodrigues

  • Hello Oswin,

    Ya, I see what you are saying, ideally it would always show maxed out when exceeded.  I did hear back from the design team, and it sounds like due to all the internal calculations it is possible in some situations to not show maxed out due to internal overflow. So, on the inverse, that makes me think that not all situations where the maximum expected current is exceeded will have this happen. So the best solution for you is probably to monitor the ALERT system to look for MATHOF flag and/or set a shunt over voltage flag to be alerted when the current is too high.

  • Hi Mitch,

    Thanks for clarifying. This answers my original question about whether such behaviour is intentional, cheers!

    Best,
    Oswin