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.

DRV10975: How to set to control the speed by IIC

Part Number: DRV10975
Other Parts Discussed in Thread: DRV10987,

Hi:

    I  can used the DRV10975EVB to control the motor speed by IIC .But it do not work in my appylication.

Following is my soft initialization:

1. 0X03 write 0X40 (enable EEPROM config)

2. EEPROM config

  0X20:0X6C

  0X21:0X07

  0X22:0X2C

  0X23:0X00

  0X24:0X00

  0X25:0XD1

  0X26:0XE4

  0X27:0XFC

  0X28:0X53

  0X29:0XD8

  0X2A:0X09

  0X2B:0X4E

3.0X01 write 0X80 (IIC  Speed contrl oveRide )

4.0X01 write 0X80

   0x00 write 0x96 (write the speed value)

When get  into  the colosed loop,the Speed is 9360RPM about .And I change the start Speed Value conmand ,when get into the closed loop ,the speed is still 9360RPM about.But,When use the DRV10975EVB ,the same speed value conmand,Speed is 7280RPM.So i think maybe some mistake in my applicaiton ,I can't debug to the speed what I want  .Please help me to check it,Also help to check the EEPROM Config whether it is suitable to the Motor,Thanks!

Attachment is my SCH and Motor Spec

Best Regards!

Chris

  • Hello Chris,

    Thanks for your posting to the MD forum. It seems like you might have posted twice please let us know so that I may close one of the threads.

    Just to note the schematic indicates a DRV10987, it has the same pinout as DRV10975 but I just want to make sure that the DRV10975 is the correct device we are looking at.

    Another note: AVSIndEn is not functional on DRV10975, I recommend you disable this which is bit 3 on register 0x27.

    On your device configuration I did notice that the Speed pin was configured for PWM mode (bit 1 on register 0x2B) but on the schematic I noticed that it was also pulled up to 3.3V. I believe this might be where you may be having issues with the speed on your device.

    If you are configuring speed through I2C you need to ensure that OverRide (bit 7 on register 0x01) is enabled. This ensures that the SPEED pin input is bypassed and the speed is configured through I2C. If you are not using I2C make sure to only feed one signal to the device either an analog voltage or a PWM voltage. If your OverRide bit is not enabled I believe the device is taking PWM from SPEED pin which is tied directly to 3.3V on schematic, which is why the speed wont change. I hope this helps!

    Best,

    Isaac

  • Hello Isaac:

    Thanks for your quik replay.Sorry, I mistakenly initiated two threads ,Please cloesd another one.

    Actually ,I used the DRV10975 and I made the Speed Pin(Pin13) float.

    I have read the 0X1B(Speed Cmd register) and 0X1C(Speed Cmd Buffer register), 0X1B:30%(0x00 write 0x96 By IIC),0X1C:38%,This is why I can't control the speed.After disable the AVS Funtion ,also can control the speed. 

    But ,why  execute 38% of the speed command,why not 30%(0X00 write 0X96 by IIC ,about 30%), 38% is the Cmd Buffer value of the last power off? How tp set EEPROM Config(especial for 0X2B bit 1) start up by 30% speed command? how to deal the Speed Pin(Pin13) when use the IIC to contol the motor speed,float、pull-down or pull-up?

    Following is the DRV10975 initialization timing,Please help check.

    1. 0X03 write 0X40 (enable EEPROM config)

    2. EEPROM config

      0X20:0X6C

      0X21:0X07

      0X22:0X2C

      0X23:0X00

      0X24:0X00

      0X25:0XD1

      0X26:0XE4

      0X27:0XFC

      0X28:0X53

      0X29:0XD8

      0X2A:0X09

      0X2B:0X4E

    delay 200ms

    3.0X01 write 0X80 (IIC  Speed contrl oveRide )

    delay 200ms

    4.0X01 write 0X80

       0x00 write 0x96 (write the speed value,about 30%)

    Best Regards!

    Chris

  • Hello Chris,

    Thank you for the clarification on the other thread we will have gone ahead and closed it.

    Sorry Chris, I was a little confused about some section of your reply: So the value you wrote to SpeedCtrl1 = 0x96? This should be around 30% duty cycle. What values did you read back from the SpeedCmd and spdCmdBuffer?

    It looks like you did write OverRide I must have missed it when I was looking through your settings the first time, I was reviewing your EEPROM initialization and it seems that you are never actually saving  these values into the EEPROM. I do not see a write with the program key at any point so the data is not being stored in EEPROM, so every time you power up the device you will have to set the values into EEPROM. If you do want to save these values make sure you follow your step: 1 and 2, then enter the program key 0xB6 into register 0x02 followed immediately by 0x10 to program the register. Vcc must be at least 22V when you do this to actually save the information into EEPROM. The process takes about 24ms to program all the registers to EEPROM.

    Once that is saved you can load your values from EEPROM at startup by just setting eeRefresh = 1. You may leave the speed pin in whatever state you prefer. As long as OverRide bit is selected then the device will follow ignore the pin status and follow I2C speed commands.

    And to clarify AVSIndEn was not mentioned to fix your issue, this function is just not recommended to use on DRV10975.

    Best,

    Isaac

  • Hello Isaac:

    Yes,I wrote Speedctrl1=0X96, But after initialization I read back value of SpeedCmd is 30% and spdCmdBuffer is 38%.DRV10975 Drive at 38% speed Cmd.When I enable the  Mechanical AVS I can't slow down the motor by Speed Cmd decrease.Unless the Mechanical AVS is Disabled. I don't understand why it starts driving with a duty cycle of 38%?

    Because of my VCC is fixed at 12V, I can't stored the data into the EEPROM.Is there any other way to burn EEPROM values after SMT?

    Best Regards!

    Chris

  • Hello Chris,

    Thanks for the clarification, this is a common problem that we see. The reason that you are seeing a slightly higher speed when Mechanical AVS is enabled is explained in the DRV10983 and DRV10975 Tuning Guide. Mechanical AVS ensures that your BEMF voltage generated by the motor does not exceed the voltage that is applied to the motor. So when the function is enabled, the AVS function can prevent the voltage from surging when the motor is spinning form a high speed to a slow speed, which in turn prevents you from reducing the speed. This can be due to an incorrect Kt value, increase is necessary in the current limit threshold, or mechanical AVS may need to be disabled.

    If your VCC is below 24V and your system can accept the voltage to pump up you can also change the Mechanical AVS mode to AVS to 24V. This means that AVS will protect when the voltage goes up to 24V.

    You can read more in depth suggestions on how to fix this issue in the tuning guide I linked above. You want to read section 9 found on page 38. In order to burn EEPROM the voltage must be 22V, typically we suggest burning the correct values before mounting to your final system but if you have an EVM you should be able to mount it on that and change the values. I hope this helps!

    Best,

    Isaac

  • Hello Isaac:

    Thanks a lot

    Best Regards!

    Chris

  • Hello Chris,

    Do you have any other questions, or may I close this thread?

    Thanks,

    Matt

  • Hello Matt:

    Please help to colse the thread,thanks a lot.

    Best Regards!

    Chris

  • Thanks Chris glad we were able to help out, I will close this thread!

    Best,

    Isaac