Comments (8)
If the sensor is not moving, it would make sense that it would return the same value each time it was read. Also, the available() function has to be called each time a new set of data is to be read from the sensor. That function reads all the sensor axis values as a group, so that they are consistent. Otherwise the angle functions are just reporting what was in the last data set fetched by available(). Finally, the raw data are 16 bit signed numbers that are internally converted to a floating point representation in degrees. So there is a limit to the resolution that is measured by the sensor.
from scl3300.
Thanks for your answer and your thoughts.
I am reading the sensor values for each iteration of the Arduino main loop. Every iteration available()
is called.
In a perfect world, the values are the same when the sensor is not moved, but I was expecting much more noise. Do you really think, it is possible, that the values are so consistent?
That said, I see the angle changes when the sensor moves. It's hard to get an absolute correct angle for reference, but holding the chassis at 45° will also produce an measured angle ~45°.
from scl3300.
from scl3300.
Thanks for the article. I did a comparison of three sensors a while ago (MPU6050, BNO055, SCL3300) and also came to the conclusion, the the SCL3300 is very accurate. That's why I used it in my custom board design.
https://forum.sparkfun.com/viewtopic.php?f=83&t=52967
It still feels a bit weird, that the sensor produces the exact same outputs when it is not moved - it's too good to be true, I can't believe it.
That said, I didn't see any misbehavior, it just feels suspicious ...
Do you see a similar behavior of your sensor?
Today, I tested it with the evaluation board (https://www.murata.com/en-eu/products/sensor/design-development/scl3300-d01-pcb) connected to an original Arduino Due. And indeed, it also produces measurements, that appears multiple times.
I have a calibration routine, where the mean value of 10 measurements is used to zero the current measurement.
With two different devices, I got the same offset to the 15th decimal place.
That feels weird, that two different sensors brings identical measurements ...
from scl3300.
My sensor has always been stable in it's output, except when one of the electrical connections was flakey. Hence the need for available() to provide an output flag to indicate if the data is valid or not.
from scl3300.
Again, thanks for your thoughts.
Actually, I am somewhat reassured now. Especially, as the sensor seems to provide valid angles when moving. Attached is the plot of angles, when laying flat on the table and then tilted to 90° and back to 0°.
Still, I think it's exceptional, that the measured values are so stable and occurring multiple times. I wrote an email yesterday evening to Murata and asked if that is possible and expected. I'll keep you posted ...
from scl3300.
Hallo @DavidArmstrong,
as I mentioned in my last comment, I contacted Murata. They were very friendly and helped me a lot.
To summarize the conversation, there were 2 outcomes
- Hitting exactly 0° is probably normal noise. I also noticed, that the probability to hit 0° is higher, when zeroing the sensor in the first place.
- Duplicates probably occur, when I read the sensor too fast. Not sure, if it's always the case, as I saw different angles before a duplicated occurred, but in some cases it's possible.
They also shared an example code for STM32 mcu. They kindly permitted me to share the code with you in order to improve your Arduino library. I did a quick comparison of both code bases and didn't found much to improve. But you're much more familiar with your code ... They asked us not to make the example code publicity available.
How can I privately contact you to share the example? Of course, I am happy to help to improve your code.
from scl3300.
Private message over Sparkfun Forums sent.
from scl3300.
Related Issues (19)
- Update to standard library release practices
- Operator error HOT 6
- Error checking redesign HOT 2
- Workaround needed for PortentaH7 design flaws HOT 1
- SPI VSPI setting CS Issue HOT 2
- Bitwise leftshift will show a warning on some MCU systems
- SPI Issues HOT 6
- Assistance debugging? HOT 2
- Compatability HOT 8
- Can I use this library for two SCL3300 sensors connected to the same Arduino board? HOT 3
- Library speed HOT 16
- Using the SCL3300 with ESP32 HOT 10
- Need functions for Calculated Tilt Offset from Level values HOT 1
- Accuracy in Mode 4 HOT 3
- reset() function HOT 5
- Connection issues - crcerr HOT 6
- SCL3300 Serial Number is not reported correctly HOT 1
- Reading accelerometer values HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scl3300.