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)