accelerometer sensor current consumption
Hi,
I am working on the lis2dh12 interface to MCU and getting the data. The below observations I found in our device.
1. Getting x,y,z data
2. The current consumption is taking 120ua.
3. When I call the power down (Write LIS_CTRL_REG1, 0x00) it is carrying 10ua.
4. I am using an interrupt pin for fall alert purposes. When I use to declare an interrupt line and check the threshold impact current is too high. If I use power down (Write LIS_CTRL_REG1, 0x00) after reading and the next poll wakes up (Write LIS_CTRL_REG1, 0x47) then I lost my interrupt means didn't get interrupted yet at all. Without a power-down command (i.e Write LIS_CTRL_REG1, 0x47), a fall interrupt is coming.
How to handle and minimize my current. Please check my code flow defined all the registers and suggest me.
#define SLAVE_ADDRESS_I2C 0x19
fnAccel_Register_Write(LIS_CTRL_REG0, 0x10); // Disable the internal pull-up on the SDO/SA0 pin
fnAccel_Register_Write(LIS_CTRL_REG1, 0x47); // Enable X/Y/Z axes & ODR = 50Hz
fnAccel_Register_Write(LIS_CTRL_REG2, 0x00); // High-pass filter disabled
fnAccel_Register_Write(LIS_CTRL_REG3, 0x40); // Interrupt activity 1 driven to INT1 pad
fnAccel_Register_Write(LIS_CTRL_REG4, 0x10); //0x10=4g
fnAccel_Register_Write(LIS_CTRL_REG5, 0x08); // Interrupt 1 pin latched
fnAccel_Register_Write(LIS_INT1_THS, 0x15); // Threshold
fnAccel_Register_Write(LIS_INT1_DURATION, 0x10); // Duration time
fnAccel_Register_Write(LIS_INT1_CFG, 0x95); // Configure free-fall recognition
Our program sequence:
---------------------------------------------------------------------------------------------------------------------------------------
0. Write LIS_CTRL_REG0
1. Write LIS_CTRL_REG1
2. Write LIS_CTRL_REG2
3. Write LIS_CTRL_REG3
4. Write LIS_CTRL_REG4
5. Write LIS_CTRL_REG5
6. Write REFERENCE
7. Write LIS_INT1_THS
8. Write LIS_INT1_DURATION
9. Write LIS_INT1_CFG
10. Poll INT1 pad; if INT1 = 0 then go to fall detection code
11. Read INT1_SRC register
12. Go to 10
void fnLIS_PowerDown_Mode(void)
{
fnAccel_Register_Write(LIS_CTRL_REG1, 0x00);
}
void fnLIS_PowerOn_Mode(void)
{
fnAccel_Register_Write(LIS_CTRL_REG1, 0x47);
}
---------------------------------------------------------------------------------------------------------------------------------------
Please check the above flow and do the needful. What is the best power consumption using this sensor?
Regards,
Kumar
