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.

Compiler/DRV10983: About DRV10983 drive motor in open loop setting & Speed abnormal

Part Number: DRV10983

Tool/software: TI C/C++ Compiler

Hello,Everone:

       I use DRV10983 IC to drive BLDC Motor recently for work, I use the PWM control, It is 20%

The motor is success to active, but a problem happens sometimes, 

The register 0x1E fault code shows 0x02,which means Lock1 : speed abnormal.
The register 0x1B speed cmd[7:0] shows the value is correct of PWM duty 20%.
The register 0x1C speed cmd buffer[7:0] shows the value is increase very quickly.
It is higher than 20% ver quickly,and then cause the Lock1,The motor is stopped.
Then the FGOLsei{1:0} is 01,which means FG output only in closed loop.
The fault happens in FG pin is high, which means happens in openloop.

The parameters are related with open loop:

OpenLCurr[1:0] : 1.6 A (The motor loading need the high current to drive)

OpLCurrRt[2:0]: 6 VCC/s

StAccel2[2:0]: 0.22 Hz/s2

StAccel1[2:0]: 2.1 Hz/s

Op2ClsThr[4:0]: 25.6 Hz

I want to know how to optimize the parameter fix the problem? 

I check the datasheet for Open Current Setting .Is it related with this problem?

Equation 2 -  ULimit   ILimit X Rm + Speed (Hz) X Kt

Is Op2ClsThr[4:0] value for Speed (Hz) in Open loop?

what is ULimit means? 

  • Hey Jossun,

    Thanks for the concise information.

    There are a few avenues that could be occuring, but let me explain what is happening. Essentially, that equation only refers to the Mechanical AVS function. Its related to Speed Abnormal but not the same. Essentially, when a motor spins, it generates a induced voltage (BEMF) because a magnetic field passes by a coil of wire (motor phase) when the motor is spinning. We can estimate this BEMF two ways:

    BEMF1 = V_u -I*Rm and BEMF2 = Kt * Speed where V_u is the voltage applied on a motor phase, Kt is the programmed BEMF Electrical Constant of the motor, is phase resistance of motor. Ideally, BEMF1 and BEMF2 should be pretty equal.

    Lock 1 speed abnormal says, that BEMF2 > V_u will trigger the lock. So if the driver tries to apply a voltage less than the BEMF calculated by multiplying Kt and the Speed, then we trigger a fault. This makes sense because this induced voltage should be lower than the voltage we are applying to the motor.

    Anyways, this means there are thee problems that could be occuring (or a combination):

    • The motor is accelerating too fast during start up and becoming out of sync with the driver (Speed is incorrect)
      • Simply lower the first order and second order acceleration constants (StAccel2[2:0] and StAccel[2:0]) and make the current  
      • If you don't have the Abnormal Kt/BEMF lock enabled please enable it
    • Programmed Motor Kt is incorrectly programmed (Kt[6:0]) which is falsely triggering this event (Kt is incorrect).
      • Try Enabling Close Loop Disable (CLoopDis - 0x2B[0])
      • read the estimated Kt (MotorKt[15:8] and MotorKt[7:0]) and see if it matches what you have programmed in the Kt[6:0] register. If it isn't then, make them match
      • Please read the equation notes in the register description for all of these parameters
    • T Control (Tdelay[6:0]) is not tuned properly.
      • Most motors fall in the range of 100u-500us. Use something in this range to start

    To answer your other questions:

    • Is Op2ClsThr[4:0] value for Speed (Hz) in Open loop?
      • Open to closed loop threshold is the target speed to reach before handing off to closed loop. The motor should spin to that speed and then go to the speed that corresponds to the speed command
    • what is ULimit means? 

      • ULimit is the same things as V_u, applied voltage. The limit part refers to AVS functionality that can be ignored in this case.

    Best,

    -Cole