Application Note:
Multipoint Calibration Primer
PNI Corporation's Reference Magnetic Sensor Suites are based on patented technology
that delivers breakthrough, cost-effective magnetic sensing performance. The sensors
change inductance with different applied magnetic fields. This variable inductance
property is used in a patented temperature and noise stabilized oscillator/counter circuit to
detect field variations. PNI’s 2-axis RM2000 Reference Magnetic Sensor Suite is
comprised of two Sen-XY magneto-inductive sensors and the 3D MagIC ASIC
controller. The 3-axis RM3000 Suite adds the z-axis Sen-Z sensor.
The Sen-XY and Sen-Z sensors employ a single solenoid winding and consume roughly
an order of magnitude less power than conventional fluxgate or magneto-resistive
technologies. The sensor coil serves as the inductive element in a very simple, lowpower LR relaxation oscillator, with its effective inductance being influenced by the
magnetic field component parallel to the coil axis. The frequency of the oscillation
changes with the magnetic field.
The 3D MagIC outputs a digital signal that can be fed directly into a microprocessor.
This eliminates the need for signal conditioning or an analog/digital interface between the
sensor and a microprocessor. The simplicity of the sensor circuit combined with the lack
of signal conditioning makes the magneto-inductive sensor easier and less expensive to
use in your product design than fluxgate or magneto-resistive sensors.
This primer covers the basics of how to determine heading, calibrate out hard iron
distortions, and perform sensor gain matching for a 2-axis compass built with the
RM2000 Reference Magnetic Sensor Suite. More detailed information regarding how to
implement the RM2000 Sensor Suite and the underlying technology can be found on
PNI’s website. Please refer to the following:
Manuals – “RM2000/RM3000 Reference Magnetic Sensor Suite Manual”
White Papers – “Magneto-Inductive Technology Overview”
Compass Coordinates
Figure 1
In Figure 1, the +X axis points to magnetic north, while +Y axis points to magnetic east.
With this arrangement the heading is the clockwise angle from the +X axis. We calculate
the angle to the X axis (+X or –X, and not necessarily the heading) as follows:
angle = atan ( Y / X )
The heading calculation depends on the sign of the X and Y values (the quadrant), and is
calculated as follows:
X Value
Y Value
Heading = angle
+X, +Y
(0 – 90)
Heading = 180 – angle
-X, +Y
(91 – 180)
Heading = 180 + angle
-X, -Y
(181 – 270)
Heading = 360 – angle
+X, -Y
(271 – 359)
PNI Sensor Corporation
Multipoint Calibration Primer – September 2010
Doc #1001766 r02
Page 2 of 8
Sensor Orientation
For the heading computation to be valid, the following must be true:
The sensors are at right angles with respect to each other and lie perpendicular
with respect to the Earth’s gravity.
By convention, the positive end of the X axis points north and the positive end of
the Y-axis points east. See Figure 2.
Prior to calibration, the compass must be installed into the host system in its
intended operating configuration and in a horizontally level position.
Figure 2
Determine Calibration Values
As the title of this document implies, multiple (X, Y) points must be acquired to properly
calibrate the compass. The sensing circuit is composed of the Reference Magnetic
Sensors, the 3D MagIC, external bias resistors, an external clock resistor, and external
capacitors. (Refer to the RM3000/RM2000 User Manual for the recommended circuit
configuration.) Only one sensor can be measured at a time. The user sends a command
byte to the 3D MagIC through the SPI port specifying the sensor axis to be measured.
The 3D MagIC will return the result of a complete forward - reverse measurement of the
sensor in a 24-bit 2’s complement format with a range from -8388608 to 8388608.
PNI Sensor Corporation
Multipoint Calibration Primer – September 2010
Doc #1001766 r02
Page 3 of 8
The sample code below shows how the acquisition phase of the calibration is done.
Acquisition Code
i nt
Xmax , Xmi n, Ymax , Ymi n;
i nt
Xr aw, Yr aw;
/ / wher e y ou s t or e max i mum and
mi ni mum v al ues f or X & Y
/ / v al ues y ou get f r om t he 3D MagI C
/ / The number s her e wi l l be 24- bi t
s i gned v al ues .
/ / Pos i t i v e = 0x 000000 t o 0x 7FFFFF
/ / Negat i v e = 0x 800000 t o 0x FFFFFF
Xmax = Ymax = - 8388608;
Xmi n = Ymi n = 8388608;
/ / s t ar t wi t h l owes t pos s i bl e v al ue
/ / s t ar t wi t h hi ghes t pos s i bl e v al ue
f or ( ; ; ) {
Get RawXY( ) ;
/ / ac qui r e a ( X, Y) poi nt
/ / now s or t i t
I f ( Xr aw > Xmax )
Xmax = Xr aw
I f ( Xr aw < Xmi n )
Xmi n = Xr aw
I f ( Yr aw > Ymax )
Ymax = Yr aw
I f ( Yr aw < Ymi n )
Ymi n = Yr aw
The above code results in an infinite loop; it should be modified so the loop stops when
enough points are acquired. Figure 3 below shows a possible graph of acquired points.
Figure 3
PNI Sensor Corporation
Multipoint Calibration Primer – September 2010
Doc #1001766 r02
Page 4 of 8
The graph in Figure 3 is elliptical with the major axis along the Y axis. The elliptical
nature is due to the Y values having a greater gain than the X values. The center of the
ellipse is also displaced. The next section of code demonstrates how to compute the
calibration values based on the maximum and minimum X and Y values acquired. These
values will later be used to correct the raw X and Y values acquired when computing the
Calibration Values
i nt
i nt
Xr ange, Yr ange;
Xof f s et , Yof f s et ;
Xof f s et
Yof f s et
Xr ange
Yr ange
= ( Xmax + Xmi n ) >> 1;
= ( Ymax + Ymi n ) >> 1;
= ( Xmax - Xmi n ) ;
= ( Ymax - Ymi n ) ;
/ / c al c ul at e of f s et s
/ / c al c ul at e t he r ange
Compute Heading
To compute the correct heading a graph of the points (X, Y) should show a circle with the
center in the origin. The following code demonstrates how the raw (X, Y) point is
corrected using the calibration values to get a perfect circle at the origin:
Compute Heading
f l oat pi = at an( 1 ) * 4;
i nt
Xv al , Yv al ;
i nt
angl e, headi ng;
/ / c omput e PI
Get RawXY( ) ;
/ / get c oor di nat es
Xv al = Xr aw - Xof f s et ;
Yv al = Yr aw - Yof f s et ;
/ / s ubt r ac t out t he of f s et s
i f ( Xr ange > Yr ange )
Yv al = ( Yv al * Xr ange) / Yr ange;
/ / per f or m gai n mat c hi ng
el s e
Xv al = ( Xv al * Yr ange) / Xr ange;
/ / per f or m gai n mat c hi ng
angl e = at an( Yv al / Xv al ) * 180/ pi ;
/ / c omput e t he angl e
i f ( Xv al >=0 && Yv al >= 0 )
headi ng = angl e;
/ / quadr ant +X, +Y ( 0 t o 90)
el s e i f ( Xv al < 0 && Yv al >= 0)
headi ng = 180 - angl e;
/ / quadr ant - X, +Y ( 91 t o 180)
el s e i f ( Xv al < 0 && Yv al < 0 )
headi ng = 180 + angl e;
/ / quadr ant - X, - Y ( 181 t o 270)
el s e i f ( Xv al >= 0 && Yv al
headi ng = 360 - angl e;
/ / quadr ant +X, - Y ( 271 t o 359)
< 0 )
PNI Sensor Corporation
Multipoint Calibration Primer – September 2010
Doc #1001766 r02
Page 5 of 8
Figure 4 shows the plot of the corrected X, Y points using the calibration values. The
offsets move the center of the circle back to the origin and the ranges are used to match
the gain so the graph becomes a centered circle instead of the original off-center ellipse.
Figure 4
PNI Sensor Corporation
Multipoint Calibration Primer – September 2010
Doc #1001766 r02
Page 6 of 8
Declination is the angular difference between magnetic north and geographic north
headings. There is a difference between the two directions because Earth's magnetic
north pole is not in the same location as the geographic north pole. A compass
measures Earth's magnetic field, so it points to magnetic north. Also, the difference
between magnetic north and geographic north varies from place to place.
Fortunately, there are many ways to obtain declination. Most hiking topographic
maps provide the declination value. Declination also can be found at web pages such
as the National Geophysical Data Center's site (
Declination is defined as "east" if magnetic north falls to the east of geographic north;
and "west" if magnetic north falls to the west of geographic north. A positive
declination is “east", and a negative declination is "west". For instance, the NGDC
website listed above shows that for Mountain View, CA (37N, 122W) the declination
is "15d 25.7m". First, it is positive, so it is eastward declination. The "d" stands for
degrees; the "m" stands for minutes. 60 minutes = 1 degree, so the declination is
15.4º east.
Once declination is known, the compass heading can be corrected so that heading can
be determined relative to geographic north. Add the declination value to the compass
measurement to get the geographic heading. For example, if the declination is 15 E,
add 15 to the compass measurement. If the declination is 10 W, subtract 10 from
the compass measurement.
EL Backlight Disturbances
When an electro-luminescent (EL) or other backlight is used in a compass system,
turning the backlight on may cause a change in the heading reading. This is because
the backlight system usually draws enough current during operation to cause the
voltage level of a battery-based power supply to drop, and this drop may affect the
zero offset of the ASIC. Additionally, if there is backlight support circuitry, such as
inductors or other current loops, then the magnetic fields generated by these
components can directly affect the sensor readings.
An algorithmic solution to this issue can be implemented during the user calibration
procedure. First obtain the standard calibration values (Xoffset and Yoffset) with the
backlight turned off. Next, turn on the backlight for 1/2 second and take a single
magnetic measurement, Xbacklight_on and Ybacklight_on, and another measurement
PNI Sensor Corporation
Multipoint Calibration Primer – September 2010
Doc #1001766 r02
Page 7 of 8
with the compass orientation unchanged but the backlight off, Xbacklight_off and
Ybacklight_off. Calculate the backlight offsets, Xbacklight_offset and
Ybacklight_offset, as follows:
Xbacklight_offset = Xbacklight_on – Xbacklight_off
Ybacklight_offset = Ybacklight_on – Ybacklight_off
To calculate the corrected X and Y values when the backlight is turned on, take the
raw sensor readings, subtract the standard calibration offsets, and then subtract the
backlight offsets. Thus, the X and Y values used to calculate heading would be:
X = Xraw - Xoffset - Xbacklight_offset
Y = Yraw - Yoffset - Ybacklight_offset
If the backlight is off, then do not subtract the Xbacklight_offset and
Ybacklight_offset when performing the heading calculations.
PNI Sensor Corporation
Multipoint Calibration Primer – September 2010
Doc #1001766 r02
Page 8 of 8