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.

CCS/LAUNCHXL-F28069M: Best way to run a BLDC motor at the zero-speed startup.

Part Number: LAUNCHXL-F28069M
Other Parts Discussed in Thread: TMS320F28069M, DRV8305, MOTORWARE

Tool/software: Code Composer Studio

Hello,

My application requires a BLDC motor running at start-up or at a very low speed with full torque. 

So there will be minimal or almost zero bemf to run the motor. 

I am using: T-Motor MN7005-KV115 (out-rotor motor) with 5000 cpr optical encoder, c2000 TMS320F28069M with DRV8305 motor shield.

My current setting uses the lab12b (from the user lab manuals) as a default code, which uses an optical encoder as a position sensor.

However, when I actually run the motor, the estimated torque value from CCS is much bigger than what is actually measured.

(I compare the readings with loadcell readings during the stall condition)

My question is:

1. Is it true that almost no bemf would cause the significant torque drop at the stall? (about 34 % torque is dropped when I compare with the loadcell)

2. Would lab11e be a better solution?

It seems like lab11e is intended to work with the low-speed transition: providing BLDC control at zero-speed start-up and  FOC control with sufficient bemf signals.

However, I thought InstaSPIN-FOC and the FAST estimator provide more stability at zero speed. That is why I chose lab12b initially for my application.

3. I am using "ForceAngle" feature inside the lab12b. Is it something different from BLDC control mentioned from lab11e? 

My understanding was that when "ForceAngle" feature is on, the controller applies a certain current to kick off the motor, which I thought should be the same as BLDC control

mentioned in lab11e. 

4. Minor question: most of the time, the user manual uses terms PMSM motor. Yet I am using BLDC motor. Should I care about the difference? Such as changing the settings in the code.

Thank you very much for your help.

Sincerely,

  • 1. Sensorless-FOC is difficult to provide a stable torque output at very low speed with full/heavy load since the correct rotor position can't be estimated.

    2. It's only for low speed, not for running at zero speed as well. You might have to use the encoder based sensored-FOC per your requirement above.

    3. The "Force Angle" is just for a startup, is not a solution for running at zero/low speed.

    4. Both are similar. Call it BLDC if it's good to implement trapezoidal control and PMSM with sinusoidal BEMF. You might find a detailed description of this knowledge in some textbooks. 

  • Dear Yanming, 

    Thank you very much for your reply!

    I really appreciate your help.

    Therefore:

    If I use the encoder based sensored-FOC (which means, estimate the electrical angle based on the absolute mechanical angle), then I shouldn't worry about the techniques related to the Initial Position Detection for sensorless method, is it correct? 

    (In my setup, I modified lab12b to make the optical encoder that should function as an absolute encoder. I still get the constant torque loss so I was curious if there exists another way.) 

    Again, thank you so much.

    Sincerely,

  • You have to use the absolute encoder if you need the absolute mechanical angle. You still need to use the alignment method to get the initial position if you use the incremental encoder. The motorWare only provides examples using an incremental encoder, doesn't have the related example for an absolute encoder. Your question is engineering case, you have to add some special functions for starting/running the motor with a full load at zero speed if you are using an incremental encoder. Sorry, the InstaSPIN-motion just provides some examples as a starting point, not an end-equipment solution.

  • Dear Yanming,

    Thank you for your reply.

    I currently have the index pin-alignment code that utilize the sample code from TI. 

    (Basically, hitting the index pin, and reset the mechanical angle to the pre-programmed position, and get the electrical angle based on it for PWM generation)

    However, for some reason, I have smaller torque than the rated output of the motor, and that's why I asked the question to the community. 

    Based on your comments, I assume my torque loss is not something that can be solvable by taking other sample code from TI library because the angle estimation is already made from the mechanical encoder in my application. 

    I appreciate your help to clarify the idea!

    Sincerely,