2020-09-17 12:57 AM
Dear sir,
We are using your company's three-dimensional acceleration chip LIS2DS12. Now we have found a fatal defect. When the ambient temperature value detected by the temperature sensor inside the chip changes from 24 ℃ to 25℃, the acceleration output value will jump without control. The jump amplitude is about 100 LSB when the range is 2g.
When the range is set to 16g, the jump amplitude will be less than ten LSBs, and the duration jump duration is exactly an integral multiple of the temperature sampling period. Since our application needs to integrate acceleration into velocity, this jump signal will cause serious data distortion.
We sincerely hope that your company can provide solutions. We think the possible solutions are as follows:
2. Find out the cause of temperature and acceleration correlation, whether it is a chip design defect or an internal setting problem
3. If there is no way to solve the problem, whether there is an alternative model with the same specification.
Solved! Go to Solution.
2020-09-17 02:59 AM
Hi @Pxiao.2 ,
thank you for reporting the issue. May I ask you some further question to narrow down the problem, since it is not a know issue so far.
float_t lis2ds12_from_lsb_to_celsius(int16_t lsb)
{
return (((float_t)lsb / 256.0f) + 25.0f);
}
register 1Ch, bits <4:0> = xxx00000 bin
register 1Dh, bits <4:0> = xxx00000 bin
register 1Eh, bits <4:0> = xxx00000 bin
-Eleon
2020-09-17 02:59 AM
Hi @Pxiao.2 ,
thank you for reporting the issue. May I ask you some further question to narrow down the problem, since it is not a know issue so far.
float_t lis2ds12_from_lsb_to_celsius(int16_t lsb)
{
return (((float_t)lsb / 256.0f) + 25.0f);
}
register 1Ch, bits <4:0> = xxx00000 bin
register 1Dh, bits <4:0> = xxx00000 bin
register 1Eh, bits <4:0> = xxx00000 bin
-Eleon
2020-09-17 03:21 AM
Dear sir,
Thanks for your reply! Good news is that I've just solved the problem. Whereas, this three-dimensional acceleration chip LIS2DS12 indeed exists fatal defects, and this will affect all the sensors and all the 3 axis. The acceleration value will be affected when the value of the internal register 0x26 changes from 0x00 to 0xff.
Through the enumeration test of all registers, it is found that the data acquisition will be affected by the register 0x01. When the register is set to 0x01, the temperature will not be collected and the data will return to normal. Thank you again for your timely reply!
2020-09-17 03:36 AM
Hi @Pxiao.2 ,
please note that the "0x00" level for the 0x26 register is 25°C, and that for lower temperature (such as 24°C) you have to convert in two's complement the register content (which will be something like 0xFx).
I confirm you that the reserved register 0x01 bit <0> has the following significance: ‘0’- logic, default; ‘1’-logic turn off temperature sensor.
-Eleon
2020-09-17 03:37 AM
Dear Sir,
I've just tried your suggestion, and it indeed works very well. Could you please tell me your temperature compensating algorithm? Thank you very much!
2020-09-17 03:47 AM
The algorithm in production line is a linear compensation that minimize the offset at 25°C and the gain at two temperatures.
But the soldering process could cause some misalignment so there is the possibility to compensate temperature at application level according to the datasheet values:
-Eleon
2020-09-17 04:19 AM
I'm appreciate for your help! Thank you so much!