Archive for March, 2011

Human–computer interaction

March 31st, 2011

Post to Twitter

First stable version of HCI 20 march 2011

Tilt Compensation Azimuth ? with Pitch Ø et le Roll ?

March 19th, 2011

Post to Twitter

A) Introduction

We need to calculate the Azimuth ? or its course. According to Wikipedia,the Azimuth or the course is the angle that the intended path of the boat makes with a fixed reference object (typically true north). Typically course is measured in degrees from 0° clockwise to 360° in compass convention (0° being north, 90° being east). Course is customarily expressed in three digits, using preliminary zeros if needed, e.g. 058°. This angle is measured using a compass, a magnetic compass or gyro.

The components that I have chosen to calculate my Azimuth:

HMC5843 magnetic compass is a three-axis magnetometer. It identifies the angle of rotation relative to the magnetic north of the Earth with a resolution of 7 milli-gauss.

The accelerometer AXL335 delivering voltages proportional to acceleration with a sensitivity: + / – 3 g.

B) Calculate Azimuth ? without compensation:

\psi = (180 *(\frac{atan2(-1 * YMagneto, XMagneto)}{pi}))+180;

This expression works if the HMC5843 is not tilted.

ps: Warning in Excel, you must reverse the values for atan2, it can save you time ….

You can download a sample program that demonstrates how to read a microcontroller ATMega328 HMC5843
Download: here

C) The angles Ø Pitch and Roll ? for a two-axis accelerometer and three axis:

With the ADXL335 accelerometer, it is possible to calculate the pitch Ø and Roll ? to correct our azimuth ?. Here is a scheme to visualize the angle on the boat.

For a two-axis accelerometer following equation:


\phi= \arcsin(Yaccel)*\frac{180}{pi}

For a three-axis accelerometer as the HMC5843 equation here:

\theta= \dfrac {atan(-Xaccel)} {\sqrt(Yaccel^2+Zaccell^2))}*\frac{180}{pi}

\phi= \dfrac {atan(Yaccel)}{\sqrt(Xaccel^2+Zaccel^2))}*\frac{180}{pi}

D) Azimuth ? tilt compensation :

The HMC5843 provides correct values if it is flat. So every time my boat will be tilted angle the rotation relative to magnetic north by the compass given no longer correct. It is possible to compensate for this error (tilt compensation) using the values of the compass and an accelerometer.

That compensation is also possible for two lines with the compass algorithm Yun Seong Cho and Chan Gook Park, which allows using the dip angle to estimate the third axis. You can download their work below

Download : TiltCompensation.pdf

For a two-axis magnetometer, you must calculate the dip angle to approximate the third axis Z.

To calculate :

\delta = \dfrac{1}{tan(2*tan(Latitude)}

ex:  \delta = \dfrac{1}{tan(2*tan(48.86213)} ) = 25.0112° ou 48.86213° coïncide avec ma latitude.

Compass for two axes, it is necessary to approximate the third axis Z by the value of the dip angle

Zmagneto = \dfrac {sin(\theta)+Xmc*sin(\theta)-Ymc*cos(\theta)*sin(\phi)} {cos(\phi)*cos(\theta) }

However, to get more accurate values, it is better to use a compass as the HMC5843 three axes.
To calculate the azimuth with compensation:

Horizontal vector : xh = x*cos(\theta)+y*sin(\phi)-z*cos(\theta)*sin(\theta);

Vertical vector : yh= y*cos(\phi)+z*sin(\phi);

Heading : \psi= arctan(-yh/xh)

Links :

Components selected

March 19th, 2011

Post to Twitter

A) Components selected :

The main motherboard responsible for performing the calculations, the choice is the Fox board Board G20

His features


+ 5



60 mA

Processeur ARM9™ AT91SAM9G20400 MHz d’Atmel™
Memory 64mbyte@ 32bit 133MHZ
I/0 – 28 portsd’entrées/sorties

– 2 ports série (niveau 3,3 V)

– 4 entrées de conversion “A/N”

– bus I2C™ / SPI™

– Sortie PWM

The GPS is the MediaTek MT3329

His features

Channels 66 channels
Sensitivity -165dBm tracking
Maximum update rate up to 10Hz
Dimension? 16mm x 16mm x 6mm
Position Accuracy Position Accuracy
Cold Start under 35 seconds (Typical)
Warm Start under 34 seconds (Typical)
Hot Start under 1 second (Typical)
Low Power Consumption 48mA @ acquisition, 37mA @ tracking
Low shut-down current consumption? 15uA, typical

The magnetometer is the HMC5843 three axes:


voltage of 2.5-3.3VDC



0.5×0.5″ (12.7×12.7mm)







I2C interface

The accelerometer is the ADXL335

His features

Dimensions 4 mm × 4 mm × 1.45 mm LFCSP
Sensing 3-axis sensing
Consommation Low power – 350 ?A (typical)
Excellent temperature stability
Single-supply operation1.8 V to 3.6 V

Communication is based on XBee


+ 3.3



210 mA


50 mW

(+17 dBm) power output

Point-to-multipointnetworking ideal for low-latency applications

Support for large, dense networks128-bit AES encryption

RPSMA connector

Industrial temperature rating

(-40° C to +85° C)

Advanced mesh networking and low-power modes supported

Twitter links powered by Tweet This v1.8.1, a WordPress plugin for Twitter.