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.

DRV10987: DR10987 EVM close-loop operation not possible

Part Number: DRV10987


I'm tuning the parameters using the SLOU477 DRV10987 Tuning Guide.

My motor is running in open-loop mode at around 1/3 of the max. speed, but when I try to uncheck the CLoopDis checkbox, the motor stops immediately and the fault code is current limit.

Is the DRV10987 too weak for this motor, or am I doing s/th wrong?

Motor specification:

24VDC, 40000 rpm (free running), 0,17 A (free running), 38000 rpm nominal, max. 5.3 mnM, max. 1,10 A, max. 21 W, 5.7 mNm/A, 1682 rpm/V, 1.30 Ohm (phase-phase), 76 uH (phase-phase), 0.66 gcm2


DRV10987 0x90 0x3D

DRV10987 0x91 0x2A49

DRV10987 0x92 0x40

DRV10987 0x93 0x41F0

DRV10987 0x94 0x3BAF

DRV10987 0x95 0x78C3

DRV10987 0x96 0x6A

BR, Alois

  • Hello Louis47356,

    Current limit during start up usually results from 3 sources: Tcontrol, incorrectly programmed Phase Resistance, and incorrectly programmed Kt.

    Looking at your motor parameters, the phase resistance seems to be incorrectly programmed. Phase to Phase resistance is 1.3 ohms, and phase resistance will be half that (R_ph_ph / 2 = R_ph_ct) to equal 0.65 ohms.

    For Kt, we highly recommend finding that number by taking a scope probe between two of the phases, spin the motor, and measure Voltage (peak to peak) and frequency of the BEMF. Then, Kt will come from dividing the peak to peak voltage by to 2 and dividing by frequency:

    Kt = (V_pk_pk/2)/(f_BEMF)

    For Tcontrol, it seems you've already followed that in the tuning guide but just incase you haven't, go to the Control Advance Time Fine Tune section and follow the instructions there. From prior experience, 360us seems rather long for motor of this inductance. 

    In addition, this motor may have too low of an LR time constant to spin for our devices. The limit is shown in the Recommended Application Range table in the DRV10987 data which I've copied below. L/R = (76u)/(1.3) = 58.4us



  • Hello Cole,

    Thanks for the quick and detailed answer.

    I found out that I cannot enter Dots in the text boxes at the DRV10987 GUI program, but I can enter Commas. It seems that I have kind of a German number format. Moreover, when I enter 0,65 into the textbox 'Phase Resistance', the value is rounded to '1'. If I insert 0,25, the value is shown as '0'. A Labview Runtime Engine issue?

    When I enter 0,65 for Phase Resistance and 35,7 as Kt and save the motor configuration. The values in the .csv file for the config registers are:

    CONFIG1 Register at address 0,90 is 0x003d. RMShift is 0b011. RMValue is 0b1101. 0b1101 << 0b011 is 0b1101000 = 0x64 = 100

    CONFIG2 Register at address 0x91 is 0x2a49. KtShift is 0b010. KtValue is 0b1010. 0x1010 << 0b010 is 0b101000 = 0x24 = 36

    I don't know about the number representaion.

    EDIT: I found the lookup table in the datasheet.

    - The bit fields in CONFIG2 correspond to Kt = 36.8 mV/Hz

    - The bit fields in CONFIG1 correspond to RM = 1.0088 Ohm

    For Kt, I did the measurement: f = 3.91 Hz, Upp = 270 mV. I get 34.5 mV/Hz. That's what I calculated from the datasheet: 1/(Drehzahlkonstante 1682 rpm/V) = 35.7 mv/Hz.

    When I enter 34,5 at the Kt textbox (ignoring the fact that the number in the textbox shows '1'), now the system is able to get into closed-loop operation after unchecking 'CLoopDis'. The motor is able to spin at very low speeds up to ca. 30,000. Above ca. 24,000, I get a Fault Code 'BEMF abnormal', but it still spins. This Fault Code persists at any speed then. Above 30,000 it suddenly stops, and Fault code 0 and 2 show up (no text in the Fault Code box).

    Regarding the L/R constant: We have to use this motor because of customer's specification, unfortunately. Are there other BLDC motor drivers available from TI that have lower limit for L/R?

    Best regards


  • Hey Alois,

    I'll split this up into 2 problems:

    L/R Constant and Tuning:

    You can try to double the PWM frequency of our driver to 50kHz to see if it helps at all. Or you can disable current limit and let the device's overcurrent protection (OCP) (about 4Apk) protect the motor, Speed Abnormal Lock1 or OCP will probably trigger next if there is a problem with spinning the device like this. I will say, low inductance motors are known to cause problems with this family of devices which should be addressed in the next generation of devices.

    Allow me to get in contact with someone else who might be able to comment on a different device family if your problems continue.

    GUI Problem:

    Unfortunately, we have seen the "commas only issue" before but have not been able to replicate in the office at all. Can you go to the "region and language" settings on your computer, switch it to "English: United States", restart the program, and see if you are able to enter decimals?

    Otherwise, we'll have to use the scripting tool in the GUI and type in the values in Hex. To do this, make a go to the Script menu at the top of the GUI, launch window, and in the Run menu of the scripting window, run module (.py file). To record and write a script, go to Apendix A.3.2.2 in the DRV10987 EVM User's Guide. You'll have to manually configure the registers like shown below:

    This is a script that changes tcontrol to 120µs and reads back the value in GUI. It seems you already know how to shift the values so the same would apply to this register.




  • Hello Cole,

    After switching Windows to English: United States the GUI is working correct now. Phase resistance is returned as 620.8m, Kt as 33.12 and T Control Advance as 200u.

    Spinning to 40.000 rpm stops the motor with fault code 'Current Limit'. After unchecking the Lock Detect - Current Limit, it spins up to 40.000 from 0. Current Limit is shown sometimes, also sometimes BEMF abnormal. At cold start the motor sometimes needs 2 tries to spin up to 40.000. So, there is room for fine tuning, maybe temperature, power supply varation, etc - but the main functionality is working now.
    The 'Double the output PWM frequency' is already turned on.

    Maybe I need some more help with fine tuning.

    Best regards,
  • Hey Alois,

    This is good news. I agree that it sounds like some tuning is needed.

    At this point, I highly encourage you to make sure you have found the most optimized Tcontrol or lead time setting for your motor. Though I've mentioned this before, it is very critical for the motor to have this optimized at high RPMs. This tuning is found in the DRV10987 tuning guide, as mentioned before.

    If current limit Lock0 is somtimes being hit, then I encourage you to look at the closed loop acceleration setting on the basic settings tab in the closed loop settings section. The lower it is, the less likely current will surge and hit the current limit.

    You can also change the Control Coefficient Settings and ClkCycleAdjust settings. These settings are highly situational and may or may not improve performance. If you find that changing the setting does not help, be sure to change it back.

    Finally, observe the "Motor Velocity Constant" (or Kt) measured by the device on the Display tab in the Display section. If you find the numbers are widly different at your high speed, you may want to change your programmed Kt value.

    Hope this helps,


  • Hello Cole,

    Kt measured on the display tab is between 34.4 (10000 rpm)  and 19.7 (38000 rpm).

    I will finish the DRV10987 tuning guide.

    At this point, I will close the case next, because the main problems are solved. If there arises a new problem, I will start another case.

    Thank you very much for you help.

    Best regards


  • Sounds great Alois,

    You're welcome. Please click the "This resolved my issue button" or other people can find this post more easily.