Basic work theory of AFIC
This document explains how does the AFIC work. And how do we get data from MEMS sensors.
How do we get the position information from single Node Segment
In each AFIC node segment, it has one MEMS accelerometers inside, MEMS sensor can output the tilt of each segment with respect to gravity. Just as follow picture shows. The length of Node segment we already know(usually it’s 500mm or 1000mm), we also know the tilt from MEMS sensor, then we can calculate the tilted segment as a line.

In each Node segment it has one white Mark line. Before shipping, we already calibrated all the sensors to ensure that
(1) The MEMS sensor’s X aligns with the physical mark line of Node segment. In this case we can ensure sensor’s X,Y are align with AFIC’s X,Y
(2) the mark line on each Node Segment aligns in same direction.
AFIC segments shows as a 3D polyline in vertical installation. The tilt data of segments will be converted to Cartesian coordinates. As follow picture shows

How to understand the Deviation, Accumulate-Coordinate, and Displacement
Deviation
Please kindly check the follow pictures, deviation is the distance a segment's vertex is from perpendicular (relative to gravity). From follow picture, you can see, in one AFIC chain, it has 3 node segments. The individual tilt of these 3 node segments are θ₁,θ₂,θ₃. Their deviation are a,b,c
a = Node lenght * sin θ₁ b = Node lenght * sin θ₂ c = Node lenght * sin θ₃

In the Raw data of AFIC, it also has g(x), g(y), g(z). How should we understand g(x),g(y) and g(z)?
Each AFIC node contains a tri‑axial MEMS accelerometer that measures the gravity vector components along its internal X, Y, and Z axes. When the AFIC segment is stationary, the accelerometer senses only the acceleration due to gravity. The three outputs, g(x), g(y), and g(z), represent the projections of the gravity vector on the sensor’s X, Y, and Z axes. They satisfy the following relationship:
g (x) ² + g (y) ² + g (z) ² = 1
This means that the three components together form a unit gravity vector.
Relation to tilt angle
When the AFIC segment is perfectly vertical, almost all of the gravity acts along the Z axis so that
g (z) ≈ 1,g (x) ≈ 0,g (y) ≈ 0
As the segment tilts away from vertical by an angle β, the gravity vector is redistributed among the three axes according to:

where β is the tilt angle relative to the vertical direction,and φ is the azimuth angle (the horizontal orientation of the tilt).
Engineering Interpretation in AFIC
g(x) and g(y) represent the horizontal projection components of the tilt. They are used to calculate the horizontal deviations of each segment:

g(z) represents the vertical projection (along gravity):

It corresponds to the portion of the segment length aligned with the vertical (gravity) direction.
SAMPLE
We take 5 sensors as example(collected date is 2025-11-01 13:00:02), sensor 9381449 is in bottom.
For 938149
Deviation x=1000*g(x)=1000*(-0.000719)=-0.719
Deviation y=1000*g(y)=1000*(-0.009757)=-9.757
Deviation z=1000*g(z)=1000*(0.999952)=999.952
For 937967
Deviation x=1000*g(x)=1000*(0.012506)=12.506
Deviation y=1000*g(y)=1000*(-0.007528)=-7.528
Deviation z=1000*g(z)=1000*(0.999893)=999.893
For 937966
Deviation x=1000*g(x)=1000*(-0.018199)=-18.199
Deviation y=1000*g(y)=1000*(0.012520)=12.520
Deviation z=1000*g(z)=1000*(0.999756)=999.756
For 937965
Deviation x=1000*g(x)=1000*(0.002996)=2.996
Deviation y=1000*g(y)=1000*(0.041807)=41.807
Deviation z=1000*g(z)=1000*(0.999121)=999.121
For 937964
Deviation x=1000*g(x)=1000*(0.032130)=32.13
Deviation y=1000*g(y)=1000*(0.010895)=10.895
Deviation z=1000*g(z)=1000*(0.999424)=999.424

Accumulate-Coordinate
For a AFIC chain installed in a vertical borehole, with the reference at the bottom, the (0,0,0) coordinate corresponds the bottom of the borehole. Please check the follow picture. We use the direction of Mark line as the X+ direction. The upward direction of gravity at the bottom of the hole is the Z+ axis. Then we can know that

Accumulate X3 =Deviation (a) + Deviation (b) + Deviation (c)
We can deduce that:

SAMPLE
Then we can calculate the accumulate coordinate of the 5 sample sensors.
For 938149
Accumulate X=deviation x(938149 )=-0.719mm
Accumulate Y=deviation y(938149)=-9.757mm
Accumulate Z=deviation z(938149)=999.952mm
For 937967
Accumulate X=deviation x(938149)+deviation x(937967)=(-0.719)+12.506=11.787mm
Accumulate Y=deviation y(938149)+deviation y(937967)=(-9.757)+(-7.528)=-17.285mm
Accumulate Z=deviation z(938149)+deviation z(937967)=999.952+999.893=1999.845mm
For 937966
Accumulate X= deviation x(938149)+deviation x(937967)+deviation x(937966)=-6.412mm
Accumulate Y= deviation y(938149)+deviation y(937967)+deviation y(937966)=-4.765mm
Accumulate Z=deviation z(938149)+deviation z(937967)+deviation z(937966)=2999.601mm
For 937965
Accumulate X= deviation x(938149)+deviation x(937967)+deviation x(937966)+deviation x(937965)=-3.416mm
Accumulate Y= deviation y(938149)+deviation y(937967)+deviation y(937966)+deviation y(937965)=37.042mm
Accumulate Z=deviation z(938149)+deviation z(937967)+deviation z(937966)+deviation z(937965)=3998.722mm
For 937964
Accumulate X= deviation x(938149)+deviation x(937967)+deviation x(937966)+deviation x(937965)+deviation x(937964)=28.714mm
Accumulate Y= deviation y(938149)+deviation y(937967)+deviation y(937966)+deviation y(937965)+deviation y(937964)=47.937mm
Accumulate Z=deviation z(938149)+deviation z(937967)+deviation z(937966)+deviation z(937965)+deviation z(937964)=4998.146mm
In the raw data of CSV file, you can find that the x(mm), y(mm) and z(mm) are the accumulated coordinates of each sensor. You can compare the calculated result with the CSV data, they are same.

Displacement, How to calculate the displacement value
In order to determine the displacement value of AFIC over time, we must choose one reading as the initial reading(baseline). As the follow pictures shows, we choose the black reading as the initial reading(baseline), the gray reading is a new reading. Right now, we want to calculate the displacement value of this gray reading (new reading).
From the follow picture, we can know that the displacement of X3 is
X3 Displacement = Accumulate X3 New - Accumulate X3 Initial

We can deduce that
Xn Displacement = Accumulate Xn New - Accumulate Xn Initial
Yn Displacement = Accumulate Yn New - Accumulate Yn Initial
Zn Displacement = Accumulate Zn New - Accumulate Zn Initial
SAMPLE
We still use those 5 sensors as sample. The collection time is 2025-11-01 13:00:02, we already calculate their accumulate X, Y, Z. We can set this data as initial reading.
938149: Accumulate X=-0.719mm, Accumulate Y= -9.757mm, Accumulate Z=999.952mm
937967: Accumulate X =11.787mm, Accumulate Y= -17.285mm, Accumulate Z= 1999.845mm
937966: Accumulate X=-6.412mm, Accumulate Y= -4.765mm, Accumulate Z =2999.601mm
937965: Accumulate X= -3.416mm, Accumulate Y=37.042mm, Accumulate Z =3998.722mm
937964: Accumulate X=28.714mm, Accumulate Y=47.937mm, Accumulate Z=4998.146mm

Then Use same way, we can calculate the accumulate coordinate of these same sensors at 2025-11-03 18:00:00
938149: Accumulate X=-0.722mm, Accumulate Y= -9.783mm, Accumulate Z=999.952mm
937967: Accumulate X =11.723mm, Accumulate Y= -17.249mm, Accumulate Z=1999.847mm
937966: Accumulate X=-6.487mm, Accumulate Y= -4.716mm, Accumulate Z =2999.603mm
937965: Accumulate X= -3.478mm, Accumulate Y=37.101mm, Accumulate Z =3998.724mm
937964: Accumulate X=28.617mm, Accumulate Y=48.084mm, Accumulate Z=4998.149mm

We use data at 2025-11-01 13:00:02 as initial reading, calculate the displacement value which is collected in 2025-11-03 18:00:00
938149
X Displacement=Accumulate X new-Accumulate initial=-0.003mm
Y Displacement=Accumulate Y new-Accumulate initial=-0.026mm
937967
X Displacement=Accumulate X new-Accumulate initial=-0.064mm
Y Displacement=Accumulate Y new-Accumulate initial=0.036mm
937966
X Displacement=Accumulate X new-Accumulate initial=-0.075mm
Y Displacement=Accumulate Y new-Accumulate initial=0.049mm
937965
X Displacement=Accumulate X new-Accumulate initial=-0.062mm
Y Displacement=Accumulate Y new-Accumulate initial=0.059mm
937964
X Displacement=Accumulate X new-Accumulate initial=-0.097mm
Y Displacement=Accumulate Y new-Accumulate initial=0.147mm
Follow picture is the displacement graphic in cloud. We can get the displacement value, in cloud it shows
X Displacement=-0.097mm
Y Displacement=0.146mm
Same as our calculation.
