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.

Problem during identification of LS in AC motor

Other Parts Discussed in Thread: TMS320F28052F

Hi all,

we have some problem during the Ls identification.

We are running the LAB2b with TI hvkit with TMS320F28052F, and we are using a 550W induction motor, 2 pole pair 230V delta connection 50Hz.

The first part of the identification run smooth, with a Rs and all others value in the right range.

Then we tight lock rotor with a wrench to execute the second part of the motor ID.

The Ls value immediately start to rise for 1-2 seconds, than it go down to value near to 0 mH. Sometimes (like in image) it happen that timeout occur before the complete descent of Ls value, but obviously this is not true identified value. Most of times however, it go near 0.

Then, it start identifing Rr (with reasonable value).

After motor ID, the motor run smooth, it's quiet, RPM error is negligible (0-3 rpm).

Searching the forum, we've seen that is possible to estimate the Ls from the Lhf value discovered during the first stage of the motor ID. This value is something like 0.0019 (i think 19mH), could it be useful? 

We have also changed the "USER_IQ_FULL_SCALE_FREQ_Hz" from 800 to 100Hz, without noticeable change.

I'll attach an image of the GUI during identification (in the graph, the Ls value), and our user.h.

P.S. as we are developing our board, using TMS320F28052F, we have used the internal PGA to amplify the current directly from shunt. As read in page 229 of spruhj1f , using positive feedback, we have added a "-" in the line

bias = OFFSET_getOffset(obj->offsetHandle_I[cnt]);

This was the only modification described in the guide.

As we didn't had a demoboard, we gone mad because with our board the motor started to spin to 1000 RPM or more immediately during RoverL fase of the ID. 

After two weeks of try and error, we had to bought the (expensive) hvkit.

Obviously, as the hvkit use negative feedback, all gone right, and after a lot of search, we found in TI forum that the function

pAdcData->I.value[X] = value;  

should be modified in

pAdcData->I.value[X] = - value;

Please add this note in the spruhj1f  to preserve the brain (and the work place) of other engineer :)

For the next release of the board, do you suggest to use the PGA directly to read shunt? Obviously, it's difficult to have a true GND kelvin connection using internal amplifier, probably it will be better to use external amplifier and eventually use the PGA to adapt amplification?

Thanks in advance

Matteo

7522.user.h

  • Induction motor ID is not as straightforward as the synchronous motor. It is especially challenging to make sure the rated flux / magnetizing current is executed properly and then to have a stable value for Ls identified. In your case the Ls is certainly wrong, and at least for a workaround you can use the Lhf value as a starting point instead.

    I would read through SPRUHJ1 chapter 6.6 again. Make sure you are actually reaching the RATED_FLUX value during ID. Adjust the USER_IDRATED_DELTA if required.

    Also, if your motor has a full nameplate look at chapter 4.8.2 and see if you can calculate by hand.
  • Hi Chris,

    Thank for your reply.

    Unfortunately we don't have full nameplate. And as we want to sell this equipment to different customer, this is a common situation.

    We think that Id rated identification has gone right because after ramp-up, the rated flux grow to 3.75 (0.8125*230/50) and then it is very stable (moving from 3.74 to 3.76 at least since timeout). During the next phase (rated flux) the value is much stable (3.75x) for some seconds.

    We have tried to add some time to timeout of Id rated identification, but as the 3.75 value is reached before timeout , the result don't change.

    How can I assume that this identification gone right?

    If then I lock rotor and start the LS identification  the flux start from 5, go down immediately to 3.5, and then rise slowly to 4 or more (if timeout don't happen, we have also change it). During this phase, the Ls value after an initial "bump" decrease to 0.00xx as described above.

    Also changing motor to a 1.5KW unit (and changing obviously USER_MOTOR_RES_EST_CURRENT and USER_MOTOR_MAX_CURRENT), the behavior is the same.

    We have tried to change USER_IDRATED_DELTA from 0.00002 to 0.0001 or also 0.00001. With 0.00001 flux value is more stable, but as I said, it change from the 3rd digit after the decimal point, I think this is not a problem. Are there any other parameter I can play with to try to reach an Ls value?

    ChrisClearman said:
    In your case the Ls is certainly wrong, and at least for a workaround you can use the Lhf value as a starting point instead.

    If I start from Lhf value, what "direction" I had to follow to identify the right value? If I change the Ls e.g. from 10mH to 20mH what difference I should expect in motor run?

    TIA

    Matteo

  • If the rated flux reaches the specified value then it - and the magnetizing current - should be correct.

    I believe the Ls issue is a matter of the variable number scaling / resolution and will probably be solved by something similar to what we did in proj_lab02c. As I mentioned this is a known issue that we believe we can fix, it just has to be prioritized.


    "If I start from Lhf value, what "direction" I had to follow to identify the right value?"
    There is no process to find the "correct" Ls from this data. You would just use the Lhf as Ls in your user.h file.
    There isn't really a single Ls value for a motor anyways, it changes with current. And the Ls can vary significantly and FAST will estimate reasonably enough for stable operation.