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.

DRV2625: Auto-calibration for ERM failing. What could be the reasons?

Part Number: DRV2625
Other Parts Discussed in Thread: BQ25120A, , DRV2605

I am getting an error when running the auto-calibration routine with this ERM:

https://www.vybronics.com/erm-cylindrical-vibration-motors/v-z30l4b8790008l

The DRV2625 is powered by a 3V power rail, obtained from the LDO on a BQ25120A.

This is a snippet of the code I'm running on initialization. It uses a driver I found for the BOOSTXL-DRV2625 on this thread: e2e.ti.com/.../where-is-boostxl-drv2625-demo-code

	// configure the trigger pin so we can use the GO function (over I2C)
	DRV262x_setTrigPin(DRV262x_trigPin_interrupt);

	// read status flags just to clear them
	DRV262x_getReg(DRV262x_reg_status, &(statusReg.r));

	// configure actuator and trigger auto-calibration
	DRV262x_setMode(DRV262x_mode_autocal);

	// set driver in ERM, open-loop mode
	DRV262x_Ctrl2Reg_t ctrl2Reg;
	DRV262x_getReg(DRV262x_reg_ctrl2, &(ctrl2Reg.r));
	//ctrl2Reg.b.bOLnCL = 1; // calibrate in open-loop
	ctrl2Reg.b.bLRAnERM = DRV262x_actuator_ERM;
	DRV262x_setReg(DRV262x_reg_ctrl2, ctrl2Reg.r);

	DRV262x_Ctrl6Reg_t ctrl6Reg;
	DRV262x_getReg(DRV262x_reg_ctrl6, &(ctrl6Reg.r));
	ctrl6Reg.b.bAutoCalTime = 2; // set auto-cal time to 1s
	DRV262x_setReg(DRV262x_reg_ctrl6, ctrl6Reg.r);
	DRV262x_RatedVoltageReg_t ratedVoltage;
	DRV262x_OverdriveVoltageReg_t overdriveClampVoltage;
	ratedVoltage.r = 0x89;//0x80, // 2.8V
	overdriveClampVoltage.r = 0xBC;//0x8B, // 3V
	DRV262x_setReg(DRV262x_reg_ratedVoltage, ratedVoltage.r);
	DRV262x_setReg(DRV262x_reg_overdriveVoltage, overdriveClampVoltage.r);
	DRV262x_blockUntilGoIsCleared();
	DRV262x_go();
	DRV262x_blockUntilGoIsCleared();
	// read status flags to check auto-calibration result
	DRV262x_getReg(DRV262x_reg_status, &(statusReg.r));
	LOG_INF("status: %x", statusReg.r);
	if (statusReg.b.bDiagResult)
	//DRV262x_loadActuatorConfig(&DRV262x_actuator_VZ30L4B8790008L);
	//if (DRV262x_runAutoCalibration())
	{
		// auto-calibration failed
		LOG_ERR("haptic driver auto-calibration failed");

The procedure always ends with the flag DIAG_RESULT set.

What steps can I take to understand what exactly is the problem? Is it a compatibility issue with the actuator I'm using? I tested the board for shorts and it'd fine. The actuator actually spins and vibrates as expected.

Thank you,

Rafael

  • Hi Rafael,

    I do not see anything obviously wrong with the register settings.

    Do you have the ERM firmly mounted to a mass? if the ERM is loose it can cause the Autocalibration routine to not converge on a solution.

    Regards,
    Arthur

  • Hi Arthur,

    Yes, I have tried both just taping the actuator to our battery to hold it down, as well as holding the actuator between my fingers during the calibration procedure. I have tried with a different board (this is our custom prototype) as well as with another actuator of the same model, and then connecting the DRV2625 output to the ERM actuator on a DRV2605 EVM we have here (after disconnecting JP3 and JP4). Under all of these circumstances, the auto-calibration procedure results in a fail.

    I am also trying to run the diagnostics procedure, which again results in a failure. For both operations, the status register 0x01 reads as 0x88.

    Anything else we should try here?

    Thank you,

    Rafael

  • Hi Rafael,

    There are a few things you can try (in no specific order). this is how I would try to debug this. I essentailly want you to change the input values to the auto calibration engine. These will also apply to the diagnostics routine. 

    - Slightly change the OD_CLAMP and RATED_VOLTAGES, since the VDD is 3V perhaps there is not enough headroom for the device to drive 3V to ERM

    - Change DRIVE_TIME[4:0]. perhaps try the maximum and minimum values

    - Change the LOOP_GAIN

    Regards,

    Arthur

  • Hi Arthur,

    Thank you for the suggestions. I will try that and let you know.

    Is there anything you can tell me regarding the reasons that this procedure fails? It could help me to focus on specific parameters or directions to go to when testing.

    Regards,

    Rafael

  • Hi again Arthur,

    Just wanted to let you know that your first suggestion worked. I lowered the rated voltage and over-drive clamp to 2.8V and then the calibration was successful.

    Originally I had tried a rated voltage of 2.8V and od clamp of 3V, but that did not work, but I guess your comment about the headroom not being enough was dead on and I just needed to lower it even further.

    Thank you very much for your help.

    Regards,

    Rafael