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.

BOOST-DRV8711: Driver and Motor failure

Part Number: BOOST-DRV8711
Other Parts Discussed in Thread: DRV8711

Hello team,

I'm using a BOOST-DRV8711 to control a stepper motor. In the very beginning, everything is ok, the register values are normal and the motor worked well. But the driver and motor failed suddenly when I tried to write the register one by one to verify the values, which will be a feedback status to a new task in the future. So, nothing changed to the current version. The initialization code of DRV8711 is similar to the ti example, which the only difference is that I designed the register classes to make the initialization easier.

/* Write all registers' value into DRV8711 */
void Driver::WriteAllReg()
{
	uint16_t data = 0;
	
	CTRLreg.R_NW = 0;
	CTRLreg.Encode((uint8_t*)&data);
	SPI_RW(data);
	
	TORQUEreg.R_NW = 0;
	TORQUEreg.Encode((uint8_t*)&data);
	SPI_RW(data);
	
	OFFreg.R_NW = 0;
	OFFreg.Encode((uint8_t*)&data);
	SPI_RW(data);
	
	BLANKreg.R_NW = 0;
	BLANKreg.Encode((uint8_t*)&data);
	SPI_RW(data);
	
	DECAYreg.R_NW = 0;
	DECAYreg.Encode((uint8_t*)&data);
	SPI_RW(data);
	
	STALLreg.R_NW = 0;
	STALLreg.Encode((uint8_t*)&data);
	SPI_RW(data);
	
	DRIVEreg.R_NW = 0;
	DRIVEreg.Encode((uint8_t*)&data);
	SPI_RW(data);
	
	STATUSreg.R_NW = 0;
	STATUSreg.Encode((uint8_t*)&data);
	SPI_RW(data);
}

Then I read carefully the datasheet of DRV8711, I think the reason is most likely the TORQUE register goes back to the rest value after power on. My idea is that the CTRL register is written first, and the ENABLE bit had been set. But the rest value of the TORQUE was 0xFF at that moment. Unfortunately, I was debugging the feedback value of another program related to SPI for a while. The current should be very large during that time which leads to the failure of the motor. But, I'm not sure if my idea is right. 

Best regards,

Li.

  • I'm a little confused on the issue you are experiencing. When you try to write to the registers one by one sequentially, the motor fails. Is my understanding correct? What type of failure occurs? Can you provide more details on the failure that occurs?

    You said:
    The current should be very large during that time which leads to the failure of the motor. But, I'm not sure if my idea is right. 

    Can you also please clarify what you mean by this comment.

  • Hello Annie Liu

    Thanks for your reply. The failure is over-temperature and the winding of the motor has been damaged. The situation was that I was debugging the initialization program of the driver and another program that is used to collect the status information of the SPI bus and two tasks. I was debugging the registered one by one on that day to verify the program to be sure if the status information is correct. And then the data is transmitted to my laptop and shown on my software.

    The detailed process is that the CTRL was written first, and the ENBL bit had been set. After writing the CTRL register 0x0C01 with full step mode, I started to verify the status. Then they are transmitted to my laptop and decoded, finally shown on my software. The TORQUE register is the second register to be written, then collecting status and sending them to PC, and so on.

    The first several tests following the above process were OK. But I had to adjust the decode program on my PC and verify the different modules of the software. So, such a test should be done many times. Unfortunately, the failure occurred at one test that I was testing the display module of the software to show the status of the console after the CTRL register had been written.

    My idea is that the rest value of TORQUE is 0xFF, so the current generated by the driver could be very large. And the debugging time of the collecting program, transmitting program, decoding program, and the software is very long. So, the time interval of writing between the CTRL register and TORQUE was long enough to generate damage to the motor. I want to know if my analysis is correct.

    Best regards,

    Li.

  • It is very difficult to determine what the issue is without providing some data. I understand that the issue was sudden so you did not collect any data. I have a few more questions to better understand your test:

    What is the value of the STEP/AIN1, DIR/AIN2, BIN1, BIN2 during the test?

    IF these signals are LOW, then the TORQUE bits set to 0xFF is the issue since the FETs are disabled?

  • I'm using a DRV8711 with indexer mode to control a hybrid bipolar stepper motor. So, the STEP pin and DIR pin are used only.

  • 请问执行测试时 STEP 和 DIR 信号的值是多少? 如果 STEP 信号在测试过程中没有切换,问题可能是由过流情况引起的,因为电机不会旋转。

  • Yes, STEP had no change and DIR was high-level voltage when I was testing the CTRL register. So, I also think the reason most likely is overcurrent due to the rest value of TORQUE, 0xff, during that period. But I'm not sure if my idea is right.

  • It may be possible that the current in the motor can spike up. However, the only way I think the current can increase is if the motor resistance is very low and the chopping current is set too high.

    To verify if this is possible. Can you try writing the TORQUE register first and then the CTRL register. If no issue is observed, then it most likely means a default parameter in the TORQUE register caused a surge in current as you suggests.

    Another suggestion is to run the test again but disconnecting the motor. If no failure is observed, then it means the failure was related to the motor.

    Can you try doing the two tests above?

  • I have tested the driver without the motor. I wrote CTRL register first and then read TORQUE register. The value of TORQUE is 0xFF leading to the chopping current is almost 6 times larger than the max tolerant current of the stepper motor. So, if the TORQUE register configuration is very quick following the CTRL register, this large chopping current only flows through the motor for a short period. If, however, in debug mode, eg. what I have done, there is a long time interval between CTRL and TORQUE  configuration leading to damage to the motor.

    My solution is to configure all registers at first without ENBL bit of CTRL register so that the driver could be configured right. Then set ENBL bit to enable the driver, and the chopping current flows through the motor after that, which prevents the driver from the wrong configuring sequence.

  •  I think it makes sense.

    We recommend to configure the current regulation (TORQUE) register before enabling the outputs. This way, there is no risk of large currents through the motor.

  • Yes, you are right. But then I find that the rest registers are also related to the parameters of the driver, MOSFETs, and motors. There is also a risk of making mistakes in all of these parts. I think the best way is to configure all registers without ENBL bit at first to make sure every configuration ok. Only then can the ENBL bit be set to enable the driver.

  • You said:
    I think the best way is to configure all registers without ENBL bit at first to make sure every configuration ok. Only then can the ENBL bit be set to enable the driver.

    I also agree. Please do this sequence. If the issue is the current going up due to TORQUE=0xFF, then this should fix the problem.