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.

Low speed operation of low inductance PMSM motor

Other Parts Discussed in Thread: MOTORWARE, DRV8301, DRV8312

Hi,

I'm using motorware 1.01.00.09 with CCS project "proj5g".

I'm trying to run my motor to 100RPM with INSTASpin FOC with some problems. I've read that in an other forum post that Chris suggested increasing Rs of 20-25%.

My motor parameters are:

Ls_d, Ls_q = 0.000202

Rs = 1.0

Flux = 0.02260

n poles = 2

With this configurations the motor not runs correctly at 100RPM, but if I set Rs = 1.25 (disabling Rs recalc) the motor runs considerably better.

Why it happens, even if the identification of the Rs is correct?

If I still increase the Rs value, how the motor runs?

  • Make sure ForceAngle is disabled when testing the low speed performance. 

    Use the calculated Rs, make sure your res_est current is about 10% of rated. Rs is the dominant variable to FAST during low speed operation, but I'm not sure you're actually seeing an error here. It's possible of your Rs is actually changing due to a load and high current, that is why we created the Rs online for tracking this value during operation. 

    The speed Kp may need to be significantly higher than 20%, often several hundred percent. It really depends on inertia of your system. 

  • Chris thank you for your help.

    I've tried your guidances but with no good news.

    If I setup the Rs as it comes out from motor ID process and enable Rs recalculation the motor runs but it not support any load. If I apply a load to the shaft the motor stop to run.

    Instead if I disable Rs recalculation and use a value of the Rs of 125% of the identified value, the motor continue to run and increase the torque if a load was applied to the shaft. The current absorbed by the motor increase correctly until 1.5A (the motor is 4A rated).

    Increasing the load the motor stop to run and the controller cannot run the motor. 

    The inertia of my system is : 0.009068 evaluated with INSTASPIN-Motion project.

  • What HW are you using? Voltage of the motor? You are sure that your offsets are correctly saved in user.h and the same vales are loaded into the controller as described in the 3rd labs?

    Using InstaSPIN-MOTION you have the same effect (I want to make sure this isn't an issue of the speed control tuning kit commanding enough current fast enough)?  Is the output of the speed controller / input to the Iq controller saturating?

    You are talking about speeds just under 2 Hz so with most motors and proper scaling this should be no issue to have FAST provide proper feedback. You have ForceAngle DISABLED correct? What happens when you ENABLE? And in user.h what is max frequency (default 800 Hz) and low speed value (default 0.002)?

  • I'm using DRV8301 EVM with a F28069M control board to control a 24V PMSM motor.

    The offsets are ok, I have copied the result of the 3'rd lab into the user.h that I use in the project.

    I've made all of the projects with InstaSPIN-MOTION, obtaining this value:

    ST_MOTOR_INERTIA_A_PER_KRPM (0.009067982)

    ST_MOTOR_FRICTION_A_PER_KRPM (0.012714589)

    But I cannot find a correct bandwidth value in order to run properly. I think also that could be the speed control tuning kit cannot commanding enough current fast enough.

    Monitoring the PI speed and Iq variables I've notice that the PI speed output saturate. But the max value is generated by the TRAJ module.

    I've the ForceAngle enabled, the max frequency was 700Hz and the low speed value is set to 0.001, with this value we can leave enabled the FA?

    The max speed value of my 2 poles motor is 40kRPM (666HZ).

  • Alessandro,

    Some other thoughts, your flux (V/Hz) is quite small. This means at low frequency (your 100 RPM is 1.67 Hz) the Bemf from the motor is only 0.03V.  This small signal issue is exacerbated by the fact that the voltage scaling from the DRV8301 EVM is 66V, meaning you are looking at a signal that is essentially 2 counts of the 2^12 conversion and scaling.

    This is actually the same flux as the Anaheim motor that ships with the DRV8312 kit, and it is also on this 66V scaling can only run about 3-4 Hz withouth losing angle and providing proper torque.

    For your motor the first thing to do is to redesign the voltage scaling to something more like 33V. This will double your resolution and should get you close to the 1.67 Hz.

     

  • Hi Chris,

    sorry for late answer. Yes we have already change the resistor value to obtain a dynamic range more suitable for our motor.

    We have changed the voltage divider using this value (referred to the DRV8301EVM schematic rev D1):

    - R60 = R61 = R63 = 56k

    - R62 = R64 = R65 = 4k7

    With this value we obtain a Vmax of 42.6V .

    It could be improved? The motor is supplied at 32V. Can I scaling to 33V?

    Thanks!

  • you need to leave some headroom for bus variation.

    you could probably go a bit lower but I don't think it will help significantly.

    what is the filter bandwidth now for your voltage sensing? did you update this in user.h?

    have you reviewed Chapter 15 in SPRUHJ1 ?

    you can try adding a very small amount of negative Id to help align the field.

     

  • The filter bandwidth is now 367Hz updated in the user.h.

    I'have increased  the max and min value of the speed pid. This values was obtained by the function:

    TRAJ_getIntValue(obj->trajHandle_spdMax);

    and passed by the function:

    PID_setMinMax(obj->pidHandle_spd, outMin, outMax);

    Only to make a test I've modified the previous function:

    PID_setMinMax(obj->pidHandle_spd, 2 * outMin, 2 * outMax);

    in this way we got higher level of torque at low speed.

    I now this is not the correct way to do this, I have to understand which parameter manage this output of the TRAJ module.