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.

DRV2605LYZFT - Unable to drive vibration motor

Other Parts Discussed in Thread: DRV2605, DRV2605L

Hi,

Haptics driver part number -  DRV2605LYZFT

Vibration motor used - (908-100-8mm Brushless Vibration Motor - 3mm Type)

Please help me with the below queries,

1. Can DRV2605LYZFT be used to drive the above mentioned vibration motor?

2. I have tested both auto calibration and Diagnostic modes. Both fails. What may be the reason for this?

3. I am using linux driver "drivers/input/misc/drv260x.c" (KERNEL version 3.18) to validate the driver. After loading this driver also, DIAG_RESULT in Register 0x0 returns failure. Please confirm whether this device driver is compatible for DRV2605LYZFT.

Thanks,

Kastoori S

  • Kastoori,

    The DRV2605 should be able to drive that motor. This is an ERM, so be sure to have the part in ERM mode.
    What bit is failing in the diagnostics? The auto-cal/diagnostics can typically be fixed by changing the algorithm settings in registers 0x1A and 0x1C.
    Can you feel the motor vibrate?
    My colleague can comment on the linux driver inquiry.
  • Hi,

    Thanks for your response.

    I have tried with ERM mode also. I didn't feel any vibration.

    I will test by changing the values in 0x1a and 0x1c.

    How to check the reason for diagnostics. I don't see any register for that purpose. I am referring datasheet www.ti.com/.../drv2605l.pdf

    I am trying with RTP mode by configuring 0x1 to 0x5 and writing some random values in 0x2 (RTP_INPUT) register.
    Please confirm whether this is the correct procedure and suggest me the values need to be configured in 0x2 register.

    And please let me know How you are confirming the motor mentioned below belongs to ERM type.

    Regards,
    Kastoori S
  • Hi, Kastoori:

    the driver is compatible for DRV2605L.

  • Kastoori,

    This is an ERM because it is driven t a DC voltage and is labelled as a brushless motor. An LRA is a resonance actuator that operates at a specific resonance frequency and RMS voltage.
    I'm sorry, I was thinking about the DRV2605, not the L version. Disregard the reason for diagnostics.
    You need to set ERM mode in register 0x1A. Then setting RTP mode should produce a DC output. The output RTP value (0x02) can range from 0x00 to 0x7F. Try this without the motor and measure the voltage across the outputs. Then try with the motor attached.
  • Hi,

    With these driver loaded, I am seeing DIAG_RESULT bit returns fails for auto_calibration mode. Can you please tell me If there is something wrong in auto calibration procedure done in driver code.

    I am selecting ERM type.

    Regards,
    Kastoori S
  • Hi, Kastoori:

    from the information below, it seems a driver IC is already integrated.

    so, DRV2605 cannot detect the backEMF of the actuator. that's why the calibration fails.

  • Using a motor similar to this one. We can talk with it if only the driver is present, but once an MCU (Atmel XMega) is connected along with the driver and the motor, the motor no longer passes calibration and the OC_DETECT bit is being set. When we test this with the Adafruit breakout board + motor only, it works, but not with the MCU board. Any thoughts?
    Thank you,
    Tanja
  • Hi, Tanja:

    following the "OC_Detect", the DRV2605 requires minimum 4ohm load (typical). can we check the resistence of OUT+ to GND, OUT- to GND, OUT+ to OUT?
  • We have since resolved the issue and are programming the devices properly with valid haptic responses. DRV2605L was not properly enabled by the MCU. We did check min load as one of the first steps in debug. Our motor impedance is 26Ohm, so we are satisfying the min requirement for proper drive on the output of the DRV2605L.
    Thank you for responding, Peter. I appreciate that.
    Tanja
  • Hi,

    Even if the calibration fails, can we drive the motor by setting 0x1A register to ERM mode, 0x1 register to RTP and configuring some value in RTP_INPUT?

    Is that possible?

    If not so, What changes need to be done in HW or SW? . Please suggest.

    Thanks,
    Kastoori S
  • Hi, Kastoori:

    Yes, we can do that.

    here are the steps:

    1. set DRV2605L to ERM mode and ERM open loop
    2. set the wanted output voltage to register 0x17
    3. set RTP mode and RTP strength

  • Hi,

    The above mentioned steps (step 1 and step 2 with 0x17 register to 0x88) is configured while loading the device driver itself, if we select the ERM type. But still, i am not able to drive the motor by configuring 0x1 and 0x2 registers.

    As i mentioned earlier , I am using linux device driver "drivers/input/misc/drv260x.c" (KERNEL version 3.18)"

    Regards,
    Kastoori S
  • Hi, Kastoori:

    can you please share the register dumps?
    we can check from the register configurations.

    Thanks.
  • Hi,

    Please find the register dump( Registers 0x0-0x22) below in calibration mode. 

            0  1   2   3  4    5   6   7   8   9   a   b   c   d   e   f
    00: ec 07 00 01 01 00 00 00 00 00 00 00 00 00 00 00
    10: 00 05 19 64 19 ff   88 88 0c 6c 26 80 25 60 20 80
    20: 33 98 11

    After this, I am configuring 0x1 and 0x2 registers for RTP mode.

    Regards,

    Kastoori S

  • Hi, Kastoori:

    DRV2605L doesn't need calibration in open loop mode.

    actuator spec i found:
    www.precisionmicrodrives.com/.../908-100-8mm-brushless-vibration-motor-3mm-type

    after checking the registers, here are what i found:
    1. register 0x1a: default is 0x36, can you check why it is 0x26 in your project?
    2. registe 0x1c: default is 0xd5, can you check why it is 0x25 in your project?
    3. registe 0x1d: default is 0xa0, can you check why it is 0x60 in your project?