AN2272 PSoC 1 Sensing - Magnetic Compass with Tilt Compensation.pdf

AN2272
Sensing – Magnetic Compass with Tilt Compensation
Author: Vadym Grygorenko
Associated Project: Yes
Associated Part Family: CY8C27xxx, CY8C29xxx
Software Version: PSoC ® Designer™ 5.1 (SP1.1)
Related Application Notes: None
To get the latest version of this application note, or the associated project file, please visit
http://www.cypress.com/go/AN2272.
AN2272 presents a low-cost, digital 3-axis magnetic compass based on the Honeywell HMC1043 Magneto Resistive
Sensor. A dual-axis accelerometer is used to provide tilt sensing for heading correction. Several full-featured and
simplified design versions are also described.
Contents
Introduction
Introduction ....................................................................... 1
Magnetic Compass Background ....................................... 1
Device Design Basis ......................................................... 3
PSoC Implementation ........................................................ 5
Software Description ......................................................... 6
Compass Calibration ......................................................... 8
Testing Results ................................................................. 9
Simplified Compass Versions .......................................... 10
Summary ......................................................................... 11
Appendix A: Device Schematics ..................................... 12
Worldwide Sales and Design Support ............................. 15
This design implements a 3-axis, magneto resistive
sensor-based digital compass with tilt compensation.
Minimal external components are used, which allows for
low-cost and compact implementation.
Main features of the presented design include:



High precision and resolution up to 0.25 degrees.

Ability to transmit data to a PC via RS-232 interface
for debug and other purposes.
Wide range tilts compensation.
Procedures to store calibration data in the internal
EEPROM.
Magnetic Compass Background
All electronic compasses are based on the measurements
of the Earth’s magnetic field. The Earth can be considered
a magnetic dipole with poles located near the geographic
North Pole and South Pole (see Figure 1).
www.cypress.com
Document No. 001-32379 Rev. *C
1
Sensing – Magnetic Compass with Tilt Compensation
Figure 1. Earth’s Magnetic Field
Figure 2. Magnetic Field Inclination Angle
X (forward)
Hx
Y (right)
α
Hy
H
Hz
Z (down)
It is easy to observe that the magnetic field vector is
parallel to the surface near the equator. In the Northern
Hemisphere, that vector points down toward the North
Pole, as shown in Figure 2.
The angle between the magnetic vector and the horizontal plane, XY, is called the dip or inclination angle ( α in Figure 2). This
angle is mainly dependent on the geographical latitude (see Figure 3).
Figure 3. Magnetic Vector Inclination Angle Map From www.ngdc.noaa.gov
www.cypress.com
Document No. 001-32379 Rev. *C
2
Sensing – Magnetic Compass with Tilt Compensation
A common approach used to estimate the heading is to
measure two orthogonal components of the magnetic
vector (Hx and Hy according to Figure 2) and calculate the
heading as the arctangent of their ratio:
Hy
Heading = arctan

 Hx




Figure 4. Pitch and Roll Description
Equation 1
This equation is correct only when the magnetic sensor is
precisely leveled. If some tilt is present, the measured
values Hx and Hy change and the resultant heading is not
exact.
This error is enhanced by the vertical component of the
magnetic vector. For instance, if the inclination angle is
about 60 degrees and the compass is tilted at 5 degrees
to level, the azimuth measurement error will be up to 8
degrees.
To avoid tilt error, a 3-axis magnetic sensor with an
additional tilt measurement circuit can be used. A 3-axis
sensor provides the Earth’s magnetic vector coordinates
relative to a compass local coordinate frame. These
values are not enough to calculate the true heading.
Additional information about the compass space
orientation is necessary.
This information is obtained from the tilt sensor, similar to
an accelerometer. If the compass is not accelerating, the
tilt sensor measures the angles between the compass and
the gravity vector. Based on the tilt sensor values, the
locally measured vector coordinates Hx, Hx and Hz are
converted to a reference coordinate and the heading is
calculated according to Equation (1).
The presented design uses a Honeywell magneto resistive
sensor, HMC1043, for Hx, Hx and Hz measurement and an
Analog Devices dual-axis accelerometer, ADXL322, as a
tilt sensor.
Device Design Basis
Allow us to consider a few geometric aspects of the vector
measurements on the tilted platform. Assume the
coordinate system is chosen in such a way that the X-axis
is oriented forward, the Y-axis is to the right, and the Zaxis is downward (Figure 4). The stationary coordinate
frame will be signed as XYZ and the local tilted coordinate
system is X'Y'Z'.
There are several ways to describe rotation of the
coordinate frame of the compass relative to the fixed
frame,
such
as
quaternion,
Euler
angles,
roll-pitch-heading, rotation matrix, spin matrix and so on.
The aircraft convention of the rotation angles is used
below. Roll angle (θ) is defined as rotation around the
X-axis. Pitch angle (φ) is defined as rotation around the
Y-axis. All rotations are performed counter-clockwise, if
viewed from the positive axis direction toward the origin of
the coordinate frame. The X-axis and Y-axis rotation
sequence is important (try to rotate an object 90 degrees
around the X-axis and then around the Y-axis, or in the
reverse order, and the results will be different).
Therefore, the assumed rotation to be performed is around
the X-axis first, then around the Y-axis (roll, then pitch).
Each basic rotation can be described by the rotation
matrix that transforms the coordinates from the stationary
coordinate frame of XYZ to the rotated tilted coordinate
system of X'Y'Z'. The roll rotation matrix is:
0
1

C r =  0 cos θ

 0 − sin θ
0 

sin θ 
cos θ 
Equation 2
The pitch rotation matrix is:
 cosθ 0 − sin θ 


1
Cp =  0
0 
 sin φ 0 cos φ 


Equation 3
Rotation transformation of the coordinates occurs using
either of the following equations:
www.cypress.com
Document No. 001-32379 Rev. *C
3
Sensing – Magnetic Compass with Tilt Compensation
 x
 x' 
 
 
=
⋅
⋅
C
C
y
'
 
r
p  y
z
 z' 
 
 
0
 x'   cos φ
  
 y '  =  sin θ sin φ cosθ
 z '   cosθ sin φ − sin θ
  
Equation 4
− sin φ   x 
  
sin θ cos φ  ⋅  y  Equation 5
cosθ cos φ   z 
The magnetic sensor measures the x'y'z' components of
the Earth’s magnetic vector. For azimuth estimation, these
values should be converted to the stationary coordinate
system. That conversion is performed using an inverted
rotation matrix:
 x   cos φ sin θ sin φ cos θ sin φ   x' 
  
  
− sin θ  ⋅  y '  Equation 6
cos θ
 y =  0
 z   − sin φ sin θ cos φ cos θ cos φ   z ' 
  
  
Since the z coordinate is not used for azimuth estimation,
the tilt-compensated values for x and y can be evaluated
as:
x = x' cos φ + y ' sin θ sin φ + z ' cosθ sin φ
y = y ' cos θ − z ' sin θ
Equation 7
Equation 8
x ' and y ' are the measured components of the magnetic
vector.
Consequently, to convert the measured values into tiltcompensated values, the roll and pitch angles should be
estimated. This task is solved by a dual-axis
accelerometer.
The accelerometer output signals are proportional to the
gravitation vector projections on the X'Y' plane (see
Figure 5).
Figure 5. Gravitation Vector Projections
The accelerometer output values can be considered as
the sin of the angle between the X'-axis and the level Ax,
and between the Y'-axis and the level Ay. Sometimes
these angles are called the pitch angle P and the roll angle
R. However, these angles should not be confused with the
θ and φ angles that were previously defined.
Nevertheless, in most application notes devoted to tilt
compensation, including AN00022 Electronic Compass
Design using KMZ51 and KMZ52 by Philips (see
Figure 24, Definition of Pitch and Roll, on p.32); these
angles are directly substituted in the corresponding values
shown in Equation 7 and Equation 8.
Ax = − sin φ
Equation 9
Ay = sin θ
Equation 10
This assumption is valid only when the tilt is small. Allow
us to consider this issue in more detail. The normalized
accelerometer outputs Ax and Ay can be considered
transformed by the rotation matrix in Equation (5) of the
normalized gravitation vector:
0
 Ax   cos φ
  
θ
φ
θ
A
=
sin
sin
cos
 y 
 A   cosθ sin φ − sin θ
 z 
− sin φ   0 
  
sin θ cos φ  ⋅  0  Equation 11
cosθ cos φ   1 
Thus,
Ax = − sin φ
Equation 12
Ay = sin θ cos φ
Equation 13
It is easy to observe from Equations 12 and 13 that, in the
case of a small pitch angle φ , when cos φ ≈ 1 a commonly
used simplification of the roll is, the pitch angle’s
estimation is acceptable. Therefore, if the wide range tilt
compensation is required, then Equations 12 and 13
should be used.
Using Equations 12 and 13 and standard trigonometry
identities, the values for the tilt compensation formula,
Equations 7 and 8, can be given as:
sin φ = − Ax
Equation 14
cos φ = 1 − sin 2 φ = 1 − Ax2
sin θ = −
Ay
cos φ
=
Ay
Document No. 001-32379 Rev. *C
Equation 16
1 − Ax2
cosθ = 1 − sin 2 θ =
www.cypress.com
Equation 15
1 − Ax2 − Ay2
1 − Ax2
Equation 17
4
Sensing – Magnetic Compass with Tilt Compensation
Since, for navigation purposes only, the ratio of the
measured values is important (see Equation 1), both
Equations 7 and 8 can be multiplied by the same value. It
is convenient to multiply these equations by cos φ to
avoid
dividing
operations
during
microcontroller
implementation.
Figure 6. Compass Hardware Architecture
X
x200
ADC
12 bit
Y
x200
ADC
12 bit
Z
x200
ADC
12 bit
Tx8
CPU
Finally, the equations for the tilt compensation are next:
(
)
x = x' 1 − Ax2 − y ' Ax Ay − z ' Ax 1 − Ax2 − Ay2 Equation 18
S/R
PSoC
S/R
y = y' 1 −
Ax2
−
Ay2
− z ' Ay
Equation 19
Ax
Accelerometer
x ', y ' and z ' are the measured values of the magnetic
LCD
Ay
vector, and Ax and Ay are the normalized measurements of
the accelerometer.
Heading = arctan
y
x
Equation 20
To calculate the geographic azimuth as a clockwise angle
between the north direction and X-axis, the signs of y and
x must be taken into account:
180 − arctan y x ,

 − arctan y x ,
Azimuth = 360 − arctan y x ,

90,

270,

x<0
x > 0, y < 0
x > 0, y > 0
x = 0, y < 0
x = 0, y > 0
Equation 21
Expressions in equations (18), (19) and (21) are used in
the present design to estimate tilt compensated heading.
PSoC Implementation
The main parts of the presented design are:


PSoC® CPU (CY8C27xxx device family).


Dual-axis accelerometer (Analog Devices ADXL 322).



Magnetic sensor set/reset circuit.
3-axis magneto
HMC1043).
Sensor’s signal
amplifier).
resistive
conditioning
sensor
circuit
(Honeywell
(operational
Each channel of the magneto resistive sensor is a
Wheatstone bridge, which converts the magnetic field into
a differential output voltage. The typical sensor sensitivity
is 5 mV/gauss (at Vdd=5 V). The Earth’s magnetic field
can reach ±800 mgauss; therefore, the useful sensor
output voltage can be up to ±4 mV. The magnetic sensor
also has a considerable DC offset voltage of up to
±6.25 mV. The total output signal will be up to ±10.25 mV.
After an amplifier with a gain equal to 200, the amplitude is
about 4 volts. This value fits in the range of an ADC with a
reference of Vdd/2 ± Vdd/2.
The output of the accelerometer and the magnetic sensor
is ratio metric. The output signal peak to peak amplitude is
about 600 mV (300 mV/g). With a 12-bit ADC tilt
measurement, the error will be no more than 0.5 percent,
without additional amplification.
An important advantage of implementing the PSoC device
inside the compass is the option to use a three-channel
ADC. This allows simultaneous conversion of all
magnetoresistive sensor output signals (X, Y and Z) or
accelerometers signals. Traditional methods use one ADC
to sequentially convert all inputs. If the device is moved,
then the measurements will reflect vector components at
different moments, which can cause additional errors. The
present device measures all of the values simultaneously,
thus improving the accuracy of the results. The ADC
conversion time is set to about 60 ms, which allows about
7 azimuth measurements per second to be received. This
value can easily be changed, if another measurement
speed is required.
The set/reset (S/R) circuit is used to compensate both the
magneto resistive sensor offset and the amplifier-ADC
circuit’s offset.
Multichannel RS-232 Driver (MAX232).
LCD.
The simplified hardware architecture is presented in
Figure 6.
www.cypress.com
Document No. 001-32379 Rev. *C
5
Sensing – Magnetic Compass with Tilt Compensation
The idea of such offset compensation is based on the
option to flip the sensor’s bridge output polarity using
sequential high-current pulses of the opposite polarity
across the S/R strap. Polarity changes in the signal are
only caused by the magnetic field. The offset of the bridge
and signal conditioning circuits remains unchanged.
Consequently, the offset can be canceled by subtraction of
the two measurements:
(
Reset: Code R = K − VMagnetic + VOffset
(
Set: CodeS = K VMagnetic + VOffset
VOffset =
)
)
CodeS − CodeR
2K
All next signal processing is performed by PSoC.
Equation 23
Software Description
Code R + CodeS
2K
VMagnetic =
Equation 22
Equation 24
Equation 25
CodeR is the ADC code after the reset pulse, CodeS is
the ADC code after the set pulse, VOffset is the summary
offset, and VMagnetic is the signal.
For high-precision measurements, S/R pulses can be
used for each sample. But for common tasks, occasionally
recalculating the offset and subtracting it from each
sample is sufficient. This design recalculates VOffset each
256 measurements or about twice per minute. S/R pulses
are formed by the charge/dump current of the capacitor
connected in serial with the S/R strap. Due to low strap
resistance (about 5 Ω) the peak current reaches up to 1A
which is enough to flip magnetic orientation of the sensor.
The pulse width is defined by the CR time constant. It is
relatively small at several microseconds. The low value of
the S/R pulse’s duty factor gives a small averaged power
consumption of the S/R circuit in spite of the considerable
peak current. Pulse energy is given by:
=
E
U 2C 52 ⋅ 0.5 ⋅ 10−6
=
≈ 6 micro-Joules
2
2
Equation 26
Taking into account the pulse’s duty factor we can
estimate the S/R circuit power consumption to be less
than one microwatt.
Additional details on S/R operations are described in the
sensor manufacturer’s application notes such as
Honeywell’s AN213 Set/Reset Function for Magnetic
Sensors.
The full device schematic is shown in Figure 14 in
Appendix A: Device Schematics.
Input signals from sensor are amplified by differential
amplifiers U2A-U2C. Resistors for these amplifiers should
be chosen with tolerance of 0.1% to avoid significant DC
offset at output. It is not obligatory to use precision
operational amplifier. It can be low-cost but low-noise with
offset voltage no more than 1-2 mV.
www.cypress.com
Magneto resistive sensor’s outputs are shunted by 1uF
capacitors C9, C14 and C21. These capacitors interact
with sensor output impedance of 1 kilohm and limit
sensors bandwidth to about 160 Hz. Such bandwidth
limitation is advisable because sensor can produce signals
up to 5 MHz that can cause disturbances. The side effect
of bandwidth limit is increasing of transient time after
Set/Reset pulses applying. This problem is solved by
software applying delay during Set/Reset operations.
The software’s main task is to perform calculations of the
heading according to Equations 18, 19, and 21. These
calculations are complicated by arctangent and square
root functions. If a PC performs the calculations, there is
no problem in using the floating-point arithmetic and
standard libraries. However, in most cases, the usage of a
floating point with microcontrollers is not acceptable. That
is why all of the calculations in this design are performed
with integer numbers. Arctangent and square root are
calculated using COordinate Rotation DIgital Computer
(CORDIC) algorithms that only require addition and shift
operations. There are many CORDIC descriptions on the
web, for instance “CORDIC FAQ.” The algorithms
described below are based on “Arctan(x) using CORDIC,”
“Square-root
based
on
CORDIC”
and
sci.math.num-analysis newsgroup archives.
Allow us to consider arctangent calculations in more detail.
y
The function arctan
denotes the angle between X-axis
x
and vector (x;y). To estimate this angle, several rotations
of the vector by predefined angles are performed.
Rotations are made until the resulting vector sufficiently
approaches the X-axis. The sum of these rotation angles
yields the desired arctangent. The predefined angles are
 1 
chosen to be ± arctan
 .
 2n 
The vector rotation by angle α changes its coordinates
according to the rotation transformation:
x' = x cos α − y sin α
Equation 27
y ' = x sin α + y cos α
Equation 28
x' = cos α [x − tan α ]
Equation 29
y ' = cos α [x tan α + y ]
Equation 30
Or,
For angle estimation (if vector length is insignificant), the
1
term cos α can be ignored. If tan α i = ± i , then
2
Document No. 001-32379 Rev. *C
6
Sensing – Magnetic Compass with Tilt Compensation
xi +1 = xi −
y i +1 = y i −
yi ⋅ d i
2i
xi ⋅ d i
2i
Equation 31
Figure 7. Simplified Flowchart of ArcTan2 Function
Start
Equation 32
i := 0;
Ang := 0
d i = ±1 . The angles α i are calculated at design time and
stored in a look-up table. The sum of each rotation angle
is stored in the angle accumulator:
Ang i +1 = Ang i + d i ⋅ α i
Equation 33
no
yes
yi > 0
Each following rotation direction is determined in such a
way to approach the resulting vector toward the X-axis:
d i = −1 if yi > 0 , +1 otherwise
Equation 34
Iterations in Equations 31, 32, 33, and 34 are performed
until α i < 1 . This procedure is shown in a simplified
flowchart in Figure 7.
xi+1 := xi – yi/2i;
yi+1 := yi + xi/2i;
Ang := Ang+a[i];
To achieve precision better than 1°, the weight of the least
significant bit (LSB) of the angle accumulator Ang should
be less than 1°. In the present design, it is assumed that 1
LSB = 0.25° or 360° → Ang = 360 ⋅ 4 . The described
algorithm is implemented in the ArcTan2 () function.
Another extension of the CORDIC algorithm is used to
calculate the square root function in Equations 18 and 19.
The main idea of this algorithm is to determine whether or
not a square of each binary digit is present in the input
value.
If s =
a and s contains binary 1 with weight 2i , then a
contains 22i . In that way, the iterative algorithm can be
xi+1 := xi – yi/2i;
yi+1 := yi + xi/2i;
Ang := Ang-a[i];
i := i +1
i<9
yes
no
Return Ang
written as:
s 21 = 2i +1 ⋅ s + 2 2i ;
Equation 35
if a ≥ s 21 , then s + = 2 i ; a − = s 21
Equation 36
=
i 8;=
s 0 and they are performed until
Iterations start at
i = 0 (see Figure 8). It is easy to observe that this
procedure requires only addition and shift operations;
therefore, it is friendly to microcontroller implementation.
The described algorithm is implemented in the function
lSqrt().
www.cypress.com
Document No. 001-32379 Rev. *C
7
Sensing – Magnetic Compass with Tilt Compensation
Figure 8. Flowchart of ISqrt Function
Table 1. Functions Description
Start
Function
Name
i := 8;
s := 0;
a := input
s21=: 2i +1 ⋅ s + 22i
a >= s21
yes
s =: s + 2i ;
a =: a − s21
Main
Performs startup device configuration,
measures magnetic vector and tilt,
calculates azimuth.
FiltrA, FiltrB,
FiltrC
Low-pass digital filters for measured
magnetic vector components.
ArcTan2
Calculates ArcTan(y/x) taking into account
signs of y and x.
lSqrt
Calculates square root.
Delay
Makes n x 15 ms delay using low-precision
sleep timer.
DoSetReset
Forms S/R pulse’s sequence for magnetic
sensor, calculates offsets.
DoCalibrM
Performs hard iron offset and axis scale
factor calibration.
DoCalibrA
Calibrates accelerometer.
DoCalibrD
Performs true north calibration.
SaveDefaults
Saves calibration results into internal
EEPROM as power-on defaults.
no
i := i -1
yes
i >= 0
no
Return s
The measured values of the magnetic vectors x ', y ' and
z ' , before substitution into equations (18) and (19), are
filtered by a low-pass second order digital IIR-filter as
described by this equation:
fn =
1
(cn + 2 ⋅ cn −1 + cn − 2 ) + f n −1 − 1 f n − 2 Equation 37
4
4
cn is the samples of input values and f n is the filter
output.
This filter has a gain of 4 and cut-off frequency at
approximately 0.07 times the sample rate. The presented
design samples data at a rate of about 7 Hz; therefore, the
cut-off frequency is close to 0.5 Hz. The described
filtration is implemented in the procedures FiltrA(), FiltrB()
and FiltrC() for x ', y ' and z ' , correspondingly.
There are several additional functions in the firmware. The
complete list and brief description is shown in Table 1.
Description
Compass Calibration
There are many known compass error factors that are
described in detail in a number of papers. For instance,
“Applications of Magnetic Sensors for Low Cost Compass
Systems.” The present design implements hard iron error
and true north declination angle compensation, in addition
to the tilt compensation previously described.
If the compass is rotated in the horizontal plane and no
disturbances are present, then the output values plot y
versus x should form an ideal circle centered at the
coordinate system origin. However, the real plot differs
from the ideal case. The circle becomes an ellipse with the
center shifted from the zero point (see Figure 9).
To compensate for the described error, the scale factors
should be applied and the offset subtracted.
xh = x ⋅ X sf − X off
Equation 38
y h = y ⋅ Ysf − Yoff
Equation 39
The scale factors X sf and Ysf as well as offsets X off and
Yoff are determined during the calibration procedure.
www.cypress.com
Document No. 001-32379 Rev. *C
8
Sensing – Magnetic Compass with Tilt Compensation
During calibration, the compass is rotated in the horizontal
plane and the minimum and maximum measured values
for both the X- and Y-axis are collected. Then the desired
values are calculated as follows:
y
− y min
X sf = max max
x
 max − xmin
x
− xmin
Ysf = max max
y
 max − y min

,1


,1

Figure 10. Real Data Plot with Applied Compensation
Equation 40
Equation 41
X off =
xmax + xmin
⋅ X sf
2
Equation 42
Yoff =
y max + y min
⋅ X sf
2
Equation 43
The calibration procedure is initiated by pressing the
switch SW1. Then, several slow rotations in the horizontal
plane are performed. To alert the device that the rotations
are complete, the switch SW1 should be pressed once
again. During this calibration, the compass should be
exactly leveled.
The result of the applied compensation is shown in
Figure 10. The attentive observer may notice that the data
jitter shown in Figure 10 is a little larger than in Figure 9.
That is because in Figure 10, the tilt compensation is
applied along with the hard iron compensation. The tilt
compensation
is
based
on the
accelerometer
measurements. If the platform rotation is not steady, then
the accelerometer will respond to jerks, thus introducing
additional errors to measurement.
Figure 9. Real Data Plot with Magnetic Disturbances
The second calibration procedure deals with the
accelerometer. It measures the minimum and maximum
output values for both axes when the device is directed
vertically. These values are used for calculating
normalized Ax , Ay values for equations (18) and (19).
Such calibration is necessary because of the variation in
sensor parameters. The calibration procedure is initiated
by pressing the switch SW2. Then, the device should be
slowly turned vertically and rotated in the vertical plane. In
other words, the device’s X-axis and Y-axis should be
alternately directed upward and downward. After that, the
device should be placed horizontally and the switch SW2
should be pressed again, alerting the device that the
procedure has ended.
The third calibration procedure compensates the
difference between the geographical north direction and
magnetic north. That difference is known as the
declination angle. To compensate this angle, position the
device so that the X-axis points in the geographical north
direction, then press switch SW3. After that, the
declination angle is subtracted from each measured
azimuth.
All calibration results are stored in the internal EEPROM
and loaded each time the device is powered-on.
Testing Results
The compass prototype was designed to verify the
described algorithms. The test board is shown in
Figure 11.
www.cypress.com
Document No. 001-32379 Rev. *C
9
Sensing – Magnetic Compass with Tilt Compensation
For instance, the internal PSoC instrumental amplifiers
can be used instead of an external opamp. Due to the
limited quantity of analog blocks, only two amplifiers are
available. Therefore, inputs should be multiplexed allowing
alternate measurements of X, Y, Z and Ax, Ay values (see
Figure 12). In this case, a dual ADC is used, instead of
triple. The full device schematic is shown in Figure 15 of
Appendix A: Device Schematics.
Figure 11. Compass Test Board
Figure 12. Simplified Hardware Architecture for TiltCompensated Compass
InsAmp
ADC
13 bit
X
Tx8
Y
CPU
InsAmp
ADC
13 bit
Z
S/R
PSoC
S/R
Ax
Accelerometer
LCD
Ay
If tilt compensation is not required, then the device
schematic can be simplified (see Figure 13). Internal
PSoC instrumental amplifiers can be used instead of an
external opamp. ADC resolution is increased to 13 bits
due to the gain limit of the internal instrumental amplifiers.
Measurement results are displayed on the LCD.
The magnetic sensor is mounted on a separate plate to
facilitate mounting/unmounting operations without special
equipment.
The results of the measurements are displayed on the
LCD. The azimuth is displayed in the first row and the Ax
and Ay hexadecimal values are displayed in the second
row. The measured values are also transmitted to the PC
via the RS-232 interface.
Tests were performed indoors not far from the computer
and near other high-disturbance sources. The results were
encouraging: the angle jitter was about ±0.25 degrees.
The absolute error was not measured because of the
absence of a reference compass. For comparison, similar
measurements were implemented using a single ADC and
a three-channel ADC. When using a single ADC, some
bursts were observed and full peak-to-peak jitter reached
about 3 degrees. This result proves the advantages of
employing the three-channel ADC.
Simplified Compass Versions
The previously described compass implementation is
appropriate for high-precision measurement systems. It is
possible to simplify that design, if the precision
requirements are not as strict.
www.cypress.com
Figure 13. Hardware Architecture for Dual-Axis Compass
InsAmp
x93
X
ADC
13 bit
Tx8
InsAmp
x93
Y
ADC
13 bit
CPU
S/R
PSoC
S/R
LCD
The full device schematic is shown in Figure 16 of
Appendix A: Device Schematics. There are several
external components on this schematic, including the
optional RS-232 interface.
Another possible design simplification can be achieved be
replacing the LCD with several LEDs. These LEDs are
placed counterclockwise on the circle. A lit LED indicates
north. This version schematic is shown in Figure 17.
Document No. 001-32379 Rev. *C
10
Sensing – Magnetic Compass with Tilt Compensation
Summary
The application note presented 3-axis magneto resistive
sensor-based digital compass with tilt compensation.
4.
Calibration methods
5.
Simplified designs for low-precision measurement
systems
The following topics were covered in the application note:
1.
Working of a magnetic compass including the design
basics
2.
Role of PSoC, PSoC implementation and advantages
of PSoC
3.
Software implementation including the use of
CORDIC algorithms that are used to calculate
arctangent and square root which require just addition
and shift operations
www.cypress.com
About the Author
Name:
Vadym Grygorenko.
Title:
Systems Engrg Sr MTS
Document No. 001-32379 Rev. *C
11
Sensing – Magnetic Compass with Tilt Compensation
Appendix A: Device Schematics
Figure 14. Tilt-Compensated Compass Schematic
Figure 15. Simplified Tilt-Compensated Compass Schematic
www.cypress.com
Document No. 001-32379 Rev. *C
12
Sensing – Magnetic Compass with Tilt Compensation
Figure 16. Dual-Axis Compass Schematic
Figure 17. Simplified Compass Schematic
www.cypress.com
Document No. 001-32379 Rev. *C
13
Sensing – Magnetic Compass with Tilt Compensation
Document History
Document Title: Sensing – Magnetic Compass with Tilt Compensation - AN2272
Document Number: 001-32379
Revision
ECN
Orig. of
Change
Submission
Date
Description of Change
**
1491203
YARD_UKR
10/08/2007
New Application note
*A
3283671
YARD_UKR
06/15/2011
Associated Project files zipped with source document.
No changes in the document.
Added Document History details.
Updated in new template.
*B
3357979
ANBI_UKR
08/30/2011
®
Updated Software Version as “PSoC Designer™ 5.1 (SP1.1)”.
®
Project updated to latest version namely “PSoC Designer™ 5.1 (SP1.1)”.
*C
4426559
SSHH
07/01/2014
Updated in new template.
Completing Sunset Review.
www.cypress.com
Document No. 001-32379 Rev. *C
14
Sensing – Magnetic Compass with Tilt Compensation
Worldwide Sales and Design Support
Cypress maintains a worldwide network of offices, solution centers, manufacturer’s representatives, and distributors. To find
the office closest to you, visit us at Cypress Locations.
PSoC® Solutions
Products
Automotive
cypress.com/go/automotive
psoc.cypress.com/solutions
Clocks & Buffers
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
Interface
cypress.com/go/interface
Lighting & Power Control
cypress.com/go/powerpsoc
cypress.com/go/plc
Memory
cypress.com/go/memory
PSoC
cypress.com/go/psoc
Touch Sensing
cypress.com/go/touch
USB Controllers
cypress.com/go/usb
Wireless/RF
cypress.com/go/wireless
Cypress Developer Community
Community | Forums | Blogs | Video | Training
Technical Support
cypress.com/go/support
PSoC is a registered trademark of Cypress Semiconductor Corp. "Programmable System-on-Chip," PSoC Designer, and PSoC Express are trademarks
of Cypress Semiconductor Corp. All other trademarks or registered trademarks referenced herein are the property of their respective owners.
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone
Fax
Website
: 408-943-2600
: 408-943-4730
: www.cypress.com
© Cypress Semiconductor Corporation, 2007-2014. The information contained herein is subject to change without notice. Cypress Semiconductor
Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any
license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or
safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as
critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The
inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies
Cypress against all charges.
This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide
patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a
personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative
works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress
integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source
Code except as specified above is prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the
right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or
use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a
malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support systems
application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
www.cypress.com
Document No. 001-32379 Rev. *C
15