2019-08-12 03:14 PM - edited 2023-11-20 09:27 AM
I am using two LPS22HB on one board to measure two pressures. In about half of the boards, both sensors work wonderfully. In the other half boards, one of two sensors operates perfectly normally but the other sensor reports barometric pressure and temperature readings in the 52XXXPa and 7C ranges (for office environments at roughly 300m above sea level these normally are 97XXXPa and 25C .)
On boards with failing sensors, the sensor that works *always* works, the sensor that fails *always* fails (so if the sensors were labeled sensor A and sensor B, on some boards sensor A has failed and on other boards sensor B has failed.)
The bad sensors communicate fine but report data that seems to be scaled incorrectly. They report this data continuously (not intermittently). If you never examine the data they return, the sensors appear to be functioning normally. This operation is consistent regardless of various configuration changes such as data rate (ODR2:0=***) or how much filtering is applied (disabled to ODR/20).
I must repeat that the sensors communicate fine but report vastly incorrect information for BOTH pressure AND temperature, so this is not a calibration thing or a software thing. It appears some sensors are just really bad at math somewhere inside.
Please help me understand how the sensor can report such a crazy value and what I can do to help. Thanks.
Supporting data:
Below is a list of the readings of one board, sensor 1 then sensor 2 pressures, taken about 1 second apart. Note that although both sensors are reporting varying data, only sensor 1 is reasonable. Temperatures for bad devices report some 20 degrees below where they should (this can be seen in the I2C event table below.)
Sens1 Sens2
97718 52534
97718 52535
97718 52535
97719 52535
---Door to lab opened
97694 52534
97695 52534
97705 52534
---Door to lab closed
97716 52535
97718 52535
97719 52536
97720 52535
97719 52534
97718 52534
97719 52534
…
2 hours lapse
97696 52531
97695 52531
97695 52532
97697 52531
This operation follows on hand soldered prototypes where a tiny circuit board just larger than the sensor was soldered to the sensor to connect using a tiny flex circuit. All of these hand assembled boards fail identically to the failing sensors assembled to my production level boards soldered in a high quality, high volume PCB assembly facility.
Below are scope traces showing the actual signals:
The sensor reporting good data (976xxPa at address 1011101x)
Sensor reporting bad data 525xxPa at address 101100x)
I2C transactions as decoded by the scope: