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.

DRV2605L: Different motor configurations

Part Number: DRV2605L


Dears,

   Could you help to give some advice for motor configurations based on customer motor which they selected.

   vib-rated-mv=<3200>;

   vib-overdrive-mv=<3200>;

   mode=<DRV260X_LRA_MODE>;

   library-sel=<DRV260X_LIB_LRA>;

    whether these configurations are corrcet?

    

SLA0815B-01-SPEC-V6-通用版.pdf

  • The Mode and Library-Sel parameters are correct.

    however the rated voltage in the datasheet is given as 1.2V for the LRA. why have you selected 3200 mV as the rated voltage?

    Regards,
    Arthur

  • Hi Arthur,

       Does the overdrive also need to be changed?

  • Yes, sometimes LRA datasheets will give the overdrive votlage. If they do not, then we reccomend that the Overdrive voltage be set to ~1.3xRated_Voltage

    Regards,
    Arthur

  • We changed a LRA motor and then configured it according to the program shown above. Then we found that the waveform was distorted, are there other parameters that need to be modified?

  • add setting file

        rated_voltage = drv260x_calculate_voltage(VIB_RATED_MV);
        overdrive_voltage = drv260x_calculate_voltage(VIB_OVERDRIVE_MV);
        
        drv2605L_reg_write_one_byte(DRV260X_RATED_VOLT,rated_voltage);
        drv2605L_reg_write_one_byte(DRV260X_OD_CLAMP_VOLT,overdrive_voltage);
    
        drv2605L_reg_write_one_byte(DRV260X_MODE,DRV260X_AUTO_CAL);
        drv2605L_reg_write_one_byte(DRV260X_CTRL3,DRV260X_NG_THRESH_2);
        drv2605L_reg_write_one_byte(DRV260X_FEEDBACK_CTRL,DRV260X_FB_REG_LRA_MODE |
    		DRV260X_BRAKE_FACTOR_4X | DRV260X_LOOP_GAIN_HIGH );
        
       //calibration
        result_i2c = drv2605L_reg_write_one_byte(DRV260X_GO,DRV260X_GO_BIT);
        if(result_i2c != CY_SCB_I2C_SUCCESS)
        {
             Term_Printf("drv2605L(%d) write reg DRV260X_GO err\r\n",seq);
             goto drv2605L_err;   
        }
    
        do 
        {
             result_i2c = SCB3_I2C_Reg_Read(DRV2605L_I2C_ADDR,DRV260X_GO,&reg_data,1);
             if(result_i2c != CY_SCB_I2C_SUCCESS)
             {
                 Term_Printf("drv2605L(%d) read reg DRV260X_GO err\r\n",seq);
                 goto drv2605L_err;   
             }
        } while (reg_data == DRV260X_GO_BIT);
    
    //set TRIGGER mode
    drv2605L_reg_write_one_byte(DRV260X_MODE,DRV260X_EXT_TRIGGER_EDGE);
    
    
    
    
    
    #define VIB_RATED_MV                    1800
    #define VIB_OVERDRIVE_MV                1800
    
    
    #define DRV260X_AUTO_CAL                0x07
    #define DRV260X_NG_THRESH_2             (1 << 6)
    #define DRV260X_FB_REG_LRA_MODE         (1 << 7)
    #define DRV260X_BRAKE_FACTOR_4X		(3 << 4)
    #define DRV260X_LOOP_GAIN_HIGH		(2 << 2)
    #define DRV260X_GO_BIT                  0x01
    #define DRV260X_RT_PLAYBACK             0x05
    #define DRV260X_EXT_TRIGGER_EDGE	0x01
    
    
    //DRV2605L reg list
    #define DRV260X_STATUS                  0x0
    #define DRV260X_MODE                    0x1
    #define DRV260X_RT_PB_IN                0x2
    #define DRV260X_LIB_SEL                 0x3
    #define DRV260X_WV_SEQ_1                0x4
    #define DRV260X_WV_SEQ_2                0x5
    #define DRV260X_WV_SEQ_3                0x6
    #define DRV260X_WV_SEQ_4                0x7
    #define DRV260X_WV_SEQ_5                0x8
    #define DRV260X_WV_SEQ_6                0x9
    #define DRV260X_WV_SEQ_7                0xa
    #define DRV260X_WV_SEQ_8                0xb
    #define DRV260X_GO                      0xc
    #define DRV260X_OVERDRIVE_OFF           0xd
    #define DRV260X_SUSTAIN_P_OFF           0xe
    #define DRV260X_SUSTAIN_N_OFF           0xf
    #define DRV260X_BRAKE_OFF		0x10
    #define DRV260X_A_TO_V_CTRL		0x11
    #define DRV260X_A_TO_V_MIN_INPUT	0x12
    #define DRV260X_A_TO_V_MAX_INPUT	0x13
    #define DRV260X_A_TO_V_MIN_OUT          0x14
    #define DRV260X_A_TO_V_MAX_OUT          0x15
    #define DRV260X_RATED_VOLT		0x16
    #define DRV260X_OD_CLAMP_VOLT           0x17
    #define DRV260X_CAL_COMP		0x18
    #define DRV260X_CAL_BACK_EMF            0x19
    #define DRV260X_FEEDBACK_CTRL           0x1a
    #define DRV260X_CTRL1			0x1b
    #define DRV260X_CTRL2			0x1c
    #define DRV260X_CTRL3			0x1d
    #define DRV260X_CTRL4			0x1e
    #define DRV260X_CTRL5			0x1f
    #define DRV260X_LRA_LOOP_PERIOD         0x20
    #define DRV260X_VBAT_MON		0x21
    #define DRV260X_LRA_RES_PERIOD          0x22
    #define DRV260X_MAX_REG			0x23
    
    
    

  • Hi Martin, 

    this is the correct waveform. if auto calibration is successfull then it is OK

    Regards,
    Arthur

  • But why didn't I find this BEMF on another small size motor?

  • the BEMF is still in the waveform you attached. the BEMF is common mode between the outputs therefore will not appear when the waveform is taken as OUTP-OUTN

    Regards,
    Arthur