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.

TMS320F28054M: Unable to identify custom motor using InstaSPIN MOTION

Part Number: TMS320F28054M
Other Parts Discussed in Thread: C2000WARE-MOTORCONTROL-SDK, TMS320F280039C, TMS320F280025C, TMS320F2800137, LAUNCHXL-F28069M, BOOSTXL-DRV8305EVM

Hi,

Today I ran into a strange issue I have not experienced before. I have a custom outrunner-motor with 14 magnet poles and 12 coils. It is a relatively small motor that can produce about 0.5 Nm at our current system voltage (16 V).

I tried to run the identification algorithm (lab 2c), but it was not able to do the ramp-up phase in the estimator - and therefore also not able to identify flux and inductance. I tried several motors, and several PCBs, but they all gave the same result. The motor was not able to spin around during ramp-up and was only vibrating slightly. However, when I turned the USER_MOTOR_RES_EST_CURRENT = 10 A, it started spinning sometimes, but not consistently. It also suddenly stopped moving at the end of the ramp-up. However, there is very little resistance in the system and it should not require this much current to make it move. The Rs value was estimated to about 0.004-0.007 consistently.

I find this very strange, as the motor I was testing is not very different from previous motors I've used with InstaSPIN. There is one major difference though: The previous motor had Rs~=0.058 - which is about ten times higher.

I used a custom PCB, which has a bad ADC resolution at this system voltage. It is designed for 26 V, but I am currently limited to 16 V.

So my question is: Why am I not able to run the motor in open loop, and what can I do to make it work?

Here are my default parameters, based of a similar motor:

#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (7)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (0.005)
#define USER_MOTOR_Ls_d (9.5e-06)
#define USER_MOTOR_Ls_q (9.5e-06)
#define USER_MOTOR_RATED_FLUX (0.018)
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (3.0)
#define USER_MOTOR_IND_EST_CURRENT (-3.0)
#define USER_MOTOR_MAX_CURRENT (16.0)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (76.0)
#define USER_MOTOR_ENCODER_LINES (5.0)
#define USER_MOTOR_MAX_SPEED_KRPM (6.5)
#define USER_SYSTEM_INERTIA (0.121264)
#define USER_SYSTEM_FRICTION (0.30)
#define USER_SYSTEM_BANDWIDTH_SCALE (20)
#define USER_ENC_SAMPLE_PERIOD \
(USER_ISR_FREQ_Hz / USER_NUM_PWM_TICKS_PER_ISR_TICK) / \
(USER_MOTOR_MAX_SPEED_KRPM * 1000 / 60 * 2)

  • Edit: Forgot to add that the motor is rated for 6500 RPM

  • Jorgen,

    1. have you tried to ID / Run this motor with a TI EVM ?   That would be the first place to start to eliminate any hardware issues. 

    Is the motor very easy to turn, or is there significant cogging torque?

    These high-speed motors are not really designed for high-speed advanced control. They often have extremely large short circuit current with very low inductance, which isn't really necessary if you were designing the motor to do the same job knowing you were going to do FOC.  But we can usually make it work.  The ID can be challenging, and then high-speed control may also have challenges due to the very poor current waveforms.  

    Is this motor appropriately chosen for your application? I looked at your website and I would think you would use a different type of motor design.  These outrunners are typically used in drones or hooked up to a gearbox system for higher torque traction type applications. 

    If you are early in a design I would recommend you look at newer C2000 products

    2. newer products will have better features / performance / cost / long-term availability / support / newer & better software / examples with latest EVMs and 3-ph motor drivers / functional safety support

    3. The only caveat is InstaSPIN-MOTION is only supported on the older F2806xM and F2805xM products.  With newer generation we support InstaSPIN-FOC and eSMO for sensorless; and have solutions for hall, resolver, incr encoder, abs encoder for Sensored.  All of this is through C2000Ware-MotorControl-SDK 

    If you are interested in the newer products I can help you select the best starting point from these series:

    TMS320F280039C 

    TMS320F280025C

    TMS320F2800137

  • per 1 let us know how testing goes using LAUNCHXL-F28069M and BOOSTXL-DRV8305EVM

  • Yes. I will do this first thing tomorrow.

  • Okay, so I have tested the motor in our lab today, and the motor itself is fine. Looks like there is some differences in on the PCB that causes this behavior. I will have to do a proper investigation of the HW, and then come back to you in two weeks time (holiday break next week).

  • Good to hear this, let's know if have any further questions. Seems like the issue could be from your own hardware board as Chris mentioned. You may have to check the current and voltage sensing signals are good for motor control. lab01b or lab01c can be used for hardware verification.