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.

  • Resolved

DRV10983: An issue while Driving Ceiling Fan using DRV10983

Prodigy 160 points

Replies: 25

Views: 2100

Part Number: DRV10983

Hello all,

I'm driving Ceiling fan BLDC motor with interfaced DRV10983 driver. My problem is BLDC motor isn't rotating smoothly and as per require speed.

I think i have problem with configuration I2C register.

Can anyone suggest me a solution for that?

Motor parameter:


1.5 Amps



Phase resistance: 2.78Ohm

Kt: 440

  • I'm assuming you were able to reach closed loop running of the motor.
    1) We have a tuning guide to tune the register settings such that the motor spins as desired. ( Please use that for guidance, and let us know if you have any questions.
    2) Make sure your phase resistance and kt are accurate. Also try tuning the T control advance time, and see if the spinning and current of the motor gets more sinusoidal and smoother.
  • In reply to Sanmesh Udhayakumar:

    Hello Sanmesh,

    I have tried your suggestion of tuning guide pdf.

    Set all the parameter accordingly, but i think motor isn't rotating in open loop mode.

    For more clear communication i can give you my EEPROM register value which i used to set for motor.


    Vrajesh Prajapati

  • In reply to Vrajesh Prajapati:

    Hello Sanmesh,

    Finally my motor rotate in open loop mode.

    But still i'm having problem in close loop mode.

    As soon as i enter in open to close loop mode motor speedup and stop rotation.

    Vrajesh Prajapati
  • In reply to Vrajesh Prajapati:

    Try to use the locks to see what locks are triggering when hitting closed loop mode.
    In general, what I'd recommend is use conservative parameters for all acceleration parameters.
    Maybe make the "closed loop accelerate" parameter the minimum.
    Can you attach you eeprom register parameters either as .csv or as screen captures?
  • In reply to Sanmesh Udhayakumar:

    Hello Sanmesh,

    Thanks for replaying my query time to time.

    I have enabled all Lock. And when i read fault detection in close loop mode it shows stuck in close loop fault.

    I have also tried both IPD and align and go method. But same problem facing, motor stop in close loop.

    I have changed my Kt and Phase resistance value.

    I've set following EEPROM parameter to run motor.

    Address          Value

    0x20         =         0x5E
    0x21         =         0x81
    0x22         =         0x3A
    0x23         =         0x05
    0x24         =         0x80
    0x25         =         0xFD
    0x26         =         0x4A
    0x27         =         0xF0
    0x28         =         0x0F
    0x29         =         0xF9
    0x2A         =         0x0C
    0x2B         =         0x0F

    Once motor start running in open loop i change 0x2B register value into 0x0E for enter into close loop. That's where motor stops running.

  • In reply to Vrajesh Prajapati:

    Try these parameters:

    DRV10983 0x20 0x5E
    DRV10983 0x21 0x1
    DRV10983 0x22 0x3A
    DRV10983 0x23 0x5
    DRV10983 0x24 0x90
    DRV10983 0x25 0xFD
    DRV10983 0x26 0x88
    DRV10983 0x27 0xF0
    DRV10983 0x28 0xAF
    DRV10983 0x29 0xF9
    DRV10983 0x2A 0xC
    DRV10983 0x2B 0xF

    Overall what I did:

    1) Increase the open to closed loop threshold to 25.6Hz. Usually closed loop can fail if you are not transitioning from open to closed loop at a high enough speed. Thus, you want to make this value bigger.

    2) Put an acceleration current limit to avoid current hitting the current lock. You can play around with this depending on how much current you're drawing.

    3) Made Adj Mode to full cycle.


    1) phase resistance (phase to center tap) and phase to phase Kt is set as  4.33 ohms and 920m (mV/Hz). phase resistance is twice the resistance that you mentioned (2.78Ohm), and the Kt is extremely small. When you said Kt = 440, what is the units? If its mV/Hz, you need to change the Kt value to that in the eeprom. I would check this and this could be the reason closed loop fails.

    You might want to check the actual kt of the motor by measuring it on the oscilloscope as well.

    Also see what the drv10987 device reads as kt as well from the MotorKt register at address 0x03.

    Let me know if you get a breakthrough through this.

  • In reply to Sanmesh Udhayakumar:

    Hello Sanmesh,

    A big thank you for such a big support.

    My motor finally rotate with 0x20(address) = 0xCA(value) and 0x21(address) = 0xDE(value).
    It is rotating smoothy and open to close loop handshaking is also smooth and perfect.

    Now I'm almost on finishing stage with some question.

    1) If i make my duty in between 0to50 motor rotate clock wise, but when duty is in between 51to100 it rotate anticlockwise, so why is that?

    2) Similar thing with I2C SpeedCtrl1 and SpeedCtrl2 register, when i make their value in between 0to255(decimal) motor is rotating, at 256 value motor stops, again after 257to511 motor is rotate with same direction, so why is that?

    3)What does DIR pin do?
  • In reply to Vrajesh Prajapati:

    1) Depending on whether the DIR pin is grounded or 3.3V, it will either keep the default motor spin direction or reverse it. Make sure it is not Hi-Z, and that it is set to 0V or 3.3V. Also maybe put the dir pin on oscilloscope to make sure it isn;t changing value and causing the direction to change

    2) Make sure when the device stops and rotates at a different direction, a lock isn;t hitting and the motor isn't restarting. Also maybe disable reverse drive if you dont need it.

    Try these two things and let me know what you find.

  • In reply to Sanmesh Udhayakumar:

    Again Thank you.

    Now for duty 0to100 my speed varies perfectly.
    Actual problem was on driver Pin connection, Dir and Speed pin was short so given pwm are also enters into Dir pin, so that's makes the problem.

    And in I2C speed control register, there was a problem from my side which is i made mistake of shifting register.

    For now motor is rotating perfectly with both PWM and I2C speed control.

    Thank you Sanmesh Udhayakumar.

    Vrajesh Prajapati

  • In reply to Sanmesh Udhayakumar:

    Hello Sanmesh,

    Right now I'm running my Fan with Load(Flaps).

    But there are some issue with load.

    1) When fan is running at its full speed, i turn off PWM and immediately after i again start giving PWM, fan speed decrease and make it self zero than it is start back to require speed, All i want is to continue fan rotating even when i turn OFF and turn ON fan.

    In short all i want is Image below:

    2) In the same case above turning OFF PWM and immediately turning ON PWM makes the "Speed abnormal" fault flag ON.

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.