High accuracy accellerometers? (<0.01deg accuracy/stability)

Hi im currently working on a project that will need to measure level to <0.01degrees, plane with be <10deg to gravity normal.

Do you have any sensors that can do this? Lowest I could find on this site was a 2g sensor.

I know ±0.5g exists out there, but I was hoping for something easier to set up with the micro controllers available.

1 Like

I think you can take a look at these following options.

  1. 10 DOF Mems IMU Sensor: The 10 DOF(degrees of the freedom) sensor is a compact and low cost IMU from. It integrates the ADXL345 accelerometer, the HMC5883L magnetometer,the ITG-3205 gyro and the BMP085 barometric pressure sensor. It’s suitable for most of the controlling system because of the small dimension. Details: 10 DOF Mems IMU Sensor | DFRobot SEN0140 | Core Electronics Australia

  2. IMU: BMI088: The BMI088 is a high-performance 6-axis inertial sensor that allows for highly accurate measurement of orientation and detection of motion along three orthogonal axes. Consisting of a 16-bit digital, triaxial accelerometer and a 16-bit digital, triaxial gyroscope, the BMI088 is unique in the class of high-performance. Details: BMI088 IMU I2C Breakout - Share Project - PCBWay

1 Like

As well as high resolution sensors & acquisition, you’d probably want a bit of signal processing applied in order to get the accuracy you are looking for.

I don’t think the ADXL345 device in the suggested sensor module would work, It’s data sheet says

Its high resolution (4 mg/LSB) enables measurement of inclination changes less than 1.0°.

Which is a little short of your 0.01 degree requirement.


1 Like

Yeah by my calcs 0.01 degrees (or ~30") is ~0.17mg. I also wonder how stable the LSB would be. If it is flickering ±0.05degrees then that might not do me any good, even after applying a filter.

The BMI088 may do the job though, its resoltution is half my accuracy requirement, though again, im not too sure how well resolution translates to accuracy

1 Like

Hi Angus,

Sounds like a neat project!
What is your application? Do you need to use an accelerometer?

1 Like

Hi Liam :wave:, I measure ship foundations for a living, and one part of the job is to measure the angle of one foundation to a baseline foundation known as the “master reference plane”
To do this when the ship in the water means that both foundations are moving, and must be measured continuously at the same time, and determine the differential between the raw values.
On land this is easy, as there is no movement, and we have equipment that measures surfaces relative to gravity with <50um accuracy

I think i can do this better than the current “in water” system using microcontrollers, magnetometers, and RF transceivers (or even just loging to a SD card)
The device ill build will be about 150mm in diameter, have a machined surface, and should be accurate to 30" (this would be about ±25um over the 150mm). I have a 5" granite table to calibrate these on.

As I want to be confident results are accurate to 30" (~0.01d), i think i would expect the accelerometer to be sensitive to angles less than that. Ideally 1/10th

Let me know your thoughts on that :slight_smile: . My understanding is the lower the g range, the higher the resolution/sensitivity at lower angles. Problem is lowest i have seen on this site is ±2g.


Hi Angus,

Super sick project!!

Mark and Lia have you started with a couple of good suggestions but I’d also recommend: Adafruit ISM330DHCX + LIS3MDL FeatherWing - High Precision 9-DoF IMU | ADA4569 | Core Electronics Australia
Not only are you looking for a low range but also as many usable bits from each sensor inside.

Mark makes an excellent point about signal processing, removing and characterising noise, ensuring the angular velocities match and checking the tram of the two planes are all essential parts of the project, there are lots of guides around on sensor fusion and Kalman filters that ought to help out!

There might be another issue you run into, sending the values at the same time, you could do this by blasting a base station or syncing 2 RTC’s, but something to keep in the back of your head.

Keen to see this one come together!

Hey Liam thanks for the reply! That does look like a good sensor, seems cheaper too than getting all the components separately too.

Still thinking about how to code the RF transmission, im planning to have 1 master unit.
The idea would be the slave unit would get an average/filtered raw for the last 0.5s, send those values, and then the master would receive those values and compare its raw for the matching timestamp. then it would display that differential value on its screen, and send the value back to the slave to display. The issue i can see there is i dont know the best way to store and call back those values, and if waiting for a handshake, what happens if the transmitted valued doesnt come? How would it work if i were to use 2 slave units? Need to map out that

As the units will be stationary, the differential value shouldn’t really change but for some sensor error and vibration

I’m also planning to use Adafruit DS3231 Precision RTC Breakout | ADA3013 | Core Electronics Australia for timekeeping between devices. Though i dont know if the onboard timekeeping of the teensy 4.1 would be more that sufficient for the task

Also im not sure how to power the teensy 4.1 wireless? Looks like it needs a 3.7v input if im understanding that right?

Having a look at the Pinout Card for the Teensy it looks like it can take between 3.6-5.5V on the Vin Pin. It also has a VBat pin near the SD card slot for a coin cell battery to power the Date, Time and Power Management.

Thanks Aaron, so how would I go about using consumable batteries? Would it be as simple as 3 AA in series?

Edit: I was also looking at using the Adafruit Pro Trinket LiIon/LiPoly Backpack Add-On as this would allow me to charge and upload code without having to disassemble the device. Unfortunately the connections run the opposite direction, so i would be unable to mount it directly

1 Like