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.

LAUNCHXL-F28P55X: BEMF Constant and other motor parameters informations

Part Number: LAUNCHXL-F28P55X
Other Parts Discussed in Thread: MOTORWARE, LVSERVOMTR

Tool/software:

I am using the code of dual_axis_servo_drive with LAUNCHXL-F28P55X and BOOSTXL-3PhGaN.

--------------------------------------------------BACKEMF-----------------------------------------------------------------------------

I have a motor with 93Vrms/kRPM but I need to convert it to V/Hz to set parameter M1_KB (BEMF Constant).

   - If your "V" in "V/Hz" is Vrms, the value is 93.3/1000*60 = 5.598
   - If your 'V' in 'V/Hz' is intended as Vpk, the value is 93.3/1000*60*sqrt(2) = 7.917


Which of the two cases?

--------------------------------------------ELECTRICAL FREQ--------------------------------------------------------------------

Should I change M1_BASE_FREQ in the picture below?

What does it mean?

I remember that in the motorware there wereUSER_MOTOR_FREQ_LOWUSER_MOTOR_FREQ_HIGHUSER_MOTOR_FREQ_MAXUSER_MOTOR_VOLT_MINUSER_MOTOR_VOLT_MAX

which had to be set 10% and 100%-120% of the motor rated frequency and voltage ... I cannot find these parameters any more

--------------------------------------------ENCODER LINES--------------------------------------------------------------------

It is correct to say that:

M1_ENCODER_LINES = pulses per revolution (ppr) = counts per revolut / 4

Thank you.

  • Hi Shikhar,

    The expert is currently out of office and will get back to you as soon as possible. Thank you.

    Best Regards,

    Aishwarya

  • Apologies for the delay.

    The version of the code you're thinking of, with 'USER_MOTOR1_...' is code designed specifically to show the operation of the InstaSPIN-FOC FAST estimator and for sensorless FOC in general. This implementation is more designed around showcasing the sophisticated FCL (Fast Current Loop), with sensored motor speed/position estimation. The two projects work off of different basic frameworks. (Other sensorless projects in the MCSDK do use the other framework, e.g. the Universal Motor Control Lab).

    • BEMF
      • The BEMF/Flux is given in terms of Vpeak/Hz. Please note that most motor specs I've seen are given in terms of line-to-line values, while the listed value is line-to-neutral.
      • For anyone reading this and wondering how the default value of the project was derived, here's a (very) brief explanation: 
        • The default motor for the project is the 8 pole LVSERVOMTR motor, aka the Teknic M-2310-LN-04K.
        • The LVSERVOMTR given flux is 4.64 Vpeak/kRPM, per the motor datasheet (or the specs on the motor itself)
        • 4.64Vpeak/kRPM * (1 kRPM / 1000 RPM) * (1 RPM / (8/120) Hz) * (1 V(line-to-neutral) / 1 V(line-to-line) ) = 0.0402
        • Then, the InstaSPIN-FOC FAST motor ID routine (not present in this project) was used to refine that value, identifying that the actual value is typically closer to 0.039, which is the default value for M1_KB in this project.

    • Electrical Freq
      • M1_BASE_FREQ represents the maximum target speed you intend to bring the motor. In a per-unit representation, SpeedRef_Hz = 1.0 represents a target motor speed of M1_BASE_FREQ.
         
    • Encoder Lines
      • Yes.

    Regards,
    Jason Osborn

  • Hi Jason, thanks for the reply.

    So my BEMF calculations below are wrong?

    I did not understand your formula: if 1 kRPM / 1000 RPM = 1 then the formula reduces to 4.64Vpeak/kRPM * 120/8 = 69.6 (?)

    Here is what the supplier of my motor told me, tell me if it's correct:

    1) LET'S ASSUME: I want V/Hz with "Hz" = electric speed (you have to tell me whether M1_KB's Hz is electrical or mechanical):

    My motor has 93.3 Vrms/Hz --> 131.94 Vpeak/Hz -->  V/Hz = 131.94 Vpeak/Hz * 60/1000 = 7.91 [V/Hz]

    2) LET'S ASSUME: I want V/Hz with "Hz" = mechanical speed

    My motor has 93.3 Vrms/Hz --> 131.94 Vpeak/Hz -->  V/Hz = 131.94 Vpeak/Hz * 60/1000 / poles pairs = 0.989 [V/Hz]

    (..8 poles pairs)

    3) "M1_BASE_FREQ represents the maximum target speed you intend to bring the motor" .. so in my case I want 250rpm maximun --> M1_BASE_FREQ = 33.33Hz since 16 poles of the motor. 

    Why is used the per-unit representation?

  • Apologies for the long delay in response,

    I'll address each of your points in the order I see them in your post.

    • I mis-typed a step in my equation, I'm very sorry. 1 V(line-to-neutral) = sqrt(3) V(line-to-line), not 1. That gives you the right answer, and I'll edit my original post accordingly for anyone else referring to this thread. Sorry again.
    • In our documentation and in the majority of motor documentation and third party sources that I've seen, 'Hz' is typically going to refer to the electrical frequency, while RPM is used for mechanical. In my posts and in our motor control code, that's generally going to be a safe assumption if not outright stated.
    • 93.3 Vrms/Hz * (sqrt(2) Vpeak / 1 Vrms) * (V(line-to-neutral) / sqrt(3) V(line-to-line)) = 76.1791 Vpeak (line-to-neutral)/Hz.
      • Given that you state it's already in Hz, I'm not sure why you'd have additional conversions after that. If you meant to type kRPM instead of Hz:
      • 76.1791 Vpeak (l-t-n)/kRPM * (1  kRPM / 1000 RPM) * (1 RPM / (16 poles/ 120)) = 0.571343

    250RPM maximum is 33.3Hz, and in this case you would set M1_BASE_FREQ to 33.3Hz, as you said.

    • A per-unit speed reference of 1.0 represents a target speed of 33.3 Hz
    • A per-unit speed reference of 0.5 represents a target speed of ~16.6Hz
    • etc.

    Per-unit is used in some of our projects in 2 primary contexts:

    • Certain time-sensitive operations, particularly in our fixed-point libraries, use per-unit to minimize operation time
    • Certain memory-sensitive or utilization-sensitive projects use per-unit to minimize how many additional operations need to be executed

    It's often used elsewhere in our projects to facilitate one or both of those goals.

    Apologies again for the delay,
    Jason Osborn

  • Hi Jason, thanks for your reply.

    I honestly struggle to understand the formula you wrote, so I tried to rework the steps:

    ----------------------------------LET'S ASSUME from datasheet Ke = 93.3Vrms/kRPM line-to-neutral(LN)------------------------------------------

    1)   93.3Vrms,LN/kRPM --> 132Vpk,LN/kRPM

    2)   pp = pole pairs = 16/2 = 8

    3)   Hz = RPM*pp/60 --> RPM/Hz = 60/pp = 60/8 --> 7.5 RPM/Hz

    4)   132Vpk,LN/kRPM --> 0.132Vpk,LN/RPM (converted kRPM to RPM)

    5)   0.132Vpk,LN/RPM * 7.5 RPM/Hz = 0.99Vpk,LN/Hz

    6)   0.99Vpk,LN/Hz * 1/sqrt(2) = 0.69Vrms,LN/Hz

    ----------------------------------LET'S ASSUME from datasheet Ke = 93.3Vrms/kRPM line-to-line(LL)-----------------------------------------------

    1)   93.3Vrms,LL/kRPM --> 132Vpk,LL/kRPM

    2)   pp = pole pairs = 16/2 = 8

    3)   Hz = RPM*pp/60 --> RPM/Hz = 60/pp = 60/8 --> 7.5 RPM/Hz

    4)   132Vpk,LL/kRPM * 1/sqrt(3) = 76.21Vpk,LN/kRPM    (conversion from LL to LN)

    4b)   76.21Vpk,LN/kRPM --> 0.0762Vpk,LN/RPM (converted kRPM to RPM)

    5)   0.0762Vpk,LN/RPM * 7.5 RPM/Hz = 0.571Vpk,LN/Hz

    6)   0.571Vpk,LN/Hz * 1/sqrt(2) --> 0.4Vrms,LN/Hz

    -

    If my calculations are wrong, then I ask you to rewrite the final formula you wrote and replace the numerical values.:

    93.3 Vrms/Hz * (sqrt(2) Vpeak / 1 Vrms) * (V(line-to-neutral) / sqrt(3) V(line-to-line)) = 76.1791 Vpeak (line-to-neutral)/Hz

    Or, even better, correct my steps while keeping the same layout if possible so as not to confuse me.

  • I'm very sorry for the confusion- I was trying to be very clear to minimize the chance of confusion, and I'm afraid I may have overcorrected.

    Ke = Vrms/kRPM LN

    • Steps 1-5 are correct
    • Step 6 is unnecessary

    Ke = Vrms/kRPM LL

    • Steps 1-5 are correct
    • Step 6 is unnecessary

    You don't need to convert back to Vrms. This appears to be the only error. Notice in my last post, my final bolded value is 0.571343 Vpk/Hz (LN), and step 5 of your second set of equations is 0.571 Vpk/Hz (LN). These are the same, just different rounding.

    Apologies one more time for the confusion I introduced while trying to clarify.

    Regards,
    Jason Osborn

  • Thank you very much for the explanation.

    So, to conclude, in my case I will set M1_KB = 0.57 or 0.99 depending on whether 93.3Vrms/kRPM is line-to-line or line-to-neutral.

    Right?

    Do I ask the supplier of the motor datasheet for this information?

    Another piece of information, in V/Hz are the Hz mechanical or electrical? In our calculation, we assumed they were mechanical or electrical?

    EDIT: in case I have doubts about other parameters to set, can I continue asking in this thread or do I create a new one? Because they would always be doubts on the theme of this thread..

  • Your conclusion is correct.

    For determining line-to-line vs line-to-neutral, you can ask the supplier, but I've not had success trying that in the past. Most datasheets provide information in terms of line-to-line, though, so that is a common assumption you can make.

    For mechanical/electrical, like I mentioned before, RPM is mechanical and Hz is electrical, in typical cases. This is a common standard in this motor control, in my experience. For example, the conversion of Hz = RPM * pole pairs/60 makes the assumption that RPM is mechanical and Hz is electrical.

    As for your edit, if your questions are related specifically to determining appropriate unit conversions, feel free to continue them in this thread. If they're related to other things in the project, I'd suggest making a new thread.

    Regards,
    Jason Osborn