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.

TMDSCNCD280025C: Question about motor identification problem

Part Number: TMDSCNCD280025C
Other Parts Discussed in Thread: DRV8353RS-EVM

Dear support team.

I have successfully run one of our motor using DRV8353RS-EVM + TMDSCNCD280025C.

This motor was properly identified using DMC level 4.

The result was something like this:

#define USER_MOTOR1_TYPE MOTOR_TYPE_PM
#define USER_MOTOR1_NUM_POLE_PAIRS (4)
#define USER_MOTOR1_Rr_Ohm (NULL)
#define USER_MOTOR1_Rs_Ohm (0.285154581)
#define USER_MOTOR1_Ls_d_H (0.00202809973)
#define USER_MOTOR1_Ls_q_H (0.00202809973)
#define USER_MOTOR1_RATED_FLUX_VpHz (0.191983)
#define USER_MOTOR1_MAGNETIZING_CURRENT_A (NULL)
#define USER_MOTOR1_RES_EST_CURRENT_A (1.0f)
#define USER_MOTOR1_IND_EST_CURRENT_A (-0.8f)
#define USER_MOTOR1_MAX_CURRENT_A (3.0f)
#define USER_MOTOR1_FLUX_EXC_FREQ_Hz (50.0f)
#define USER_MOTOR1_OVER_CURRENT_A (6.5f) // A
#define USER_MOTOR1_RATED_VOLTAGE_V (24.0f)

This motor is designed for 48V DC link voltage.

I have other motors that I want to be sure that I can drive sensorless with your software. Those different motor are not rated for the same voltage. One is for 24V, one for 110V, one for 300V (I plan to use HVkit for this one).

Unfortunately, I'm not abble to identify the other motors due to different problems (motor stops after ramp up, overcurrent, etc....)

With the help of this document:

https://www.ti.com/lit/ug/spruhj1i/spruhj1i.pdf?ts=1657101811492&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FMOTORWARE

I made some progress but I still have some problems.

My first question is related to USER_MOTOR1_RATED_FLUX_VpHz.

When the motors run during identification, the value motorSetVars_M1.flux_VpHz is quite stable but when motor stops, the value oscillate and is quite different.

Which value should I use in user_mtr1.h?

As an example on one of my motor, when motor runs value is 0.1066 but is 0.15 when motor is stopped after identification.

  • It's a bug, please copy the identified value when the  "motorVars_M1.estState" is EST_STATE_LS. The bug will be fixed in the next release version MCSDK.

  • OK, thank you for the answer

    The second motor is also running now using DRV8353RS-EVM + TMDSCNCD280025C.

    Question now about power calculation:

    There is already calculated power in motor_common.c but the result is not accurate on my side (motorVars_M1.powerActive_W). Are you sure the formula is the formula to calculate the ACTIVE power (angle between voltage and current is not considered)?

    There are some olds topics on the forum with others power calculations but as those are very old, I'm not sure if I can still used it as written:

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/556743/calculate-supply-current-from-instaspin-foc-signals

    Please let me know and have a good week end.

    Regards. 

  • It's the output power of the inverter to the motor, not the input power of the inverter, and not the output power of the motor.

  • Yes this is clear for me but difference is too big to be related to efficiency of the inverter and also I can have at some operating point the output power (calculated in motor_common.c) higher than the input power (measured). This is not possible.

  • You may try to use "motorVars_M1.powerReal_W" that's the output power of the motor. 

    The calculation value of motorVars_M1.powerActive_W is not correct if the mode of SVM ( motorVars_M1.svmMode = SVM_MIN_C) is DPWM_MIN mode. You may search SVM_MIN_C in motor1_drive. c and change the SVM_MIN_C to SVM_COM_C. The calculation value of motorVars_M1.powerActive_W will be correct.

  • OK I will try later because now I'm back on the HVkit and 300V motor.

    First I try it a a low voltage (90V) and I have change the voltage divider on the HVkit using the jumper. I also change the voltage range in SW using the macro.

    I'm able to identify the motor but I'm not abble to run it because I have a moduleOverCurrent error. I can see a short duration current pulse in the winding (less than 1A) and that's all.

    I'm not abble to identify why the fault is set.

    If I'm right, this is harware overcurrent, but the value is too low to trigger the overcurrent threshold and I can't see any trigger on the output of comparator on HVkit.

    I'm not abble to correctly follow the signal on schematics beetween the HVkit and TMDSCNCD280025C (using 180 to 100 adapter), pin numbering is strange so I'm not sure about the signal which is used for triggering moduleOverCurrent.

    Can you help me to try to fix this?

    My motor is around 150W @ 300Vdc so the current should be ok.

    Edit:

    Last test I have done : I have enabled flying start and I spin it by hand before starting. In that case it run, so My problem seems to be related to starting from zero speed, probably during force angle.

    Regards.

  • it seems that I was wrong regarding moduleOverCurrent. This doesn't seems to be related to harware comparator on HVkit but internal comparator.

    Changing USER_MOTOR1_OVER_CURRENT_A   help me to solve the moduleOverCurrent error.

    Can you please explain where in the code USER_MOTOR1_OVER_CURRENT_A is used to change the threshold? I can not find it.

    Now that moduleOverCurrent is no more trigered, start up is not fine but I Will try to tune it.

    Regards

  • Yanming is currently out of the office, please expect our next reply by this Friday the 15th.

    Best,

    Matthew

  • OK, I can wait, no problem.

    For information, I have been abble to tune the start up in order to have it successfull.

    I'm still interested to have the answer to this question regarding moduleOverCurrent:

    Can you please explain where in the code USER_MOTOR1_OVER_CURRENT_A is used to change the threshold? I can not find it.

    EDIT : I found it by myself in calcMotorOverCurrentThreshold.

    And also it was difficult to tune because it was difficult to determine which parameter is related to the maximum current during force angle. FInally by changing a lot of parameters, I found this was USER_MOTOR1_FLUX_CURRENT_A    but regarding the name of the parameter, it is not obvious.

    Is it plan to have an updated document with all the parameters?

    The one I use is not up to date:

    https://www.ti.com/lit/ug/spruhj1i/spruhj1i.pdf?ts=1657101811492&ref_url=https%253A%252F%252Fwww.ti.com%252Ftool%252FMOTORWARE

    EDIT:

    According to power calculation (few post before), changing the SVM_MIN_C to SVM_COM_C helps but I still have around 10W more at the output of the inverter (calculated) than at the input (measured). I still think the formula used is for apparent power, not active power.

    motorVars_M1.powerReal_W seems to be OK but difficult to verify, but in my application, I need to measure electrical power, not mechanical.

    Do you think the power calculation using Vd, Id, Vq, Iq can be more efficient? 

    Regards.

  • Is it plan to have an updated document with all the parameters?

    No plan to update the InstaSPIN user's guide. Most of the parameters in Universal lab are for the additional engineering features, not related to the FAST estimator. We only plan to simplify the control parameters and update the Universal lab guide.

    Do you think the power calculation using Vd, Id, Vq, Iq can be more efficient?

    The powerActive_W is the output power of the inverter to the motor, the powerReal_W is the output power of the motor to the load.

    You can try to use the Alpha-Beta axis voltage and current to calculate the output power of the inverter, not the d-q axis.