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.

TMS320F28069F: Current Issue - Seems like a scaling problem

Part Number: TMS320F28069F
Other Parts Discussed in Thread: DRV8301, CSD18533Q5A

Dear Community,

I am working for half a year now with instaspin and it worked fine for me so far. I read a lot of posts here about current scaling but couldn't find the same problem i have.

My hardware is a custom pcb with a DRV8301 gate Driver with 3mR Rsense and im using the following FET's

BUK7Y4R8-60E

CGD  and CGS are a bit high but 60kHz or 45kHz should work fine. it is planed to change them to TI-Fet's because of a lower RDSON and lower Gatecharge

I am using a Hub-Motor from China. The datasheet says "17A max Current"  at 11,4NM max Torque.

I first was wondering which current is meant here. Iq current?  DC-Bus current? Rms-Current of the Phase?

As Iq is my Torque-generation current i assumed this can be compare with the 17A needed for the 11Nm.

In my software I am setting the PID_spd max output according to this Value and following i'll print my user.h to understand my current scaling.

CTRLSetMinMax(ctrlHandle,_IQ(-5.0), _IQ(Tmot_des_A));    // The -5A limit is wanted here, only max shall be set.

Tmot_des_A is calculated:  Tmos_des_A = (maxCurrent/((float)iqFullScaleCurrent_A))  //maxCurrent = 17A (motordatasheet)

according to user.h this is a pu-Value of 0.261

#define USER_IQ_FULL_SCALE_VOLTAGE_V      (52)   // V_Nom is 25.2V  but FW and OverMod are used

#define USER_ADC_FULL_SCALE_VOLTAGE_V       (52.899)      // 75k and 5k

#define USER_IQ_FULL_SCALE_CURRENT_A         (65.0) //   shall be half of ADC or more (instaspin manual)  should work fine as such a high current is not expected

#define USER_ADC_FULL_SCALE_CURRENT_A        (110.0)  // 3mOhm  Gain=10

Current-Controller-Settings:  (Calculated using the Formulas from the labs)

                 gMotorVars.Kp_Idq = _IQ(2.32);
               gMotorVars.Ki_Idq=_IQ(0.0193);
               gMotorVars.Kp_spd = _IQ(8);
               gMotorVars.Ki_spd= _IQ(0.0193);
      CTRL_setKp(handle,CTRL_Type_PID_Id,gMotorVars.Kp_Idq);
      CTRL_setKi(handle,CTRL_Type_PID_Id,gMotorVars.Ki_Idq);
      CTRL_setKp(handle,CTRL_Type_PID_Iq,gMotorVars.Kp_Idq);
      CTRL_setKi(handle,CTRL_Type_PID_Iq,gMotorVars.Ki_Idq);
      CTRL_setKp(handle,CTRL_Type_PID_spd,gMotorVars.Kp_spd);
      CTRL_setKi(handle,CTRL_Type_PID_spd,gMotorVars.Ki_spd);

The maximum output setting of the speed-controller works fine.

I am running this setup on an Testbench, where Instaspin and a bigger Motor is used to apply a Load (Torque).

So as i set my Speed_out_max to 17A i expect a Torque of 11.4NM. Also i expected that either DC-current or RMS-Current of a Phase musste be in the Range of 17A.

BUT I am not reaching 11Nm. Testbench and Motorcontroller measure a Torque of about 5-6Nm before Motor is stalling, which is a half of 11.4Nm.

Also my current measurements are surprising to me.

On the Load of 5Nm i am measuring an RMS current of 8A on my Phases and a DC-Current of about 6A. 8A also seems to to be nearly the half of the expected 17A.

For me it seemed like everthing showes the half of the wanted values.

So i doubled the max Current to 34A (0.52pu).

The Torque is Increasing now and also the currents show better values. But when i try to reach the max load, at some point suddenly the motor is turning off (only sometimes). Shortly before it seems like the currrent limit function on the DRV start working because the current is oscillating and the torque is oscillating what you also can hear as a "roaring"-sound.

But why??? Rms current on the phase is not even 17A and i already tried to increase the VDS level to 1.34V which should be far enough as my RdsOn is ~3.4mOhm. ->3.4mOhm*17*sqrt(2)=0,0817V

also my DC current is still below 10A.

Does anybody see a failure in my settings?  Did i understand the Currents wrong?  I also observed that torque-measurement is oscillating between zero and and xNm is this normal or should this value be stable?  Is it a problem that the analog-signal lines of the current and phase measurments are longer that 20mm?

Summarized my problem is that i can't reach the max Load of the motor and it starts to make "tocking" sounds with a high frequency on high Load. Also the power consumption is less than expected.

Tomorrow i hope i can built up a working prototype to test in the real world. I just want to be sure that the testbench is not the problem here.

  • New information:
    The IQ_Pid Ui is oscillating between a value above max Out, max Out and a value far below max Out. Could this be the Reason for the noise?
    I think i already found the answer to my question above:
    As the max Duty cycle is 0.5 by default only the half of the supply voltage can be applied to the coils?
    Could it be that 11NM and 17A only can be reached using block commutation? I already noticed that there is much more power using overmodulation.
    Could it be that that sinusodial only can reach the half of the power of a block commutation. Or am i totally wrong now? :D
  • And i have a new suggestion:
    Could the dead-time of the pwm-Module be a problem?
    default this deat time is set to 1 cpu cycle (11ns) what maches to turn on and turn offf delays of 5ns of the CSD18533Q5A
    But the FET i am using has a turn on delay of 15ns and a turn off delay of 57ns!!!! should i do a adjustment here?
  • 1. The dead time is set by DRV8301 registers, not by F29069.
    2. The maximum current is torque current which is not a constant proportion of phase current (rms or peak). The real torque current can be calculated by clark&park transformation.