I tried to improve the stability (0g offset and scale factor) of ADXL355 by adding a heater on it and doing temperature control with the chip using internal temperature sensor as feedback.
Unfortunately, I found that the output data on Z axis strongly drift while heating.
The drift is between 3.4mg/°C and 4.2mg/°C (depending if heating or cooling) which is totally out of specification of the datasheet (expect something around +/-0.15mg/°C).
See attached plots and data with Z acceleration on the top and chip temperature on the bottom. During heating/control and natural cooling. ADXL355 full scale is +/-8G and ODR is 4000Hz downsampled to 10Hz with appropriate low pass filter.
X and Y axis seems OK and drifts are in the range of the datasheet. I tried with 4 devices and found the same behaviour.
Is there a fundamental or internal reason for this behaviour?
I did some more tests with ADXL355 on the edge to get the gravity on Y axis and to figure out whether it is a gain drift or offset drift.
See attached plots and data. ADXL355 full scale is +/-8G and ODR is 4000Hz downsampled to 10Hz with appropriate low pass filter.
In this situation, drift on Z axis is still between 3.3mg/°C and 4.1mg/°C (depending if heating or cooling) so I can conclude that it is dominated by an offset drift.
On the Y axis, there was approximately 10ug/°C drift when average value is 0g and approximately 50ug/°C when average value is 1g.
I can deduce offset change of 10ug/°C and sensitivity change of 0.0005%/°C which is totally coherent with datasheet typical value of +/-0.02mg/°C and +/-0.01%/°C
I did some more tests on ADXL355 with +/-2g range and 500Hz ODR. I align gravity along +Z, +Y and -Z.
I can observe the same drift and it allows me to confirm that the observed drift in temperature is caused by Z 0g drift (4.41mg/°C) and sensibility change due to temperature is within specification of the datasheet (<0.01%/°C).
After doing some more tests and exchanges with AD team, the mounting of a heating element directly on the top of the package is the cause of the observed drift. The induced thermal gradient in the package in Z direction could be responsible of the drift.
Thanks for posting your progress and possible root cause discovered during troubleshooting. Good luck with the next steps in your project.