EEVblog Electronics Community Forum
Electronics => Projects, Designs, and Technical Stuff => Topic started by: Boscoe on April 08, 2022, 05:57:20 pm
-
Hi all,
I would really like to get any insight on this problem, it's really causing me headache!
I am using the ADXL355B in a sensor that takes a measurement by averaging 500 raw samples from the ADXL355B. A measurement is taken every one minute. The ADXL355B is completely unpowered in the 1 minute interval. The ADXL355B is powered up for approximately 1.3 seconds while it’s initialised and the measurement is taken. The register values are attached.
The implementation of the ADXL355B circuit is standard with SPI and is powered with 2.6V.
I have throughly checked the code used to read the data from the ADXL355B and how we process the data however cannot see any issue. Also, as seen in the graph, it appears the problem is highly likely not to be an issue with data corruption or incorrect processing as it seems linked with the orientation of the sensor. Also, I have verified that the device is capable of measuring angle correctly at least once in 360 degrees in both axes by rotating the device arbitrary angles when mounting to the test setup. To summarise, the issue is intermittent.
The product consists of the ADXL355B soldered to a 4 layer FR4 PCB which is bolted to a 5mm thick stainless steel base.
The test setup consists of the product bolted to a revolving plate. The plate rotates in one plane very accurately with a precision of 0.0016 degrees. Two axes change value when the test setup is rotated, one of the axes is in line with the axis of rotation and so should see very small amounts of change in g value only caused by the non perfect alignment of the sensing elements in the ADXL355B with the axis of rotation.
In the test setup, the X axis is in line with the axis of rotation, so we see sinusoidal waves in the Z and Y axes.
The issue is extreme noise like data, dominant in the X axis but we also witness in the Z and Y axes when the Z axis is approaching 0g level (flat). Please see the graph.
The test setup is completely stationary when the measurement is taken.
I have submitted two tickets with Analog devices, they replied with one email to the first ticket for more information but haven't replied after that. I have also posted this issue in the engineer zone forum but I've had no luck there either.
Below, in the zoomed in graph, ten measurements are taken for each angle step change in the test setup. You can see large glitches, which tend to happen when the ADXL355B is 90 degrees (Z axis close to measuring 0g) but it's not happened in this case.
In the graph with many sine wave cycles just one measurement is taken per step stage. It gives a better insight into the behaviour being related to the angle.
Any help, pointers for new tests or insight would be really appreciated! Thank you in advance!
-
impossible to understand your set-up and reason for power down of Sensors
Please send photos of entire machine, Sensors mount and schematics if you seek our advice
Jon
-
Suggestions:
- Try mounting the PCB in other orientations to the base (Y or Z parallel to the axis of rotation).
- Do not power down the circuit between measurements.
- Do not wait one minute between the measurements! Reduce the angle resolution, turn the base 5 or 10 degrees at a time.
If you try these, what effect if any do they have to the results?
The angle of rotation accuracy is not important here. If you are now turning the base plate with a geared motor, disconnect the motor and turn by hand.
Can you attach a disc with degree markings to the test setup? That gives you enough accuracy to turn by hand.
-
Hi both, thank you for your replies and sorry for not responding to them. I do appreciate the feedback.
I ended up going down a rabbit whole of twists and turns to find two issues. One with the ADXL355 and one with my code.
I think the ADXL355 issue is based on the internal data processing path included within the sensor. There are some analogue and digital lowpass filters and a little but of processing. Without understanding exactly how that processing is implemented it's not possible for me to give a definitive answer as to why the following happens. All this to say the first 3 - 4 samples read from the FIFO are garbage. They kind of look like settling patterns of the filters however I think this might be my brain finding patterns where there are none. These first few values might be 0.5FS offset from the mean of valid data.
The second issue was I was averaging a number of samples from the ADXL as unsigned integers, not as what they are - signed integers.
I've fixed theses issues (the FIFO issue by reading from the direct XYZ registers) and have been running a test for 3 hours. All is good so far.