cancel
Showing results for 
Search instead for 
Did you mean: 

Speed not matching reference speed under load, but no errors are evident...

MRyan.7
Associate III

Hello,

Using the MCSDK monitoring tools, we have been able to drive our motor up to 6000 RPM with no issues when unloaded.

However, when we put the unit under load, then the desired and achieved RPM deviates somewhere around 4000 RPM. The system is not starved for current or voltage. The controller also clearly receives the commanded speed and does not perform poorly in any other way .... just that it does not go any faster. Here is a screenshot from the motor monitor showing what we see:

0690X000006Dym3QAC.png

It seems like the system may have reached a maximum torque limit in software (?). There are no error flags being set (we are using the sensorless+PLL observer in MCSDK 5.3.3).

We don't believe this is a case for flux weakening since an unloaded system has no issue achieving this.

Does anyone have any suggestions as to what we are seeing here and how to counter it?

1 ACCEPTED SOLUTION

Accepted Solutions

Hi Mr Yan,

it seems that the op amp gain is incorrect, could you check it ?

BR

Giuseppe

View solution in original post

7 REPLIES 7
MRyan.7
Associate III

The problem was resolved, but not clear why this was an issue. The "NOMINAL_CURRENT" define in pmsm_motor_parameters.h was generated from the MCSDK with a nominal current of 16A. This motor, at 4100 RPM was only pulling 6A. But this was the limiting factor in the output. The MCSDK has this note:

/* When using Id = 0, NOMINAL_CURRENT is utilized to saturate the output of the
   PID for speed regulation (i.e. reference torque).
   Transformation of real currents (A) into int16_t format must be done accordingly with
   formula:
   Phase current (int16_t 0-to-peak) = (Phase current (A 0-to-peak)* 32767 * Rshunt *
                                   *Amplifying network gain)/(MCU supply voltage/2)
*/

When we bumped the current to 30A in the motor parameter and regenerated code, this define went up and in test this artificial limit was now gone.

Can anyone answer why a nominal current entry of 16A would cause a limit at 6A instead? I know this isn't an amp limit but a torque reference, but the relationship is unclear.

Hi Mr Yan,

it seems that the op amp gain is incorrect, could you check it ?

BR

Giuseppe

Hello Giuseppe,

I've looked at this 20 times. But 21 was the charm! The op amp is fine. But we had a 3 milli-ohm value in the code generator, yet a 2 milli-ohm shunt resistor. The 2 milli-ohm is listed as 3W rating on the schematic so the optical illusion made the 3 milli-ohm seem ok. We haven't tried it yet, but this would definitely make the current sense code think it is pulling more amps than it really is. Surprised the system worked as well as it did actually!

Thank you!

very good !

Best Regards

Giuseppe

Laurent Ca...
Lead II

The question has been moved from the "Motor Control Hardware" section to the "STM32 Motor Control" section (the question is about the STM32 MC SDK). 

Best regards

 

 

Could you please specify the parameters you adjusted in the Motor Control Workbench or in the code? I'm experiencing reduced motor speed underwater, but the motor is not reaching its maximum current limit. If you could share more details, it would help me attempt similar adjustments.

Did you modify parameters in the Motor Control Workbench, Motor Pilot, or directly in the code?

Could you share which specific parameters were adjusted?