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.

MSP430F67791: Command 0x81 (IRMS) always gives bytes zero at byte position 9 and 10, thus wrong values

Part Number: MSP430F67791


We are currently comparing different energy metering IC solutions. We are primarily interested in measuring the current with a rogowski coil. For that, we use the TI MSP430F67791 for experimenting with a setup.

As we are not interested in using the EMDC GUI in production, we have modified the default example firmware EVM430-F6779_RC_3V_3C_50Hz to communicate via UART at 115200 Baud with our system.

For some reason, we do not receive correct IRMS values and when adjusting the current scaling factor (EM_userConfig.c) the values do not consistently increase, as one would expect. We see an increase in the beginning (at lower values, 10-100 scaling factor). When going further, the values start to decrease again.

When looking at the raw bytes of the command 0x81 message, the bytes 7 to 10 are supposed to hold the RMS current (https://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/EnergyMeasurementDesignCenter/1_40_00_03/release/EnergyMeasurementDesignCenter_1_40_00_03/docs/users_guide/html/Energy_Measurement_Technology_Guide_html/markdown/ch_comm_protocol.html#command-0x81-irms-result).
However, we observe that bytes 9 and 10 are always zero - even if setting the current scaling factor to very high numbers or increasing the current output. It does not seem like the full uint32_t range is being used...

Due to the fact that your EM library is precompiled, it forbids access to inspect what is going wrong. Thus, we are currently considering to set your product aside.

Can you assist in a solution to inspect why we can't seem to get the values to increase? Thank you in advance!

  • Let me involve our e-meter expert later.

  • To clarify: we tried to increase the current scaling factor (currentSF) in EM_userConfig.c to calibrate the IRMS values.

    However, it is unclear how the _IQ format specifier has to be set. We noticed that selecting the next (lower) _IQ specifier resulted in the reading to be halved. Please see the following table. Why is that happening? Why does the choice of _IQXX influence the result?

    The table shows the values for this setup: SD24_B_GAIN_4 and a generated current RMS of 100 A.

    For some reason, we are unable to increase the scaling factor to an extent where it matches the actual, generated IRMS of 100 A. As you can see, the results (hundreds of uA) are very far away...

  • Eason from our team will help with the issue. Thanks.

  • Hi,

    Can you use our GUI to go though the calibration process to see whether the detection result is right? Or can you check the current value in debug mode with the method shown as bellow.

    Here is the IQ math, it uses fix value to represent float value. 

    If the ADC detection data is right, the output current value should be right too.

    Eason

**Attention** This is a public forum