I show that it is indeed possible to locally measure the Earth’s rotation rate, by combining two Bosch BMI160 MEMS gyroscopes, a Pi Pico microcontroller, a motorized turntable (NEMA17), and advanced signal processing techniques: dithering, controlled rotation of the sensor, and Kalman filtering to fuse the measurements from both sensors and from different positions. The precision achieved (on the order of one percent) matches the theoretical value.

Why is this not trivial?

The Earth completes a full turn in 23 h 56 min 4 s (sidereal day), i.e., 0.00416 °/s. Detecting such a low speed with MEMS gyroscopes is not straightforward: at ± 125 °/s, the BMI160 outputs 262.4 LSB/°/s, which puts the LSB around 0.0038 °/s—the Earth’s rotation is barely more than a single bit of raw resolution. At first glance, it would seem impossible to make this measurement with such sensors.

The core of the method

Two key strategies make it possible:

  1. Taking a huge number of measurements: literally hundreds of thousands of data points are collected.
    If the sensor noise is “white,” the variance decreases as 1/n and the standard deviation as 1/√n.

  2. Moving the sensor during measurement, in order to identify the bias of each gyroscope and the influence of gravitational acceleration on the measurement.

Concretely, both of these aspects are handled in a Kalman filter, which processes the measurements from the four tested positions for the pair of sensors.
The goal is to identify a rotation rate that is constant—even if very weak. The entire acquisition chain is designed to isolate this constant while minimizing the influence of sensor biases and dependencies on temperature or gravitational acceleration.


The four positions

While the method would work with a single sensor, using two doubles the acquisition bandwidth, which speeds up obtaining a statistically robust measurement.

Before each measurement, the setup is oriented toward the north. The sensor then rotates about a horizontal axis perpendicular to the north-south direction.

It is moved through four positions during an acquisition cycle (look at the video):

  • Position 1: sensor aligned with the Earth’s rotation axis (90° – azimuth relative to the horizontal, facing north). One cycle consists of 128 readings (32 per position, 16 per sensor), lasting about 10 seconds.

  • Position 2: rotated 180° from position 1.

  • Position 3: a further 90° rotation.

  • Position 4: another 180° rotation from position 3 (i.e., 270° from position 1).

The measurement equations are as follows:

At Position 1:

θP1,A = ΩT + bA + ϵA·TA + nA,T + (g⋅n_measure)·γA,T
θP1,B = –ΩT + bB + ϵB·TB + nB,T – (g⋅n_measure)·γB,T

Position 2 (180°):

θP2,A = –ΩT + bA + ϵA·TA + nA,T + (g⋅n_measure)·γA,T
θP2,B = ΩT + bB + ϵB·TB + nB,T – (g⋅n_measure)·γB,T

Positions 3 (90°) and 4 (270°):

θP3,A = bA + ϵA·TA + nA,T + (g⋅n_measure)·γA,T
θP3,B = bB + ϵB·TB + nB,T – (g⋅n_measure)·γB,T

θP4,A = bA + ϵA·TA + nA,T + (g⋅n_measure)·γA,T
θP4,B = bB + ϵB·TB + nB,T – (g⋅n_measure)·γB,T

Where:

  • ΩT: Earth’s rotation rate

  • bA, bB: bias of sensors A and B

  • ϵA, ϵB: temperature sensitivity coefficients

  • TA, TB: temperatures of sensors

  • nA,T, nB,T: measurement noise

  • (g⋅n_measure): projection of gravity along the measurement axis

  • γA,T, γB,T: coefficients for gravity influence

By intelligently combining the measurements from the different positions—for example, by subtracting the measurement in position 2 from that in position 1—it is possible to separate...

Read more »