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)