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 and waveform

Part Number: DRV2625

Hello,

I have a LRA motor with the these specification:

Frequency: 100Hz

Resistance: 6.5E

Rated current: 300mArms

Rated voltage: 2Vrms

According to the datasheet, the drive time should be 5msec. But the maximum drive time is 3.6 which can be used.

Rated voltage is 90 and OD Clamp is 138. Rest of the settings necessary for auto calibration used default values and tried to change the Blanking time and Inductor discharge time. Auto calibration is set to 1000msec

When I start the auto calibration I don't see anything happening. And when I read the registers 0x21, 0x22 and 0x23, the values have not been changed. They are the same as default.

However I do set the Go bit, but it seems like it is cleared immediately. and no status is set at all, not even the processDone.

I use the external trigger enable (TRIG_PIN_FUNC[1:0] = 1) to start and stop the motor. I was wondering if then still the auto calibration can be started using the Go bit. But I also tried to set the TRIG_PIN_FUNC[1:0] = 0 and set the Go bit without succes.

The resistance is lower then specified, but I was wondering if that could be the problem. because I don't see anything happening at al on the output of the driver. I have also tried to add a resistor and an extra motor in series, but still no succes.

Without auto calibration, I still can run the motor. So I was using the RTP mode and the motor is running every time I give the external trigger that the motor can start. but when I use the Waveform sequence, the motor will not always start when the external trigger is high. There is no sequence in when the motor would start and not, it seems random. I have tested the motor with external trigger 1 second high, 1 second low. If the motor will run, it is of course always at the low to high flank of the external trigger. But approx. 25-50% of the time the trigger will come, the motor is not running.

I have ordered a few other motors according to specs. When I receive them I will test these to.

What am I doing wrong? is there anything else I can try?

Thank you!

  • Hello,

    Thank you for reaching out. All processes ((RTP, Waveform Sequencer, Calibration and Diagnostics), follow the process flow below. I recommended first checking that you are properly setting the mode for auto calibration before triggering (refer to the image below, bit 1-0 descriptions. For triggering, this can be done with the Go bit, but not when you have TRIG_PIN_FUNC[1:0] = 1 (refer to the image below, bit 3-2 descriptions). 

    Also, you mentioned that you are setting the rated voltage to 90 and OD clamp to 138, but your LRA is only rated for 2Vrms. Note that auto-calibration will send a full scale signal to the LRA based on the rated and OD clamp voltages.

    Hope this helps!

    Regards,
    Sydney Northcutt 

  • Thank you for your answer!

    The autocalibration is now working. Thought I was clearing the TRIG_PIN_FUNC[1:0] but seems like it i was clearing the wrong bit. I have also changed the Clamp voltage a little. Now the driver is calibrating and I get other values back than defaults in the three registers.

    After the autocalibration I change the TRIG_PIN_FUNC[1:0] back to value 1 -> external trigger but than I still encounter the problem that the waveform is not activated every time when the trigger comes. 

    The settings for the waveform from register 0x0F to 0x19 are:

    0x01
    0x00
    0x00
    0x00
    0x00
    0x00
    0x00
    0x00
    0x00
    0x00
    0x00

    So I only use one waveform and set to the first sequence no wait, no loop. I have tried both, external trigger (enable) and external trigger(puls). Both not working as expected. about 25-50% of the time the waveform is not activated.

  • Hello,

    Glad to hear calibration is working. What amplitude is your trigger set to when pulled high? The min digital high-level input voltage is 1.41 V. Anything below this could have the results that you are describing.

    Regards,
    Sydney Northcutt 

  • Hello,

    The trigger high voltage is 5V. But when I do not use the external trigger but the GO bit, the waveform is performed every time.

  • Hello,

    Could you provide me with more information on the registers you are using when you see this issue? I am working on getting the DRV2625 EVM to try and replicate this issue / find a solution. 

    Regards,
    Sydney Northcutt 

  • Hello,

    Assuming I am using the default values, i write to all the registers as followed. Starting at register 0x00.

    drv_reg.chipId.r = 0x13;
    drv_reg.status.r = 0x00;
    drv_reg.intzMask.r = 0x18;
    drv_reg.diagZResult.r = 0x00;
    drv_reg.vbat.r = 0x00;
    drv_reg.lraPeriodMSB.r = 0x00;
    drv_reg.lraPeriodLSB.r = 0x00;
    drv_reg.ctrl1.r = 0x44;
    drv_reg.ctrl2.r = 0x88;
    drv_reg.vbatMonitor.r = 0x00;
    drv_reg.vbatThreshold1.r = 0x92;
    drv_reg.vbatThreshold2.r = 0x8D;
    drv_reg.go.r = 0x00;
    drv_reg.libCtrl.r = 0x00;
    drv_reg.rtpInput.r = 0x2F;
    drv_reg.waveformSeq1.r = 0x01;
    drv_reg.waveformSeq2.r = 0x00;
    drv_reg.waveformSeq3.r = 0x00;
    drv_reg.waveformSeq4.r = 0x00;
    drv_reg.waveformSeq5.r = 0x00;
    drv_reg.waveformSeq6.r = 0x00;
    drv_reg.waveformSeq7.r = 0x00;
    drv_reg.waveformSeq8.r = 0x00;
    drv_reg.waveformSeqLoop1.r = 0x00;
    drv_reg.waveformSeqLoop2.r = 0x00;
    drv_reg.waveSeqMainLoop.r = 0x00;
    drv_reg.odt.r = 0x00;
    drv_reg.spt.r = 0x00;
    drv_reg.snt.r = 0x00;
    drv_reg.brt.r = 0x00;
    drv_reg.null1.r = 0x00;
    drv_reg.ratedVoltage.r = 0x43;
    drv_reg.overdriveVoltage.r = 0x62;
    drv_reg.aCalCompResult.r = 0x0D;
    drv_reg.aCalBEMFResult.r = 0x6D;
    drv_reg.feedbackControl.r = 0x3A;
    drv_reg.ratedVoltageClamp.r = 0x64;
    drv_reg.overdriveVoltLvl1.r = 0x80;
    drv_reg.overdriveVoltLvl2.r = 0x00;
    drv_reg.ctrl3.r = 0x9F;
    drv_reg.ctrl4.r = 0x11;
    drv_reg.ctrl5.r = 0x0C;
    drv_reg.ctrl6.r = 0x02;
    drv_reg.null2.r = 0x00;
    drv_reg.ctrl7.r = 0x00;
    drv_reg.null3.r = 0x00;
    drv_reg.LRAOLPeriodMSB.r = 0x00;
    drv_reg.LRAOLPeriodLSB.r = 0xC6;
    drv_reg.currentCoefficient.r = 0x00;

    After these values, I start the auto calibration routine.

    I am using the VL32158H motor.

    After the auto calibration routine. I set register drv_reg.waveformSeq1.r to 0x01 and all other wareformSeq to 0x00 and drv_reg.ctrl1.r to 0x45 to enable the waveform sequences.

    Then just start the sequence using the external trigger and the motor will not run every time.

    I have changed my code that I am not using the external trigger anymore, but using the GO bit to start and stop the motor with waveform sequences. This is working as expected.

  • Hi,

    Awesome, thank you for this information. 

    Glad to hear you have it working with the GO bit. Once I receive the EVM I will be able to debug the external trigger issue. I will provide you with an update by the end of the week as it will take a few days for the EVM to arrive. Thank you for your patience! 

    Regards,
    Sydney Northcutt 

  • Hello,

    Thank you for your patience. I have the EVM and have done some testing. For the pulse trigger, I am getting waveform play back every time. For the level trigger though, I am seeing the same issue of the waveform not playing every time but its better for some waveforms and worse for others. I am still debugging if this is a timing issue or maybe something with the waveform. 

    Regards,
    Sydney Northcutt 

  • Hi,

    We have found the bug that is causing the trigger to not play the waveform every time. The trigger needs to go low during the auto-brake period which is determined by PLAYBACK_INTERVAL*10 +1ms. If the trigger extends past the waveform, it gets stuck in a state that causes it to not play the next waveform.

    Regards,
    Sydney Northcutt

  • Hello Sydney,

    Thanks for your feedback!

    I will keep it now triggering on the GO bit since this is working and I don't have to change the trigger time when waveform is selected.

    Best regards

  • Hello,

    Great. I will mark this thread as closed.

    Regards,
    Sydney Northcutt