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.

TMS320F280025: Flying start evaluation

Part Number: TMS320F280025
Other Parts Discussed in Thread: LAUNCHXL-F280025C, DRV8353RS-EVM, DRV8353, TMDSCNCD280025C

Dear all,

As discussed a few weeks ago, I start evaluation of the TI sensorless solution.

I use DRV8353RS-EVM + LAUNCHXL-F280025C.

I start by incremental level 1 and then directly to level 4 because my motor was not identified.

It works fine (exept speed regulator is not perfectly stable but, I will try to tune it latter).

My question is regarding flying start, as descibed in the universal project and lab user guide, level 4 can be used to evaluate it:

But this is not documented, does it mean flying start is already functionnal or do we need to change the software?

Regards.

  • I start by incremental level 1 and then directly to level 4 because my motor was not identified.

    The motor must be identified and run with the identification parameters in BUILD LEVEL 4.

    But this is not documented, does it mean flying start is already functionnal or do we need to change the software?

    Yes, it's functionals. You just need to enable the feature and set a few parameters as below in user_mtr1.h or motor1_drive.c according to the system and motor.

        obj->flagEnableFlyingStart = true; 

    obj->flyingStartTimeDelay = (uint16_t)(objUser->ctrlFreq_Hz * 0.5f); // 0.5s

    #define USER_MOTOR1_SPEED_FS_Hz            (3.0f)

  • Thank you for your help!

    This works perfectly. Also now the speed is calculated even when motor is not driven, I like this.

    Regards

  • I just see a small issue,

    My max motor current is set to 3A:

    #define USER_MOTOR1_MAX_CURRENT_A          (3.0f)

    but when I add a load to the motor, the current is limited to 1.5A peak (in the motor winding, measured with scope and current probe) .

    In the debug windows, I can see that for the sofware, the current is 3A :

    This is probably related to current scaling:

    //! \brief Defines the maximum current at the AD converter
    //#define USER_M1_ADC_FULL_SCALE_CURRENT_A (94.28571429f) // gain=5
    #define USER_M1_ADC_FULL_SCALE_CURRENT_A (47.14285714f) // gain=10

    But I'm not abble to check the gain in DRV8353RS-EVM (if I'm right, gain is set by software to the driver but I can not find where it is done in the SW).

    Can you help me?

    Regards.

  • Set the "drvicVars_M1.readCmd = 1;" to read back the setting values of the control registers of the DRV85353RS to check if the gain is set correctly.

    Set the over current limitation value according to the inverter or the motor.

    #define USER_MOTOR1_OVER_CURRENT_A         (8.5f)           // A

    The USER_MOTOR1_MAX_CURRENT_A  is the maximum torque current, not the peak/RMS current of the motor phase.

  • Set the "drvicVars_M1.readCmd = 1;" to read back the setting values of the control registers of the DRV85353RS to check if the gain is set correctly.

    The read back gain is 5VpV:

    But in the SW it is set to 10VpV : 

     drvicVars_M1.ctrlReg06.bit.CSA_GAIN = DRV8353_Gain_10VpV;

    And by measurement, real gain is 20VpV because at amplifier output I measure 1.87V for 1.5A:

    Vs = 1.65 + 20 * 1.5A * 0.007Ohms = 1.86V.

    For information 20VpV is default value of DRV8353.

    By correcting full scale current :

    #define USER_M1_ADC_FULL_SCALE_CURRENT_A         (23.57142857f)     // gain=20

    Now real measure and microcontroller measure match.

    I can only think that communication between microcontroller and DRV8353 is not working and default value are used.

    Can it be a faulty board or an error in the kit?

    Regards.

  • I double check the HW set up and see that I miss this:

    Make the J1-17 (IDRIVE), and J1-19 (VDS) on DRV8353RS-EVM disconnect to LAUNCHXL-F280025C as shown in Figure 2-5.

    But once disconnected, It doesn't work any more due to a moduleOverCurrent fault.

  • It seems main issue are now OK.

    Removing J1-17 and J1-19 seems to solve the current measure gain issue (verified by measure, gain is now 10, so I go back to the original current scale).

    For the overcurent fault, this is relative to readCmd, each time I set readCmd to one, the drive goes to fault ( and only a power down clear the fault).

    Any idea? I will try to make the jumper between J2-12 and J2-19 shorter and I will let you know.

    Regards.

  • I have shorten the jumper but there is still an issue with readCmd which create faults.

    It change the amplifier setting, the output of current amplifier jump to 3V instead of 1.65V (no current).

    I need to do a writeCmd to go back to initial configuration and run the motor again.

    But if I make 2 successive read, write doesn't solve the issue (seems default parameter are overwritten by read parameters).

    Not a big issue for me because I will not use DRV8353 but perhaps a fix will help for the future.

    Regards

  • Don't set the readCmd  to read the registers when the motor is running. The readCmd is only for debugging or check the fault status when the motor is stopped with fault.

    Change the ADC scale current value (USER_M1_ADC_FULL_SCALE_CURRENT_A) accordingly if you change the CSA gain.

  • Hello,

    I have another question (please let me know if it is better to ask a new question instead of replying to this one):

    I would like to measure the speed even if the motor is not driven.

    Actually at power up this is not done, estState = EST_STATE_IDLE but once the motor has run and is stoped, estState = EST_STATE_ONLINE and speed mesure is done.

    What is the best way to enable the spedd mesure at power up?

    Regards.

  • You can run the motor with torque close loop by setting the reference speed and torque current to "zero".

  • I will try but I think I will not have the same behavior than when motor is stopped (flagEnableRunAndIdentify=0) and estState = EST_STATE_ONLINE. With the solution you suggest, I will probably have some switching on motor phases.

    Regards.

  • OK. You can enable the FAST estimator always even the motor is stopped, but the estimation speed and angle will be not right if the rotation speed is close to zero or very low.

  • I didn't find any flag to enable the Fast estimator, so looking at the code, I have add the following line at the begining of runMotor1Control:

    EST_enable(obj->estHandle);

    Not sure it is the best way to enable FAST but it works.

    Regards.

  • Right. Initialize the motor and hardware parameters for FAST estimator, and call EST_enable(obj->estHandle); to enable the FAST estimator.

  • OK, so based on the test I have done with my "LV" motor, the result are good. especially flying start.

    So now, I will evaluate on some HV motors (with HV kit + TMDSCNCD280025C).

    I have first try the HV kit with a low voltage (24V to 80V) and using the same motor than before => no change on motor parameters.

    The result are not so good that with  DRV8353RS-EVM 100:

    -the current is less sinusoidal (especially at low load, at higher load, this is OK)

    -the noise of the motor is more agressive. It seems that some PWM pulse at the motor are missing, especially at low modulation index (low speed, high voltage). When the modulation index increase, this is better and the agressive noise disappear. I try to come back to 15kHz (instead of 19.5kHz) but this does'nt help a lot (but a little).

    - I try to identify again the motor parameters but the result is similar to what I have identified with the previous kit (around 10% difference on resistors, other parameters are equals). (for information the change I made to enable fast at power up need to be removed to identify motor parameters otherwise it does't run).

    -I have populated J1/J2/J3/J4 as descibed in user_mtr1.h comments and set the code:

     //Populate jumpers on J1/J2/J3/J4 for short R20/R23/R26/R37 for low voltage motor

    USER_M1_ADC_FULL_SCALE_VOLTAGE_V         (112.21f)

    but this does'nt help.

    Do you have an idea where it comes from? Is it possible that the driver skip some short pulses?

    With best regards