Magnetometer Guide: Difference between revisions

From Phidgets Support
No edit summary
 
(47 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Primer]]
{{#seo:|description=How do you use the data from a magnetometer or compass? Learn how to calibrate the magnetometer and calculate a heading from the axis data.}}
{{#seo:|keywords=magnetometer}}
[[Category:IntroGuide]]


==Introduction==
{{TOC limit|3}}
A compass is a navigational instrument that is used to determine direction relative to the surface of the earth.  Compasses measure direction with respect to the 4 cardinal directions (North, East, South, West) with 0 degrees indicating straight North and 180 degrees indicating straight South.


Electronic compasses work in exactly the same way as any other compass: They detect the Earth's magnetic field and respond to it. The difference is that an electronic compass uses a magnetometer to detect the field as opposed to a small magnet.  This allows them to be much more accurate and allows them to respond more quickly to changes in direction than a traditional compass ever could.
==Magnetometers and Their Uses==
===Introduction===
[[File:Magnetometer_Intro.jpg|400px|link=|thumb|Magnetometers Measure Magnetic Field in 3 Axes]]
Compasses are a centuries old technology that have allowed people to quickly get a sense of direction around the globe. As you probably know, they operate on the principle that the earth’s magnetic field points roughly north, no matter where you are (assuming no large sources of interference). To use this time-tested method of navigation with electronics, we recommend incorporating a magnetometer.


==How Compasses Work==
Magnetometers measure the strength and direction of magnetic fields, information that when properly applied can feed a compass bearing to your application. Unlike a traditional compass, the readings from Phidgets-based magnetometers operate in all 3 axes, allowing your application to maintain a good sense of direction regardless of orientation.
Small compasses found in clocks, mobile phones, and other electronic devices are solid-state compasses, usually built out of two or three magnetic field sensors that provide data for a microprocessor. The correct heading relative to the compass is calculated using trigonometry.
Often, the device is a discrete component which outputs either a digital or analog signal proportional to its orientation. This signal is interpreted by a controller or microprocessor and used either internally, or sent to a display unit. The sensor uses highly calibrated internal electronics to measure the response of the device to the Earth's magnetic field.


===Basic Use===
===Calibration===
Compasses are typically mounted on an object that the user wants to monitor the direction of. In order to get the most accurate readings it is recommended to mount the compass to the object in such a way that there is minimal room for shifting. You will need to calibrate the compass as well.
In the same way as a physical compass will be thrown off by magnets and metals like steel, your magnetometer will be similarly affected. However, so long as this interference remains consistent, we can adjust the compass calculations to account for these effects in a process called calibration.
[[image:Magnetic_distortion.jpg|link=|thumb|250px|Example of soft iron distortion caused by a large piece of steel.<br>]]
The main thing to consider when calibrating a compass is that any (ferromagnetic) metals near the magnetometer will distort the readings. If the magnetometer is mounted to a moving structure, the structure will shift and bend the magnetic field in unique (but predictable) ways as it rotates. To account for these variations, the compass will need to be calibrated while mounted in the specific location it will be used. Any metal that will move with the compass in practice should move with the compass during calibration, and any metal that will be otherwise near the compass, should be in the same position for calibration. Just know that any stationary sources of magnetic interference (steel girders, etc.) will result in an offset in your heading from earth’s magnetic north.


====Calibration====
For example, if you are planning to mount a compass in a car, you will need to rotate the whole car with the compass in place when calibrating in order to properly compensate for all the effects of that much moving steel.
Calibration involves setting the compass up to handle the magnetic field characteristics in your particular region of the world as well as disturbances caused by a more localized magnetic fields such as speaker magnets.  To calibrate effectively you will need to determine the Earth's magnetic field strength at your location.  This data is available on line in the form of [http://www.ngdc.noaa.gov/geomag-web/#igrfwmm magnetic field calculators] all you have to do is enter in your zip or postal code.


Calibration is ''required'' for any applications needing more accuracy than North, East, South, West.
Basic calibration can only account for distortions in the magnetic field caused by the materials of your structure. Calibration alone will not be able to account for intermittent or variable effects, such as electric motors turning on nearby, or large pieces of steel moving independently of your application. To minimize these effects, be sure to keep your magnetometer as far away from sources of magnetic interference as possible.


For more information on calibrating the compass on the [[1056 User Guide|1056]] refer to our [[1056 User Guide#Magnetic Error Correction (Calibration)|calibration guide]].
Unfortunately, if you are in a magnetically varied environment, or if your environment changes after calibration, you will not be able to fully rely on your compass for an accurate heading. These scenarios could be as simple as driving your car across a big steel bridge, or as contrived as loading an airplane full of magnets. Thankfully, most places are far enough away from such interference, and the magnetic compass maintains its usefulness.


==Interference==
<div class="phd-deck-sequence">
The most common problem compass users can expect to face is interference.  Interference will generally cause the compass to behave poorly.  Usually this means inconsistent, fluctuating, or inaccurate readings.  Luckily most forms of interference are fairly easy to deal with.
  __NOTOC__
{{PTX_COMPASSCAL}}
</div>


===What are likely sources of interference and how are they handled?===
===Calculating Heading===
[[image:nodistortion.gif|thumb|310px|2 axis magnetic field data with 0 distortion.]]
For most applications, we recommend using the [[Spatial_Primer|Spatial]] object to get a direct readout of compass heading, as it has already been processed and combined with accelerometer and gyroscope data for the most consistent results.
There are 4 main categories of interference.  Some are easy to get rid of via [[Compass Primer#Calibration|calibration]], others are not easy or even impossible to get rid of.


If you rotate the compass through a full 360 degrees and plot the resulting data on an x-y plane you will get a circle centered at the origin. This can be extended to a 3 axis compass which would generate a sphere.  However, certain characteristics of the vehicle and environment can have a distorting effect on this magnetic data often in combination with one another to create significant interference. In fact the magnitude of the interference is regularly many times the that of the actual signal.
Note that if you want to account for “true north” as your heading, you will need to account for the declination of the earth’s magnetic field at your location. The earth’s magnetic north pole and the north pole on a map are not the same, and this will need to be accounted for. The exact process of finding your declination is outside of the scope of this document.
<br clear = "all">
===="Hard Iron" Interference====
[[image:harddistortion.gif|thumb|310px|Magnetic field with hard iron distortion]]
So called ''hard iron'' interference is caused by static magnetic fields associated with the vehicle.  This can include any minor (or major) magnetism in the metal chassis or frame of the vehicle, any actual magnets attached such as speakers etc...  This interference pattern is unique to the vehicle but is constant. If you have your compass in an enclosure that is held together with metal screws even these relatively small amounts of ferromagnetic material can cause issues.  If we consider the magnetic data circle, hard iron interference has the effect of x/y(/z in the case of 3 axes) shifting the entire circle away from the origin by some amount.  The amount is dependent on any number of different factors and can be very large.  The important part is that this shift is the same for all points in time so it can be calibrated out very easily with a numeric offset which is taken care of by the [[Compass Primer#Calibration|calibration process]].
<br clear = "all">


===="Soft Iron" Interference====
It is important to note here, that nearby sources of interference outside of the moving structure could skew readings away from the declination angle, and additional compensation may be required.
{|align = "right"
|[[image:Magnetic_distortion.jpg|thumb|310px|Example of soft iron distortion]]||[[image:softdistortion.gif|thumb|310px|Magnetic field with soft iron distortion]]
|}
''Soft iron'' interference is caused by distortion of the Earth's magnetic field due to materials in the vehicle's construction.  Think of it like electricity, the magnetic field is looking for the easiest path to get to where it is going.  Since magnetic fields can flow more easily through [[Glossary#Ferromagnetism|ferromagnetic]] materials than air, more of the field will flow through the ferromagnetic material than you would expect if it were just air.  This distortion effect causes the magnetic field lines to be bent sometimes quite a bit.  Note that unlike hard iron interference which is the result of materials which actually have a magnetic field of their own, soft iron interference is caused by non-magnetic materials distorting the Earth's magnetic field.  This type of interference has a squishing effect on the magnetic data circle turning it into more of an ellipsoid shape.  The distortion in this case depends on the direction that the compass is facing.  Because of this the distortion cannot be [[Compass Primer#Calibration|calibrated]] out with a simple offset, more complicated math will still let the compass account for this type of interference though.


<br clear = "all">
While the actual calculations are also outside the scope of this document, if you still want to calculate heading on your own, you will also need to be aware of the fact that the earth’s magnetic field is not parallel to the surface at most latitudes. This means that unless your compass is perfectly flat, you will need to account for sensor’s tilt relative to the earth’s surface for an accurate reading of heading. The heading output from your [[Spatial_Primer|Phidget Spatial]] object is already compensated for such effects.


====Dynamic magnetic fields associated with application====
==Demonstrations Using the Control Panel Example==
Most robots and vehicles have all manner of devices running on them other than just the compass.  The wiring associated with these devices will create its own, dynamic magnetic field.  Particularly bad offenders are electric motors that are running.  The magnetic fields of these devices are constantly changing and [[Compass Primer#Calibration|calibration]] will only provide small (if any) benefits.  The best thing that can be done to avoid this sort of interference is to mount the compass as far away from other electronics as possible.
[[File:Magnetometer_Example.jpg|400px|link=|thumb|The Phidgets Control Panel Magnetometer Example]]


====Static or Dynamic fields not associated with application====
The magnetometer example displays the direction magnitude of the measured magnetic field in the X and Y axes as a line from the center of a circle. The red or green circle shows the strength of the magnetic field traveling through the top of the sensor. The larger the circle, the greater the effect. Red indicates a field pointing into the top of the sensor, green indicates a field pointing up from the bottom.
These are the most difficult to handle.  A very common cause of this sort of interference is steel or iron re-bar in concrete floors. Steel studs in office or commercial buildings are also a problem.  In general any environmental (i.e. external) sources of hard or soft iron distortion can cause issues as the vehicle moves about.  There is no practical way to account for this. The best thing you can do is to take a simple handheld compass and move it around in the area you intend the electronic compass to be operating. Does the compass report reasonable directions?  If so then your system will likely function well.  If not, the area is simply too noisy to use an electronic compass.


====Combinations====
Similarly, the X and Y components of the field are indicated by a line in the center of the circle. Out of the box, you may notice that when your compass is placed flat on a table, and rotated in a circle, the magnetic field indicator in X and Y doesn’t actually follow a circle of even magnitude. This is an indication you will need to calibrate your compass. Calibrate it now, and come back. You can begin calibration by clicking the “Calibrate” button.
In practical applications most of these types of interference work in combination. Because of all of this, to use a [[Compass Primer#Calibration|compass calibration]] is required.


==Declination==
If your compass is properly calibrated, by placing it flat on a table you should notice the length of the line remains about the same while the magnetometer is rotated. If it’s still not behaving this way, first try moving your sensor to the side a distance, and see how that effects your results. If the sensor reading moves, this indicates it is probably close to something steel, or magnetic, such as screws in the table. Otherwise, try calibrating again and check your results.
*declination map &rarr;
*difference between true north and magnetic north
*a simple correction factor to fix it
* Need to explain this image - it's very simple, but non-intuitive.


Due to the nature of the Earth's magnetic field there is a difference between magnetic north, and what is known as "true north". What this means is that there is a corrective factor that needs to be included in order to get accurate readings.
The next thing you may notice is that the line is relatively short, and there is a larger than expected field going through the device vertically. (i.e. the red/green circle is large). In most places on the face of the earth, the magnetic field isn’t directly parallel to the surface, and may in fact be pointing into, or outwards from the surface. As you tilt the sensor away from the table, you may notice the effects of rotating your sensor are strongly skewed when used in any orientation that isn’t flat.
In fact, you should be able to orient your sensor such that the line in the middle of the diagram becomes a dot, while the outer circle is at its largest. If you were to draw a line out from the face of your sensor, this is the actual tilt of the magnetic field at your location. At the location of the Phidgets offices, we find that the earth’s magnetic field is pointed mostly at the ground, rather than alongside it.


==Glossary==
If you were making heading calculations on your own, you would need to account for this effect in any scenario where you can’t guarantee your sensor will remain flat.
====resolution====
* resolution indicates how fine of a change in the magnetic field the magnetometer is capable of reading.  in the case of the 1056 it is 400&mu;G minimum.  this means that any change in magnetic field smaller than 400&mu;G will not get measured.


====offset from north====
By using a [[Spatial_Primer|Phidget Spatial]] you can get a readout of the compass bearing directly, that accounts for the tilt of the sensor, using the ''heading'' component of the Euler angles provided.
* Offset from north is only valid on a compass that has been well calibrated.
* This figure assumes a long term measurement - so noise has been greatly reduced / averaged out.
* Offset from North error comes from non-linearities in the compass, and each axis in the compass being somewhat sensitive to magnetic fields aligned with other axes.
* There is very little that can be done to reduce this error.
 
 
 
====declination====
[[File:declination.jpg|thumb|310px]]
*declination map &rarr;
*difference between true north and magnetic north
*a simple correction factor to fix it
* Need to explain this image - it's very simple, but non-intuitive.
 
===Measurement Range===
* Maximum field strength (in gauss) that the compass can measure.  Note that hard iron offsets can be calibrated out, but they will still reduce the range of the sensor, as the earth's magnetic field is pushed away from the center.  (May be could use a simple image).
 
===Noise===
* This will be a graph of noise (in gauss, std. deviation) compared to sample rate.
* Could also be allen deviation graph
 
===Sample (Data) Rate===
* This is set for the entire PhidgetSpatial
* The compass is not able to provide data at this rate
* Do not forget that the primer is not here to describe individual products.
 
====units====
*occasional confusion, people use gauss and tesla interchangeably in the application of magnetometers.  1 tesla is 10<sup>4</sup> gauss.
 
===Use Within Code===
 
* Mention how atan() and atan2() are different when using trigonometry in your code, and how they get used.  I.e. atan() is the mathematically correct atan, which goes from -90 to 90 degrees.  The function atan2() was developed because humans don't think this way, they think in a whole circle from 180 to -180 degrees.  So atan2() takes the signs of the two arguments into account to figure out the quadrant.
 
===How to calculate bearing===
*currently we only show how to calculate compass heading in the C# examples.

Latest revision as of 20:23, 13 July 2023


Magnetometers and Their Uses

Introduction

Magnetometers Measure Magnetic Field in 3 Axes

Compasses are a centuries old technology that have allowed people to quickly get a sense of direction around the globe. As you probably know, they operate on the principle that the earth’s magnetic field points roughly north, no matter where you are (assuming no large sources of interference). To use this time-tested method of navigation with electronics, we recommend incorporating a magnetometer.

Magnetometers measure the strength and direction of magnetic fields, information that when properly applied can feed a compass bearing to your application. Unlike a traditional compass, the readings from Phidgets-based magnetometers operate in all 3 axes, allowing your application to maintain a good sense of direction regardless of orientation.

Calibration

In the same way as a physical compass will be thrown off by magnets and metals like steel, your magnetometer will be similarly affected. However, so long as this interference remains consistent, we can adjust the compass calculations to account for these effects in a process called calibration.

Example of soft iron distortion caused by a large piece of steel.

The main thing to consider when calibrating a compass is that any (ferromagnetic) metals near the magnetometer will distort the readings. If the magnetometer is mounted to a moving structure, the structure will shift and bend the magnetic field in unique (but predictable) ways as it rotates. To account for these variations, the compass will need to be calibrated while mounted in the specific location it will be used. Any metal that will move with the compass in practice should move with the compass during calibration, and any metal that will be otherwise near the compass, should be in the same position for calibration. Just know that any stationary sources of magnetic interference (steel girders, etc.) will result in an offset in your heading from earth’s magnetic north.

For example, if you are planning to mount a compass in a car, you will need to rotate the whole car with the compass in place when calibrating in order to properly compensate for all the effects of that much moving steel.

Basic calibration can only account for distortions in the magnetic field caused by the materials of your structure. Calibration alone will not be able to account for intermittent or variable effects, such as electric motors turning on nearby, or large pieces of steel moving independently of your application. To minimize these effects, be sure to keep your magnetometer as far away from sources of magnetic interference as possible.

Unfortunately, if you are in a magnetically varied environment, or if your environment changes after calibration, you will not be able to fully rely on your compass for an accurate heading. These scenarios could be as simple as driving your car across a big steel bridge, or as contrived as loading an airplane full of magnets. Thankfully, most places are far enough away from such interference, and the magnetic compass maintains its usefulness.

Magnetometer Calibration

Magnetometer Calibration Guide

In order for your magnetometer to provide accurate heading information, it must be calibrated.

Follow this guide to complete the calibration process.

1. Open the Magnetometer example for your device, and click the Calibrate button. This will open the Compass Calibration tool.

2. If your device supports heating, we recommend checking the HeatingEnabled checkbox. Wait for the temperature reading to turn green:

If your Spatial does not support heating (neither of the above controls will be available), you can skip this step.

3. Next, decide if you're using 2-axis or 3-axis calibration:

● If the spatial is free to move in all directions, use 3-axis

● If the spatial is being kept mostly level (e.g. in a car), use 2-axis

4. You can leave the Local Field Strength at 1.0 for general use since magnitude doesn't affect heading. If you need more quantitative results, look up your local value.

5. Make sure your Phidget Spatial is firmly in the position you intend to calibrate it for, and begin by clicking the Start button.

Begin rotating the structure your Phidget is mounted to. Notice the red dots appearing on the graph.

6. Try to rotate it so that it fills out as much of the sphere (or circle in 2-axis mode) as possible. When you're finished, click Stop.

You should now see red and green spheres (or circles) in the graph. The red one is the raw measurements, and the green one is the calibrated measurements.

Newly calibrated data from the magnetometer will be indicated by a green line that matches the sphere. The green sphere should be more centered than the red one. If not, try repeating the calibration.

You're now done the calibration process! On most Phidget Spatials, the calibration will be stored in flash, so it stays calibrated to this environment even across power cycles.

7. If you need to repeat this exact calibration, you can save the values listed in the text box.

You can use these values in the setMagnetometerCorrectionParameters method. See our API Documentation for more details.

«
»

Calculating Heading

For most applications, we recommend using the Spatial object to get a direct readout of compass heading, as it has already been processed and combined with accelerometer and gyroscope data for the most consistent results.

Note that if you want to account for “true north” as your heading, you will need to account for the declination of the earth’s magnetic field at your location. The earth’s magnetic north pole and the north pole on a map are not the same, and this will need to be accounted for. The exact process of finding your declination is outside of the scope of this document.

It is important to note here, that nearby sources of interference outside of the moving structure could skew readings away from the declination angle, and additional compensation may be required.

While the actual calculations are also outside the scope of this document, if you still want to calculate heading on your own, you will also need to be aware of the fact that the earth’s magnetic field is not parallel to the surface at most latitudes. This means that unless your compass is perfectly flat, you will need to account for sensor’s tilt relative to the earth’s surface for an accurate reading of heading. The heading output from your Phidget Spatial object is already compensated for such effects.

Demonstrations Using the Control Panel Example

The Phidgets Control Panel Magnetometer Example

The magnetometer example displays the direction magnitude of the measured magnetic field in the X and Y axes as a line from the center of a circle. The red or green circle shows the strength of the magnetic field traveling through the top of the sensor. The larger the circle, the greater the effect. Red indicates a field pointing into the top of the sensor, green indicates a field pointing up from the bottom.

Similarly, the X and Y components of the field are indicated by a line in the center of the circle. Out of the box, you may notice that when your compass is placed flat on a table, and rotated in a circle, the magnetic field indicator in X and Y doesn’t actually follow a circle of even magnitude. This is an indication you will need to calibrate your compass. Calibrate it now, and come back. You can begin calibration by clicking the “Calibrate” button.

If your compass is properly calibrated, by placing it flat on a table you should notice the length of the line remains about the same while the magnetometer is rotated. If it’s still not behaving this way, first try moving your sensor to the side a distance, and see how that effects your results. If the sensor reading moves, this indicates it is probably close to something steel, or magnetic, such as screws in the table. Otherwise, try calibrating again and check your results.

The next thing you may notice is that the line is relatively short, and there is a larger than expected field going through the device vertically. (i.e. the red/green circle is large). In most places on the face of the earth, the magnetic field isn’t directly parallel to the surface, and may in fact be pointing into, or outwards from the surface. As you tilt the sensor away from the table, you may notice the effects of rotating your sensor are strongly skewed when used in any orientation that isn’t flat.

In fact, you should be able to orient your sensor such that the line in the middle of the diagram becomes a dot, while the outer circle is at its largest. If you were to draw a line out from the face of your sensor, this is the actual tilt of the magnetic field at your location. At the location of the Phidgets offices, we find that the earth’s magnetic field is pointed mostly at the ground, rather than alongside it.

If you were making heading calculations on your own, you would need to account for this effect in any scenario where you can’t guarantee your sensor will remain flat.

By using a Phidget Spatial you can get a readout of the compass bearing directly, that accounts for the tilt of the sensor, using the heading component of the Euler angles provided.