Part Number: LAUNCHXL-F28069M
Hi all,
I have some serious struggles in getting my PMSM moving in Instaspin Lab 12 a & b. The motor runs ok without the encoder in e.g. lab 5d. I'm using a small sized PMSM motor (http://www.namiki.net/product/dccorelessmotor/pdf/SOBL23-1207.pdf
The encoder seems to work as the values do update in "st_obj.vel.conv.Pos_mrev" in the watch window. The scale is from 0 to 1 during one mechanical rotation. Also, the direction should be correct and the phase should be plugged correctly. Noise shouldn't be a problem as this works also PWM's on. The PWM's go on once changing "enable system" and "run identify" to 1 but the motor aligns itself into a locked position, gives some small noise but does not move by increasing speed reference (or running inertia identification in 12a). Rs recalibration has been enabled.
Have also tried to tune the motor variables in user.h and they should be okay(ish). One of the challenges is that the stator d and q inductances of the motor seem to be really low and the automatic identification tracks it as something around 5*10^(-10)H. Measuring those with an oscilloscope have given results around 0.0002H. Rated flux is measured rather close to the plate values given. These are however been ok in previous unsensored labs. Tried also to change PWM frequencies up to 60Hz.
Below you'll find the user.h parameters.
//! \brief ADC current offsets for A, B, and C phases
#define I_A_offset (0.8304952979)
#define I_B_offset (0.831510365)
#define I_C_offset (0.8265882134)
//! \brief ADC voltage offsets for A, B, and C phases
#define V_A_offset (0.2917994261)
#define V_B_offset (0.2907087803)
#define V_C_offset (0.2908745408)
#define MY_MOTOR 113
#define USER_MOTOR MY_MOTOR
#elif (USER_MOTOR == MY_MOTOR)
#define USER_MOTOR_TYPE MOTOR_Type_Pm
#define USER_MOTOR_NUM_POLE_PAIRS (4)
#define USER_MOTOR_Rr (NULL)
#define USER_MOTOR_Rs (3.56)
#define USER_MOTOR_Ls_d (0.00007) //lowest value that the system takes without errors
#define USER_MOTOR_Ls_q (0.00007)
#define USER_MOTOR_RATED_FLUX (0.0022) // plate value
#define USER_MOTOR_MAGNETIZING_CURRENT (NULL)
#define USER_MOTOR_RES_EST_CURRENT (0.1)
#define USER_MOTOR_IND_EST_CURRENT (-0.1)
#define USER_MOTOR_MAX_CURRENT (0.45)
#define USER_MOTOR_FLUX_EST_FREQ_Hz (100) //have tried several values through out the range
#define USER_MOTOR_ENCODER_LINES (880)
#define USER_MOTOR_MAX_SPEED_KRPM (2.0)
#define USER_SYSTEM_INERTIA (0.0044) // values defined in sensorless inertia identification
#define USER_MOTOR_FRICTION (0.01)
#define USER_SYSTEM_BANDWIDTH_SCALE (1.0)
#define USER_PWM_FREQ_kHz (60.0)
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (2)
Not quite sure what to test next. I'm extremely grateful if someone has any good debug tips on this.