Reports.ThreeAxisMag2 History

Hide minor edits - Show changes to output

April 18, 2007, at 05:16 PM by Daniel Soltis -
Changed line 40 from:
The Micromag3 measures magnetic field through magnetoinduction. A description of the circuit and how the sensor works can be downloaded from PNI [[ https://www.pnicorp.com/downloadResource/c1d/manuals/67/Ap%2BNote%2BDiscrete%2BCircuit%2Bfor%2BMagneto-Inductive%2BSensors.pdf+LR+relaxation+oscillator&hl=en&ct=clnk&cd=6&gl=us&client=firefox-a | here]], and [[http://archives.sensorsmag.com/articles/1298/mag1298/main.shtml | this 1998 article from Sensors magazine]] describes a variety of methods for sensing magnetic fields, including magnetoinductance. [[http://www.edn.com/archives/1996/031496/06df2.htm | This1996 article from EDN]] also compares several methods of measuring magnetic fields.
to:
The Micromag3 measures magnetic field through magnetoinductance. A description of the circuit and how the sensor works can be downloaded from PNI [[ https://www.pnicorp.com/downloadResource/c1d/manuals/67/Ap%2BNote%2BDiscrete%2BCircuit%2Bfor%2BMagneto-Inductive%2BSensors.pdf+LR+relaxation+oscillator&hl=en&ct=clnk&cd=6&gl=us&client=firefox-a | here]], and [[http://archives.sensorsmag.com/articles/1298/mag1298/main.shtml | this 1998 article from Sensors magazine]] describes a variety of methods for sensing magnetic fields, including magnetoinductance. [[http://www.edn.com/archives/1996/031496/06df2.htm | This1996 article from EDN]] also compares several methods of measuring magnetic fields.
Changed line 68 from:
An output (a square voltage wave) that is inherently digital.
to:
* an output (a square voltage wave) that is inherently digital.
Deleted line 69:
\\
Changed line 77 from:
The Micromag3 is desiged to work with SPI (synchronous peripheral interface), a system in which a master device (in this case an Arduino microprocessor) sends clock pulses to the slave device (the magnetometer) to synchronize the sending and receiving of data. Generally, the master device sends a command, waits until the slave completes its reading, and then reads the result, with the clock used to time when each bit gets sent.
to:
The Micromag3 is designed to work with SPI (synchronous peripheral interface), a system in which a master device (in this case an Arduino microprocessor) sends clock pulses to the slave device (the magnetometer) to synchronize the sending and receiving of data. Generally, the master device sends a command, waits until the slave completes its reading, and then reads the result, with the clock used to time when each bit gets sent.
Changed line 80 from:
Although the Arduino board contains some built-in hardware and a software library for handling SPI, the magnetometor’s SPI is quirky enough that it ended up being easier to write the code to explicitly handle the interface, rather than work with the existing library.
to:
Although the Arduino board contains some built-in hardware and a software library for handling SPI, the magnetometer’s SPI is quirky enough that it ended up being easier to write the code to explicitly handle the interface, rather than work with the existing library.
Changed line 96 from:
# The protocol reuires sending one byte of command information to the magnetometer, and the magnetometer returns 2 bytes for the reading value. Each command byte can activate only one axis to be read.
to:
# The protocol requires sending one byte of command information to the magnetometer, and the magnetometer returns 2 bytes for the reading value. Each command byte can activate only one axis to be read.
Changed line 103 from:
An online student paper, [[http://courses.ece.uiuc.edu/ece445/projects/fall2005/project18_final_paper.doc | Autonomous Control of Model Aircraft fsor Photographic Reconnaissance, by Chris Hansen and Mark Inderhees]], (the link is to download a Word document) provided the following equations, which worked well:
to:
An online student paper, [[http://courses.ece.uiuc.edu/ece445/projects/fall2005/project18_final_paper.doc | Autonomous Control of Model Aircraft for Photographic Reconnaissance, by Chris Hansen and Mark Inderhees]], (the link is to download a Word document) provided the following equations, which worked well:
Changed line 109 from:
* if x < 0, orientation = pi - atan(y/x)
to:
* if x < 0, orientation = pi - arctan(y/x)
Changed line 111 from:
* if x > 0 & y > 0, orientation = 2*PI - atan(y/ x)
to:
* if x > 0 & y > 0, orientation = 2*PI - arctan(y/ x)
Changed line 118 from:
Also, the magnetometer works for magnetic fields similar in strength to the earth’s magnetic field. The application of a magnetic field that is too much stronger can cause the instrument to stop working. When reading reviews of the magnetometer, one of the complaints I saw was that, in robotics applications, the magnetomer failed to give good readings when the motor to run the robot was turned on.
to:
Also, the magnetometer works for magnetic fields similar in strength to the earth’s magnetic field. The application of a magnetic field that is too much stronger can cause the instrument to stop working. When reading reviews of the magnetometer, one of the complaints I saw was that, in robotics applications, the magnetometer failed to give good readings when the motor to run the robot was turned on.
Changed line 121 from:
I decided to explore the magnetometer’s hysteresis and response to external fields in the following fashion. I physically attached the breadboard holding the magnetometer and its circuit to the dial of a potentiomenter (using hot glue). With the base of the potentiometer anchored, rotating the magnetometer causes the potentiometer to rotate, giving reliable potentiometer readings of angular position.
to:
I decided to explore the magnetometer’s hysteresis and response to external fields in the following fashion. I physically attached the breadboard holding the magnetometer and its circuit to the dial of a potentiometer (using hot glue). With the base of the potentiometer anchored, rotating the magnetometer causes the potentiometer to rotate, giving reliable potentiometer readings of angular position.
Changed lines 131-132 from:
# The magnetomer running under ‘standard’ operating conditions, which in this case meant at the computer lab, with a number of computers and other electronics nearby, but nothing specifically creating large magnetic fields.
# With a 9V DC battery running about a food away from the magnetometer.
to:
# The magnetometer running under ‘standard’ operating conditions, which in this case meant at the computer lab, with a number of computers and other electronics nearby, but nothing specifically creating large magnetic fields.
# With a 9V DC battery running about a foot away from the magnetometer.
Deleted line 201:
There's also a sawtooth slope of error (clearest in the first graph, but probably present in all three.) My guess is that this is a reflection of a slight tilt in the magnetometer, either relative to the potentiometer or relative to the ground. The X and Y axes give an accurate orientation only if the magnetometer is level relative to the Earth's surface. Tilting it introduces error, unless readings from the Z axis are used to correct it.
Added lines 204-206:
There's also a saw tooth slope of error (clearest in the first graph, but probably present in all three.) My guess is that this is a reflection of a slight tilt in the magnetometer, either relative to the potentiometer or relative to the ground. The X and Y axes give an accurate orientation only if the magnetometer is level relative to the Earth's surface. Tilting it introduces error, unless readings from the Z axis are used to correct it.
\\
\\
Changed line 208 from:
'''Example Application Using the Magnetomer:'''\\
to:
'''Example Application Using the Magnetometer:'''\\
Changed line 218 from:
Some of the difficulties with speed of response and noise (which could be smoothed, although a simple weighted average hiccuped when the orientation switched over from 2*Pi to 0, which is a smooth transition in display but not numerically) are apparent in the video.
to:
Some of the difficulties with speed of response and noise (which could be smoothed, although a simple weighted average hiccupped when the orientation switched over from 2*Pi to 0, which is a smooth transition in display but not numerically) are apparent in the video.
Changed line 241 from:
Overall, I would recommend using this sensor if you need to--if the magnetometer will uniquely measure something that's not accessible using a cheaper and/or more stable sensor, and if the project will be in an environment where external magnetic forces won't overwhelm the sensor.
to:
Overall, I would recommend using this sensor if you need to--if the magnetometer will uniquely measure something that's not accessible using a cheaper and/or more stable sensor, and if the project will be in an environment where external magnetic forces won't overwhelm the sensor.
April 18, 2007, at 05:10 PM by Daniel Soltis -
Changed lines 108-109 from:
\\
* if x = 0 & y < 0, orientation = pi/2
to:
* if x = 0 & y < 0, orientation = pi/2
April 18, 2007, at 04:42 PM by Daniel Soltis -
Changed line 154 from:
http://farm1.static.flickr.com/186/464385694_cd1a8577a1.jpg?v=0
to:
http://farm1.static.flickr.com/186/464385694_cd1a8577a1.jpg
April 18, 2007, at 04:41 PM by Daniel Soltis -
Changed line 154 from:
http://farm1.static.flickr.com/175/464377743_ca5397761b.jpg
to:
http://farm1.static.flickr.com/186/464385694_cd1a8577a1.jpg?v=0
Deleted line 155:
\\
April 18, 2007, at 04:29 PM by Daniel Soltis -
Changed line 154 from:
http://farm1.static.flickr.com/168/462536746_50476c68b2.jpg
to:
http://farm1.static.flickr.com/175/464377743_ca5397761b.jpg
April 18, 2007, at 04:20 PM by Daniel Soltis -
Changed line 216 from:
[[http://www.youtube.com/watch?v=O7RtW_TIOFM \ View video.]]
to:
[[http://www.youtube.com/watch?v=O7RtW_TIOFM | View video.]]
April 18, 2007, at 04:19 PM by Daniel Soltis -
Changed line 216 from:
<<PUT VIDEO HERE>>
to:
[[http://www.youtube.com/watch?v=O7RtW_TIOFM \ View video.]]
April 18, 2007, at 04:03 PM by Daniel Soltis -
Changed line 242 from:
Overall, I would recommend using this sensor if you have an application for which a magnetometer uniquely meets your needs and which works at a speed and in an environment in which you can be fairly confident that it will be able to provide you with reliable data.
to:
Overall, I would recommend using this sensor if you need to--if the magnetometer will uniquely measure something that's not accessible using a cheaper and/or more stable sensor, and if the project will be in an environment where external magnetic forces won't overwhelm the sensor.
April 18, 2007, at 03:51 PM by Daniel Soltis -
Changed line 5 from:
The Micromag3 is a 3-axis magnetometer that measures the strength of magnetic fields in 3 directions. It can measure magnetic fields that are approximately the same strength as the eEarth’s magnetic field. Common applications include orientation sensing and for sensing local disruptions in the Earth’s magnetic field, such as those caused by vehicles. The datasheet summary can be found [[http://itp.nyu.edu/physcomp/sensors/Reports/ThreeAxisMag | here]].
to:
The Micromag3 is a 3-axis magnetometer that measures the strength of magnetic fields in 3 directions. It can measure magnetic fields that are approximately the same strength as the Earth’s magnetic field. Common applications include orientation sensing and for sensing local disruptions in the Earth’s magnetic field, such as those caused by vehicles. The datasheet summary can be found [[http://itp.nyu.edu/physcomp/sensors/Reports/ThreeAxisMag | here]].
Added line 205:
There's also a sawtooth slope of error (clearest in the first graph, but probably present in all three.) My guess is that this is a reflection of a slight tilt in the magnetometer, either relative to the potentiometer or relative to the ground. The X and Y axes give an accurate orientation only if the magnetometer is level relative to the Earth's surface. Tilting it introduces error, unless readings from the Z axis are used to correct it.
April 17, 2007, at 03:32 AM by Daniel Soltis -
Changed line 98 from:
# The value that is returned is 2 bytes of data in <a href = http://en.wikipedia.org/wiki/Two's_complement>2’s complement </a>format. Because the returned value can be negative or positive, the first bit is used to designate the sign. The remaining 7 bits are sent, most significant bit first, to designate the value. Thus, the returned numbers can range from -32768 to 32767.
to:
# The value that is returned is 2 bytes of data in [[http://en.wikipedia.org/wiki/Two's_complement | 2’s complement]] format. Because the returned value can be negative or positive, the first bit is used to designate the sign. The remaining 7 bits are sent, most significant bit first, to designate the value. Thus, the returned numbers can range from -32768 to 32767.
April 17, 2007, at 03:15 AM by Daniel Soltis -
Added line 70:
\\
Changed line 212 from:
One of my other projects this semester involved exploring different ways to display video that was captured in 360 degrees. I used the magnetometer to play with one method of displaying the video. This [[Code.MicroMagVideo | Processing code]], with the [[Code.MicroMagArduino | basic Arduino code]] from above, displays a 360 degree video, with the orientation of the magnetometer controlling the angle at which one views the video.
to:
One of my other projects this semester involved exploring different ways to display video that was captured in 360 degrees. I used the magnetometer to play with one method of displaying the video. This [[Code.MicroMagVideo | Processing code]], with the [[Code.MicromMagArduino | basic Arduino code]] from above, displays a 360 degree video, with the orientation of the magnetometer controlling the angle at which one views the video.
April 17, 2007, at 03:04 AM by Daniel Soltis -
Changed line 211 from:
One of my other projects this semester involved exploring different ways to display video that was captured in 360 degrees. I used the magnetometer to play with one method of displaying the video. This [[Code.MicroMagVideo | Processing code]], with the [[Code.MicroMagArduino | basic Arduino code\\> from above, displays a 360 degree video, with the orientation of the magnetometer controlling the angle at which one views the video.
to:
One of my other projects this semester involved exploring different ways to display video that was captured in 360 degrees. I used the magnetometer to play with one method of displaying the video. This [[Code.MicroMagVideo | Processing code]], with the [[Code.MicroMagArduino | basic Arduino code]] from above, displays a 360 degree video, with the orientation of the magnetometer controlling the angle at which one views the video.
April 17, 2007, at 02:47 AM by Daniel Soltis -
Changed line 16 from:
----
to:
----\\
Changed line 75 from:
----
to:
----\\
Changed line 114 from:
----
to:
----\\
Changed line 206 from:
----
to:
----\\
Changed line 223 from:
----
to:
----\\
April 17, 2007, at 02:46 AM by Daniel Soltis -
Added line 16:
----
Added line 75:
----
Added line 114:
----
Deleted line 151:
\\http://farm1.static.flickr.com/168/462536746_50476c68b2.jpg
Added line 153:
http://farm1.static.flickr.com/168/462536746_50476c68b2.jpg
Added line 155:
\\
Changed lines 206-207 from:
'''Application Using the Magnetomer'''\\
to:
----
'''Example Application Using the Magnetomer:'''\\
Added line 223:
----
April 17, 2007, at 02:44 AM by Daniel Soltis -
Deleted line 199:
\\
Deleted line 200:
'''Application Using the Magnetomer: Orientation as a Way to Control Perspective in a Video'''
Added lines 202-203:
'''Application Using the Magnetomer'''\\
'''Orientation as a Way to Control Perspective in a Video'''
Added line 205:
\\
April 17, 2007, at 02:40 AM by Daniel Soltis -
Deleted lines 141-142:
''A Slight Detour to Explain How I Scaled the Data''
The magnetometer provided calculated orientation readings from 0 to 2*pi, and the potentiometer provided measurements from 0 to 1023. The potentiometer needed to be scaled from 0-1023 to the same range as the magnetometer. The potentiometer only covered 7/8 of a complete revolution between 0 and 1023. So it scaled to approximately 0 to 1.75*Pi. In addition, the measurements correlated as 0 to 1023 for the pot, and 2*Pi to 0 for the magnetometer, so the direction needed to be reversed. The equation to scale the pot measurement was 1.75*Pi*(1-potValue).
Added lines 143-144:
''A Slight Detour to Explain Scaling of the Data''\\
The magnetometer provided calculated orientation readings from 0 to 2*pi, and the potentiometer provided measurements from 0 to 1023. The potentiometer needed to be scaled from 0-1023 to the same range as the magnetometer. The potentiometer only covered 7/8 of a complete revolution between 0 and 1023. So it scaled to approximately 0 to 1.75*Pi. In addition, the measurements correlated as 0 to 1023 for the pot, and 2*Pi to 0 for the magnetometer, so the direction needed to be reversed. The equation to scale the pot measurement was 1.75*Pi*(1-potValue).
Added line 146:
\\
April 17, 2007, at 02:39 AM by Daniel Soltis -
Deleted line 68:
\\
Added line 98:
Most references to calculating orientation from the X and Y axes simply state that the orientation is equal to the arctangent of y/x. Clearly, this leads to errors any time x=0.
Deleted line 99:
Most references to calculating orientation from the X and Y axes simply state that the orientation is equal to the arctangent of y/x. Clearly, this leads to errors any time x=0.
Added line 101:
An online student paper, [[http://courses.ece.uiuc.edu/ece445/projects/fall2005/project18_final_paper.doc | Autonomous Control of Model Aircraft fsor Photographic Reconnaissance, by Chris Hansen and Mark Inderhees]], (the link is to download a Word document) provided the following equations, which worked well:
Deleted line 102:
An online student paper, [[http://courses.ece.uiuc.edu/ece445/projects/fall2005/project18_final_paper.doc | Autonomous Control of Model Aircraft fsor Photographic Reconnaissance, by Chris Hansen and Mark Inderhees]], (the link is to download a Word document) provided the following equations, which worked well:
Added line 104:
For orientation in radians:
Deleted lines 105-106:
For orientation in radians:
\\
Deleted line 111:
\\
Changed line 137 from:
It was difficult to get data while running the motor, because the motor tended to cause the whole system to break. After about a minute, the readings started going horribly awry, and then the computer registered too much of a current draw through the USB cable to stopped transmitting and receiving information. So that’s a serious limitation!
to:
It was difficult to get data while running the motor, because the motor tended to cause the whole system to break. After about a minute, the readings started going horribly awry, and then the computer registered too much of a current draw through the USB cable so stopped transmitting and receiving information. So that’s a serious limitation!
Changed line 140 from:
Below are several graphs showing the relationships between the potentiometer and magnetometer results, with the readings scaled and offset to be comparable. (Feel free to skip this section if you're not into math.)
to:
Below are several graphs showing the relationships between the potentiometer and magnetometer results, with the readings scaled and offset to be comparable.
Added lines 142-143:
''A Slight Detour to Explain How I Scaled the Data''
The magnetometer provided calculated orientation readings from 0 to 2*pi, and the potentiometer provided measurements from 0 to 1023. The potentiometer needed to be scaled from 0-1023 to the same range as the magnetometer. The potentiometer only covered 7/8 of a complete revolution between 0 and 1023. So it scaled to approximately 0 to 1.75*Pi. In addition, the measurements correlated as 0 to 1023 for the pot, and 2*Pi to 0 for the magnetometer, so the direction needed to be reversed. The equation to scale the pot measurement was 1.75*Pi*(1-potValue).
Deleted line 144:
The magnetometer provided calculated orientation readings from 0 to 2*pi, and the potentiometer provided measurements from 0 to 1023. I scaled the pot readings to a 0 to 2*pi range. The potentiometer needed to be scaled from 0-1023 to the same range as the magnetometer. The potentiometer only covered 7/8 of a complete revolution between 0 and 1023. So it scaled to approximately 0 to 1.75*Pi. In addition, the measurements correlated as 0 to 1023 for the pot, and 2*Pi to 0 for the magnetometer, so the direction needed to be reversed. The equation to scale the pot measurement was 1.75*Pi*(1-potValue).
Added line 146:
In addition, there was an offset--the 0 position on the potentiometer did not line up with the 0 position on the magnetometer. First I eyeballed the numbers to identify the magnetometer measurements that had passed 2*Pi and cycled back around to 0. I added 2*Pi to them. Then I calculated the average difference and subtracted that from the magnetometer measurements.
Deleted lines 147-148:
In addition, there was an offset--the 0 position on the potentiometer did not line up with the 0 position on the magnetometer. First I eyeballed the numbers to identify the magnetometer measurements that had passed 2*Pi and cycled back around to 0. I added 2*Pi to them. Then I calculated the average difference and subtracted that from the magnetometer measurements.
\\
Changed line 156 from:
'''Some Graphs'''
to:
'''Graphs'''
April 17, 2007, at 02:35 AM by Daniel Soltis -
April 17, 2007, at 02:34 AM by Daniel Soltis -
Changed line 125 from:
Here is the [[Code.MicroMagArdTest | Arduino code]], and here is the [[Code.MicroMagProcTest | Processing code]] I used to record the data. I recorded the time before and after a given set of measurements was taken, the magnetometer data for three axes (although I only considered two axes), and the potentiometer reading. In each instance, I tried to rotate the potentiometer both quickly and slowly, to get a sense of how the speed of rotation affected the magnetometer response. I saved collected data to a file, which I then copied into Excel for some graphing and analysis.
to:
http://farm1.static.flickr.com/178/462549609_d70835668e.jpg
Added lines 128-130:
Here is the [[Code.MicroMagArdTest | Arduino code]], and here is the [[Code.MicroMagProcTest | Processing code]] I used to record the data. I recorded the time before and after a given set of measurements was taken, the magnetometer data for three axes (although I only considered two axes), and the potentiometer reading. In each instance, I tried to rotate the potentiometer both quickly and slowly, to get a sense of how the speed of rotation affected the magnetometer response. I saved collected data to a file, which I then copied into Excel for some graphing and analysis.
\\
\\
Changed line 161 from:
<<GRAPH 1>>
to:
http://farm1.static.flickr.com/189/462545799_192bf40bab.jpg
Changed line 167 from:
<<GRAPH 2>>
to:
http://farm1.static.flickr.com/183/462545801_6265cceffc.jpg
Changed line 173 from:
<<GRAPH 3>>
to:
http://farm1.static.flickr.com/219/462545803_fe325f4390.jpg
Changed line 185 from:
<<GRAPH 4>>
to:
http://farm1.static.flickr.com/206/462545809_76e0957144.jpg
Changed line 194 from:
<<GRAPHS 5-7>>
to:
http://farm1.static.flickr.com/188/462545813_b22320ecc2.jpg
Added line 196:
http://farm1.static.flickr.com/194/462545821_3f193ff681.jpg
Added lines 198-200:
http://farm1.static.flickr.com/194/462549615_34ea95d179.jpg
\\
\\
April 17, 2007, at 02:21 AM by Daniel Soltis -
Changed line 51 from:
http://farm1.static.flickr.com/253/462526159_6ffb4b68ff.jpg?v=0
to:
http://farm1.static.flickr.com/253/462526159_6ffb4b68ff.jpg
Changed line 82 from:
Wiring up the magnetometer is straightforward, as it is already arranged on a board with connectors spaced to fit on a breadboard. The datasheet explains the pin layout clearly:
to:
Wiring up the magnetometer is straightforward, as it is already arranged on a board with connectors spaced to fit on a breadboard. The last page of the datasheet explains the pin layout clearly.
Changed line 85 from:
ADD IMAGE HERE
to:
http://farm1.static.flickr.com/191/462535389_0413d53e83.jpg
Added line 148:
\\http://farm1.static.flickr.com/168/462536746_50476c68b2.jpg
Deleted line 149:
<<PUT PICTURE HERE>>
Deleted line 150:
\\
Changed lines 156-157 from:
'''Some Graphs'''\\
to:
'''Some Graphs'''
\\
April 17, 2007, at 02:02 AM by Daniel Soltis -
Changed line 51 from:
Attach:circuit.gif
to:
http://farm1.static.flickr.com/253/462526159_6ffb4b68ff.jpg?v=0
April 17, 2007, at 01:58 AM by Daniel Soltis -
Changed line 51 from:
ADD AN IMAGE HERE
to:
Attach:circuit.gif
April 17, 2007, at 01:56 AM by Daniel Soltis -
Changed line 63 from:
The benefits of this method appear to be:
to:
The benefits of magnetoinductive magnetometers appear to include:
April 17, 2007, at 01:52 AM by Daniel Soltis -
Changed line 5 from:
The Micromag3 is a 3-axis magnetometer that measures the strength of magnetic fields in 3 directions. In particular, it can measure magnetic fields that are approximately the same strength as the earth’s magnetic field. Thus, it has obvious applications for orientation sensing and for sensing local disruptions in the earth’s magnetic field. The datasheet summary can be found [[http://itp.nyu.edu/physcomp/sensors/Reports/ThreeAxisMag | here]].
to:
The Micromag3 is a 3-axis magnetometer that measures the strength of magnetic fields in 3 directions. It can measure magnetic fields that are approximately the same strength as the eEarth’s magnetic field. Common applications include orientation sensing and for sensing local disruptions in the Earth’s magnetic field, such as those caused by vehicles. The datasheet summary can be found [[http://itp.nyu.edu/physcomp/sensors/Reports/ThreeAxisMag | here]].
April 17, 2007, at 01:51 AM by Daniel Soltis -
Changed line 10 from:
[[http://www.pnicorp.com/productDetail?nodeId=cMM3 | http://www.pnicorp.com/productDetail?nodeId=cMM3)]] It is also available at [[http://www.sparkfun.com| Sparkfun ]] for $55.
to:
([[http://www.pnicorp.com/productDetail?nodeId=cMM3 | http://www.pnicorp.com/productDetail?nodeId=cMM3]]) It is also available at [[http://www.sparkfun.com| Sparkfun ]] for $55.
April 17, 2007, at 01:50 AM by Daniel Soltis -
Changed lines 9-10 from:
The Micromag3 is manufactured by [[ http://www.pnicorp.com || PNI Corporation]] and is available through their website for $50.
(<a href = http://www.pnicorp.com/productDetail?nodeId=cMM3> http://www.pnicorp.com/productDetail?nodeId=cMM3</a>) It is also available at [[http://www.sparkfun.com|| Sparkfun ]] for $55.
to:
The Micromag3 is manufactured by [[ http://www.pnicorp.com | PNI Corporation]] and is available through their website for $50.
[[http://www.pnicorp.com/productDetail?nodeId=cMM3 | http://www.pnicorp.com/productDetail?nodeId=cMM3)]] It is also available at [[http://www.sparkfun.com| Sparkfun ]] for $55.
April 17, 2007, at 01:49 AM by Daniel Soltis -
April 17, 2007, at 01:49 AM by Daniel Soltis -
Changed lines 212-213 from:
to:
'''Conclusions, Ideas for Applications, and Directions for the Future'''\\
Overall, I have mixed feelings about this sensor. It’s fun to play with and I’m glad to have an excuse to have it in my toolbox, but from an ITP/prototyping perspective, I’m not sure what sorts of applications make it worth the $50 price tag, especially given its slow response time and overall noisiness and sensitivity to the environment. (In terms of response time, though, I included measurement of the Z axis for thoroughness in my code, but I didn’t use it. It should be possible to speed up the response by approximately one third just by skipping that measurement, and there may be other ways to optimize the code.)
\\
\\
The most obvious application remains orientation sensing, which can be valuable in robotic systems.
\\
\\
Although I bought the three-axis version because it was only $5 more than the 2-axis version, I didn’t end up using the third axis. The use of a magnetometer in combination with an accelerometer is supposed to provide robust 3-dimensional position and orientation data. (This combination of the two sensors would be a valuable sensor report, if you happen to be in a future sensor workshop and are looking for ideas.)
\\
\\
The uses of magnetometers for detecting metal objects might provide some interesting information, and it might be possible to figure out how to track the location of a single magnet some distance from the magnetometer.
\\
\\
In the example application above, although we didn’t end up sticking with the magnetometer as our sensor of choice, I found the idea of using orientation sensing valuable. Often, I find that my ideas about how to design an interaction or piece of media get constrained by the sensors I am familiar with, and I focus on sensing parameters such as proximity, translational movement, force, or acceleration. Working with the magnetometer forced me to deal with an aspect of movement (especially divorced from translational movement) that I don’t think about as often and suggested approaches that I might not have otherwise considered.
\\
\\
Overall, I would recommend using this sensor if you have an application for which a magnetometer uniquely meets your needs and which works at a speed and in an environment in which you can be fairly confident that it will be able to provide you with reliable data.
April 17, 2007, at 01:18 AM by Daniel Soltis -
Changed line 1 from:
'''MicroMag3 3-axis Magnetometer'''
to:
[+'''MicroMag3 3-axis Magnetometer'''+]
Changed lines 161-213 from:
to:
This graph was taken without any specifically added outside sources of magnetic fields. Comparing the difference between measurements against the magnitude of change from one measurement to the next (for example, the change in the pot value from 24998 ms to 25288 ms) doesn’t seem to show a clear difference between accuracy in response to quickly or slowly turning the magnetometer. The standard deviation of the differences between the measurements was 0.400, about 7% of the range of measurement, but it’s not clear that the error is specifically a lag in response time to changes in orientation.
\\
\\
<<GRAPH 2>>
\\
\\
Some clear hysteresis can be seen in the readings that were taken near a running DC motor:
\\
\\
<<GRAPH 3>>
\\
\\
For the first 30 seconds, the magnetometer readings related to its orientation, but after about 35 seconds, I stopped moving the pot, but the magnetometer values continued to steadily change. Then the whole system went berserk and shut itself down. (This happened a few times; this was the only time I was able to get data saved).
\\
\\
Although the statistics aren’t as straightforward, because of the clear change in behavior as the magnetometer responded to the motor, the standard deviation of the differences between the measurements was 0.605, about 11% of the total range of measurement.
\\
\\
I noticed, even after turning the motor off and letting the magnetometer recover for a few minutes, noisiness persisted.
\\
\\
<<GRAPH 4>>
\\
\\
Although there still isn’t a clear connection between speed of rotation and error, the overall noisiness of the system was increased. The standard deviation of the difference between the measurements was 0.855, about 16% of the total range of measurement.
\\
\\
The differences can seen from a different perspective using a [[http://en.wikipedia.org/wiki/Bland-Altman_plot | Bland-Altman plot]], which compares the difference between the measurements at any given point with their respective average measurement.
\\
\\
<<GRAPHS 5-7>>
\\
\\
These graphs make it easier to see the change in the quantity of error in the different situations.
\\
\\
'''Application Using the Magnetomer: Orientation as a Way to Control Perspective in a Video'''
\\
\\
One of my other projects this semester involved exploring different ways to display video that was captured in 360 degrees. I used the magnetometer to play with one method of displaying the video. This [[Code.MicroMagVideo | Processing code]], with the [[Code.MicroMagArduino | basic Arduino code\\> from above, displays a 360 degree video, with the orientation of the magnetometer controlling the angle at which one views the video.
\\
\\
<<PUT VIDEO HERE>>
\\
\\
Some of the difficulties with speed of response and noise (which could be smoothed, although a simple weighted average hiccuped when the orientation switched over from 2*Pi to 0, which is a smooth transition in display but not numerically) are apparent in the video.
\\
\\
The initial idea was to set up a freestanding screen that could be moved without using a track or other moving parts to track the screen’s orientation. Orientation changes for a larger screen might minimize the response time problems because the screen would move more slowly. We ultimately went with a different setup (a potentiometer controlled by rotation of a chair), although we are still working with the idea of tracking the viewer’s orientation to control the display.
\\
\\
April 17, 2007, at 01:14 AM by Daniel Soltis -
Changed line 1 from:
'''MicroMage3 3-axis Magnetometer'''
to:
'''MicroMag3 3-axis Magnetometer'''
Changed line 4 from:
'''General Description'''
to:
'''General Description'''\\
Changed line 8 from:
'''Cost and availability'''
to:
'''Cost and availability'''\\
Changed line 16 from:
'''Magnetic Fields'''
to:
'''Magnetic Fields'''\\
Changed line 38 from:
'''How It Works'''
to:
'''How It Works'''\\
Changed line 70 from:
'''Common Applications'''
to:
'''Common Applications'''\\
Changed line 75 from:
'''How to Use It'''
to:
'''How to Use It'''\\
Changed line 115 from:
'''Performance and Some Data Analysis'''
to:
'''Performance and Some Data Analysis'''\\
Added lines 157-158:
'''Some Graphs'''\\
<<GRAPH 1>>
Deleted lines 159-160:
'''Some Graphs'''
<<GRAPH 1>>
Changed lines 161-162 from:
\\
to:
April 17, 2007, at 01:13 AM by Daniel Soltis -
April 17, 2007, at 01:13 AM by Daniel Soltis -
Changed line 143 from:
The magnetometer provided calculated orientation readings from 0 to 2*pi, and the potentiometer provided measurements from 0 to 1023. I scaled the pot readings to a 0 to 2*pi range. The potentiometer needed to be scaled from 0-1023 to the same range as the magnetometer. The potentiometer only covered 7/8 of a complete revolution between 0 and 1023. So it scaled to approximately 0 to 1.75*Pi. In addition, the measurements correlated as 0 to 1023 for the pot, and 2*Pi to 0 for the magnetometer, so the direction needed to be reversed.
to:
The magnetometer provided calculated orientation readings from 0 to 2*pi, and the potentiometer provided measurements from 0 to 1023. I scaled the pot readings to a 0 to 2*pi range. The potentiometer needed to be scaled from 0-1023 to the same range as the magnetometer. The potentiometer only covered 7/8 of a complete revolution between 0 and 1023. So it scaled to approximately 0 to 1.75*Pi. In addition, the measurements correlated as 0 to 1023 for the pot, and 2*Pi to 0 for the magnetometer, so the direction needed to be reversed. The equation to scale the pot measurement was 1.75*Pi*(1-potValue).
Changed line 146 from:
The equation to scale the pot measurement was 1.75*Pi*(1-potValue).
to:
In addition, there was an offset--the 0 position on the potentiometer did not line up with the 0 position on the magnetometer. First I eyeballed the numbers to identify the magnetometer measurements that had passed 2*Pi and cycled back around to 0. I added 2*Pi to them. Then I calculated the average difference and subtracted that from the magnetometer measurements.
Changed line 149 from:
In addition, there was an offset--the 0 position on the potentiometer did not line up with the 0 position on the magnetometer. First I eyeballed the numbers to identify the magnetometer measurements that had passed 2*Pi and cycled back around to 0. I added 2*Pi to them. Then I calculated the average difference and subtracted that from the magnetometer measurements.
to:
<<PUT PICTURE HERE>>
Changed lines 158-159 from:
<<PUT PICTURE HERE>>
to:
'''Some Graphs'''
<<GRAPH 1
>>
Changed lines 161-162 from:
\\
to:
\\
April 17, 2007, at 01:10 AM by Daniel Soltis -
Changed lines 140-160 from:
Below are several graphs showing the relationships between the potentiometer and magnetometer results, with the readings scaled ad offset to be comparable. [[
to:
Below are several graphs showing the relationships between the potentiometer and magnetometer results, with the readings scaled and offset to be comparable. (Feel free to skip this section if you're not into math.)
\\
\\
The magnetometer provided calculated orientation readings from 0 to 2*pi, and the potentiometer provided measurements from 0 to 1023. I scaled the pot readings to a 0 to 2*pi range. The potentiometer needed to be scaled from 0-1023 to the same range as the magnetometer. The potentiometer only covered 7/8 of a complete revolution between 0 and 1023. So it scaled to approximately 0 to 1.75*Pi. In addition, the measurements correlated as 0 to 1023 for the pot, and 2*Pi to 0 for the magnetometer, so the direction needed to be reversed.
\\
\\
The equation to scale the pot measurement was 1.75*Pi*(1-potValue).
\\
\\
In addition, there was an offset--the 0 position on the potentiometer did not line up with the 0 position on the magnetometer. First I eyeballed the numbers to identify the magnetometer measurements that had passed 2*Pi and cycled back around to 0. I added 2*Pi to them. Then I calculated the average difference and subtracted that from the magnetometer measurements.
\\
\\
The magnetometer offset equations were:
* before the motor: offset magnetometer = magnetometer orientation - 1.024
* during the motor: offset magnetometer = magnetometer orientation - 0.656 (this involved some error, because the magnetometer changed in relation to the pot, as it was affected by the motor's magnetic field)
* after the motor: offset magnetometer = magnetometer orientation - 0.454
\\
\\
<<PUT PICTURE HERE>>
\\
\\
April 17, 2007, at 01:05 AM by Daniel Soltis -
Added lines 115-140:
'''Performance and Some Data Analysis'''
While working with the magnetometer, I found that it tended to respond somewhat slowly to changes in orientation. A known problem with magnetometers is hysteresis, in which the ferromagnetic material used to measure the magnetic field becomes magnetized in response to an external magnetic field. When the external field changes, the material’s now-inherent magnetism affects its response to change. The stronger the applied field, the stronger the hysteresis, and the slower the response.
\\
\\
Also, the magnetometer works for magnetic fields similar in strength to the earth’s magnetic field. The application of a magnetic field that is too much stronger can cause the instrument to stop working. When reading reviews of the magnetometer, one of the complaints I saw was that, in robotics applications, the magnetomer failed to give good readings when the motor to run the robot was turned on.
\\
\\
I decided to explore the magnetometer’s hysteresis and response to external fields in the following fashion. I physically attached the breadboard holding the magnetometer and its circuit to the dial of a potentiomenter (using hot glue). With the base of the potentiometer anchored, rotating the magnetometer causes the potentiometer to rotate, giving reliable potentiometer readings of angular position.
\\
\\
Here is the [[Code.MicroMagArdTest | Arduino code]], and here is the [[Code.MicroMagProcTest | Processing code]] I used to record the data. I recorded the time before and after a given set of measurements was taken, the magnetometer data for three axes (although I only considered two axes), and the potentiometer reading. In each instance, I tried to rotate the potentiometer both quickly and slowly, to get a sense of how the speed of rotation affected the magnetometer response. I saved collected data to a file, which I then copied into Excel for some graphing and analysis.
\\
\\
I saved data under three conditions:
# The magnetomer running under ‘standard’ operating conditions, which in this case meant at the computer lab, with a number of computers and other electronics nearby, but nothing specifically creating large magnetic fields.
# With a 9V DC battery running about a food away from the magnetometer.
# After the motor was run, again under standard operating conditions.
\\
\\
The speed of response was affected by the amount of time it took to send and receive the SPI commands, measure three axes, and communicate with the computer. It took 280-285 ms to complete one set of measurements (3 axes plus potentiometer), which would provide a bit fewer than 4 measurements per second. This is noticeably slow.
\\
\\
It was difficult to get data while running the motor, because the motor tended to cause the whole system to break. After about a minute, the readings started going horribly awry, and then the computer registered too much of a current draw through the USB cable to stopped transmitting and receiving information. So that’s a serious limitation!
\\
\\
Below are several graphs showing the relationships between the potentiometer and magnetometer results, with the readings scaled ad offset to be comparable. [[
April 17, 2007, at 01:02 AM by Daniel Soltis -
Changed lines 89-91 from:
Here <<LINK>> is the Arduino code for controlling the magnetometer, and here <<LINK>> is a simple Processing code for calculating orientation based on the X and Y axes. The code is set up to take a reading of the X axis, then the Y axis, then the Z axis, and repeat. In my applications, I only ended up using the X and Y axes, because 3-dimensional orientation requires additional correlation with accelerometer data. It is important to note that to get accurate orientation data from X and Y axes, the magnetometer should be as close to level as possible.
to:
\\
\\

Here is the [[Code.MicromMagArduino | Arduino code]] for controlling the magnetometer, and here is a simple [[Code.MicroMagProcessing | Processing code]] for calculating orientation based on the X and Y axes. The code is set up to take a reading of the X axis, then the Y axis, then the Z axis, and repeat. In my applications, I only ended up using the X and Y axes, because 3-dimensional orientation requires additional correlation with accelerometer data. It is important to note that to get accurate orientation data from X and Y axes, the magnetometer should be as close to level as possible.
\\
\\
Changed lines 95-98 from:
1. The protocol reuires sending one byte of command information to the magnetometer, and the magnetometer returns 2 bytes for the reading value. Each command byte can activate only one axis to be read.
2. The value that is returned is 2 bytes of data in <a href = http://en.wikipedia.org/wiki/Two's_complement>2’s complement </a>format. Because the returned value can be negative or positive, the first bit is used to designate the sign. The remaining 7 bits are sent, most significant bit first, to designate the value. Thus, the returned numbers can range from -32768 to 32767.
3. Every time a command is sent, it must be preceded by a reset pulse.
to:
# The protocol reuires sending one byte of command information to the magnetometer, and the magnetometer returns 2 bytes for the reading value. Each command byte can activate only one axis to be read.
# The value that is returned is 2 bytes of data in <a href = http://en.wikipedia.org/wiki/Two's_complement>2’s complement </a>format. Because the returned value can be negative or positive, the first bit is used to designate the sign. The remaining 7 bits are sent, most significant bit first, to designate the value. Thus, the returned numbers can range from -32768 to 32767.
# Every time a command is sent, voltage to a reset pin must be pulsed.
\\
\\
Changed lines 101-103 from:
An online student paper, <a href = http://courses.ece.uiuc.edu/ece445/projects/fall2005/project18_final_paper.doc>Autonomous Control of Model Aircraft fsor Photographic Reconnaissance, by Chris Hansen and Mark Inderhees,</a> (the link is to download a Word document) provided the following equations, which worked well:
to:
\\
\\

An online student paper, [[http://courses.ece.uiuc.edu/ece445/projects/fall2005/project18_final_paper.doc | Autonomous Control of Model Aircraft fsor Photographic Reconnaissance, by Chris Hansen and Mark Inderhees]], (the link is to download a Word document) provided the following equations, which worked well:
\\
\\
Changed lines 107-112 from:
&#8721; if x = 0 & y < 0, orientation = pi/2
&#8721; if x = 0 & y > 0, orientation = 3*pi/2
&#8721; if x < 0, orientation = pi - atan(y/x)
&#8721; if x > 0 & y < 0, orientation = -arctan(y/x)
&#8721; if x > 0 & y > 0, orientation = 2*PI - atan(y/ x)
to:
\\
*
if x = 0 & y < 0, orientation = pi/2
* if x = 0 & y > 0, orientation = 3*pi/2
* if x < 0, orientation = pi - atan(y/x)
* if x > 0 & y < 0, orientation = -arctan(y/x)
* if x > 0 & y > 0, orientation = 2*PI - atan(y/ x)
\\
\\
April 17, 2007, at 01:00 AM by Daniel Soltis -
Added lines 75-107:
'''How to Use It'''
The Micromag3 is desiged to work with SPI (synchronous peripheral interface), a system in which a master device (in this case an Arduino microprocessor) sends clock pulses to the slave device (the magnetometer) to synchronize the sending and receiving of data. Generally, the master device sends a command, waits until the slave completes its reading, and then reads the result, with the clock used to time when each bit gets sent.
\\
\\
Although the Arduino board contains some built-in hardware and a software library for handling SPI, the magnetometor’s SPI is quirky enough that it ended up being easier to write the code to explicitly handle the interface, rather than work with the existing library.
\\
\\
Wiring up the magnetometer is straightforward, as it is already arranged on a board with connectors spaced to fit on a breadboard. The datasheet explains the pin layout clearly:
\\
\\
ADD IMAGE HERE
\\
\\
Although the magnetometer is designed to run on 3.3V, it can handle 5V. I was mildly paranoid about burning it out, so I put a 200 ohm resistor between the power and the voltage input of the magnetometer, but I don’t think it made much difference.

Here <<LINK>> is the Arduino code for controlling the magnetometer, and here <<LINK>> is a simple Processing code for calculating orientation based on the X and Y axes. The code is set up to take a reading of the X axis, then the Y axis, then the Z axis, and repeat. In my applications, I only ended up using the X and Y axes, because 3-dimensional orientation requires additional correlation with accelerometer data. It is important to note that to get accurate orientation data from X and Y axes, the magnetometer should be as close to level as possible.

The comments in the code explain many of the important considerations and quirks of the magnetometer. In particular, there are three things that were notably different from other SPI protocols and/or required some outside research on my part:
1. The protocol reuires sending one byte of command information to the magnetometer, and the magnetometer returns 2 bytes for the reading value. Each command byte can activate only one axis to be read.
2. The value that is returned is 2 bytes of data in <a href = http://en.wikipedia.org/wiki/Two's_complement>2’s complement </a>format. Because the returned value can be negative or positive, the first bit is used to designate the sign. The remaining 7 bits are sent, most significant bit first, to designate the value. Thus, the returned numbers can range from -32768 to 32767.
3. Every time a command is sent, it must be preceded by a reset pulse.

Most references to calculating orientation from the X and Y axes simply state that the orientation is equal to the arctangent of y/x. Clearly, this leads to errors any time x=0.

An online student paper, <a href = http://courses.ece.uiuc.edu/ece445/projects/fall2005/project18_final_paper.doc>Autonomous Control of Model Aircraft fsor Photographic Reconnaissance, by Chris Hansen and Mark Inderhees,</a> (the link is to download a Word document) provided the following equations, which worked well:

For orientation in radians:

&#8721; if x = 0 & y < 0, orientation = pi/2
&#8721; if x = 0 & y > 0, orientation = 3*pi/2
&#8721; if x < 0, orientation = pi - atan(y/x)
&#8721; if x > 0 & y < 0, orientation = -arctan(y/x)
&#8721; if x > 0 & y > 0, orientation = 2*PI - atan(y/ x)
April 17, 2007, at 12:59 AM by Daniel Soltis -
Changed lines 38-74 from:
to:
'''How It Works'''
The Micromag3 measures magnetic field through magnetoinduction. A description of the circuit and how the sensor works can be downloaded from PNI [[ https://www.pnicorp.com/downloadResource/c1d/manuals/67/Ap%2BNote%2BDiscrete%2BCircuit%2Bfor%2BMagneto-Inductive%2BSensors.pdf+LR+relaxation+oscillator&hl=en&ct=clnk&cd=6&gl=us&client=firefox-a | here]], and [[http://archives.sensorsmag.com/articles/1298/mag1298/main.shtml | this 1998 article from Sensors magazine]] describes a variety of methods for sensing magnetic fields, including magnetoinductance. [[http://www.edn.com/archives/1996/031496/06df2.htm | This1996 article from EDN]] also compares several methods of measuring magnetic fields.
\\
\\
A magnetoiductive circuit consists of a coil around a ferromagnetic core that is incorporated into a circuit that forms a [[ http://en.wikipedia.org/wiki/Relaxation_oscillator | relaxation oscillator]]. Charge gradually builds up in the circuit, is rapidly discharged, and then starts to gradually build up again, and so on. The frequency of this oscillation varies with the strength of the magnetic field perpendicular to the coil. In the micromag3, the oscillation that is produced is a square wave, which can be easily read as a digital signal.
\\
\\
The Micromag3 calculates magnetic field strength by comparing two measurements from the same circuit. First one end of the circuit is grounded, and the other oscillates. Then the other end is grounded, and the first oscillates. Subtracting one result from the other provides temperature stabilization and (I think) the direction of the magnetic field.
\\
\\
Below is an example of a magnetoinductive circuit for one axis:
\\
\\
ADD AN IMAGE HERE
\\
\\
One pin is selected, and the output is an oscillating square wave. The period of 256 cycles of the square wave is measured. To measure on one axis, first pin 1 is selected, and the period measured, then pin 2 is selected and the period measured, and their difference is the final result. This result should be linearly proportional to the magnetic field strength.
\\
\\
Without calibration, this measurement gives a relative but not absolute measurement of magnetic field strength. The Micromag datasheet provides graphs relating output values from the sensor to magnetic field strength. This varies somewhat with changes in temperature, but the variation is small up to approximately 1000 Tesla, and very small below 500 Tesla.
\\
\\
For direction sensing, only relative field strengths between different axes are needed. By convention, the magnetometer is set up so that the positive end of the X axis points north, and the positive end of the Y axis points east.
\\
\\
The benefits of this method appear to be:
* a high resolution response to changes in magnetic field; the frequency can change by as much as 100% when moving from a parallel to perpendicular position in relation to a magnetic field.
* fairly stable measurement, without strong drift over time or sensitivity to temperature (the module specifically includes circuitry for reduction of noise and stabilization over changes in temperature).
* the ability to function at low voltages (3.3V or 5V), which makes the sensor easier to use in typical prototyping setups.
An output (a square voltage wave) that is inherently digital.
\\
\\
'''Common Applications'''
Specific applications of magnetometers depend on their strength and sensitivity.
Magnetometers that sense the Earths magnetic field can be used as digital compasses and as 3-dimensional orientation sensors, such as in aviation and robotics—this appears to be one of the primary intended purposes of the Micromag3. Magnetometers of this strength can also be used to detect the presence of large metal objects, which disrupt the Earth’s magnetic field in that location. They can be used to sense vehicles, and are also used in archaeology to non-destructively image features under the ground. Very sensitive magnetic sensors can be used in medical applications for measuring aspects of organ functioning.
\\
\\
April 17, 2007, at 12:53 AM by Daniel Soltis -
Added lines 1-38:
'''MicroMage3 3-axis Magnetometer'''
\\
\\
'''General Description'''
The Micromag3 is a 3-axis magnetometer that measures the strength of magnetic fields in 3 directions. In particular, it can measure magnetic fields that are approximately the same strength as the earth’s magnetic field. Thus, it has obvious applications for orientation sensing and for sensing local disruptions in the earth’s magnetic field. The datasheet summary can be found [[http://itp.nyu.edu/physcomp/sensors/Reports/ThreeAxisMag | here]].
\\
\\
'''Cost and availability'''
The Micromag3 is manufactured by [[ http://www.pnicorp.com || PNI Corporation]] and is available through their website for $50.
(<a href = http://www.pnicorp.com/productDetail?nodeId=cMM3> http://www.pnicorp.com/productDetail?nodeId=cMM3</a>) It is also available at [[http://www.sparkfun.com|| Sparkfun ]] for $55.
\\
\\
There is a similar 2-axis magnetometer available for $40-45 from PNI (depending on whether you buy the module only or buy the module on a carrier board) and for $50 from Sparkfun.
\\
\\
'''Magnetic Fields'''
I wouldn’t know where to start or stop in an overview of magnetism, so feel free to [[http://en.wikipedia.org/wiki/Magnetism | browse]] [[http://en.wikipedia.org/wiki/Earth%27s_magnetic_field | Wikipedia]] if you are interested in the basics.
\\
\\
For sensing purposes, several aspects of magnetism and magnetic fields are important.
\\
\\
For starters, magnetic fields are vector fields—that is, if you’re measuring a magnetic field at a given point, that field will have both a strength and a direction. The Micromag3 can measure the strength of the magnetic field that’s perpendicular to the orientation of a single sensing element. Thus, by measuring magnetic field strength on three perpendicular axes, it is possible to measure the strength and direction of the field in three-dimensional space.
\\
\\
There are probably four main situations in which you are likely to interact with magnetic fields. One, the earth has an inherent magnetic field. Measuring that field on two axes can provide north-south orientation, and measuring that field on 3 axes, in combination with some other sensors, can provide three-dimensional orientation.
\\
\\
Second, large metal objects (such as cars), can disturb the local strength and direction of the earth’s magnetic field. Measuring changes in magnetic fields in a location can be used to detect the presence of such objects.
\\
\\
Third, permanent magnets produce magnetic fields (usually much stronger than the earth’s magnetic field). Similarly to detecting the presence of vehicles, there may be some possibilities for using a magnetometer to track the position of a known magnet.
\\
\\
Fourth, all electric currents produce magnetic fields perpendicular to the direction of the current (and vice versa—a magnetic field can be used to induce a current, which is how the Micromag3 works). A circuit (such as a solenoid) can be designed to intentionally create a magnetic field, or the current in a circuit may produce noise that interferes with a magnetometer’s functioning.
\\
\\