 |
COMPARISON BULLETIN |
NVE SM124 GMR Smart Magnetometer Beats Silicon Labs
on Ease of Use, Sensitivity, Accuracy, Noise, and Bandwidth
The NVE SM124 and Silicon Labs Si7210 are both linear magnetic sensors
with microcontroller interfaces. The advantages of NVEs groundbreaking SM124
Smart Magnetometer over the Silicon Labs part are summarized below:
|
Technology |
Full-Scale
Sensitivity |
Accuracy |
Noise |
Package |
40125°C |
%
of full-scale |
Field |
Silicon Labs
Si7210 |
Old-fashioned
Hall-effect |
20
mT |
>12.5% |
±2.5 mT |
30 µT rms |
2.9 x 2.8 mm
SOT-23 |
NVE
SM124 |
GMR |
1
mT |
10% |
±0.1 mT |
Negligible |
2.5 x 2.5 mm
leadless TDFN6 |
Convenient Magnetic Orientation
Unlike Silicon Labs awkward, old-fashioned Hall-effect sensor elements,
the SM124 uses GMR, which is sensitive in-plane for optimal current sensing and
easy mechanical interfaces.
Twenty Times More Sensitive
The SM124s high sensitivity 1 mT linear range) make it compatible with small,
low-cost magnets, and it can detect strong magnets more than 50 mm away. The most
sensitive Si7210 version is 20 mT, not because applications need high field, but
because of the low sensitivity and high noise of Hall effect elements. Silicon
Labs requires more expensive magnets and much smaller airgaps. They dont
provide magnet spacing data, so you need to figure that out yourself.
If you really do need a higher-field range, you can use our 15 mT SM225.
25x More Accurate
Most accuracy specifications are a percentage of full scale, so because of its
much higher sensitivity, the SM124 is more than 20 times more accurate in
the range of interest.
Even as a percentage of full scale, the SM124 is more accurate. The SM124 has
straightforward accuracy specifications: ±5% (0.05 mT) for 0 to 85°C, and ±10%
(0.1 mT) over the full 40 to 125°C range. That covers all error
sources, including sensitivity, offset, drift, and noise.
The Si7210 has a Gain accuracy of 5% from 0 to 70°C and 10% for
40 to 125°C; an offset error of ±0.5 mT (2.5% of full scale);
and 30 µT rms of magnetic noise. Thats at least 12.5% total error
(2.5 mT) for gain and offset alone over the full temperature rangemore
than our 10% and many times worse than our magnetic accuracy of 0.1 mT. Silicon
Labs touts 13 bit resolution, but what good are they if the last nine are
meaningless?
Less Noise
Hall effect sensors are inherently noisy, and the Si7210 specifies 30 µT
rms of magnetic noise. Thats a lot of noise. SM124 noise is negligible for
the magnetic fields of interest.
Faster
The Si7210 bandwidth is a vague up to 20 kHz, and one has to
sample at twice that, or 40 kSps if that bandwidth is available. That may
not be easy with the clunky Si7210 interface.
The SM124 interface is built for speed. With just one byte per sample with very
little overhead, a microcontroller can read the sensor quickly and still do everything
else it has to. Additionally, magnetic noise is negligible, so filtering, which
reduces the response time, is often unnecessary.
Programmable I²C Addresses
The SM124 can be programmed for any I²C address, and an available pin allows
the address to be changed without programming. To get a different Si7210 address
you have to order and inventory it. If you need anything other than their four
address options, youre out of luck.
Simple, Elegant, I²C Interface
SM124 data and coefficients are all just one byte. Data and coefficients are written
and read from memory, eliminating the need for explicit commands. All parameters
are human readable, so field data, thresholds, and hysteresis are in percentages
corresponding to Oersted, Gauss, or Tesla with no conversion needed. Temperature
is in degrees Celsius. Calibrations are applied automatically.
This elegant SM124 architecture dramatically simplifies firmware, streamlines
system development, and allows high-speed communication. For example, heres
everything to read an SM124 with an Arduino:
#include <Wire.h>
//I2C library
int field; //Magnetic field (0-100 corresponds to 0-10 Oe)
void setup() {
Wire.begin(); //Join I2C bus as Master (SM124 is a Slave)
}
void loop() {
Wire.requestFrom(36,1); //1 data byte from SM124 at I2C addr.
36; default to mag field
field = Wire.read(); //Read sensor (data always valid
so a While loop isnt needed)
}
The Si7210 has a complicated interface with commands, variable data lengths, and
waiting for valid data. Data and parameters are in arbitrary and inconsistent
units. For example, heres the Si7210 calculation for the magnetic field:
B = (256*Dspsigm[6:0]+Dspsigl[7:0]-16384)*(0.00125
or 0.0125)
Heres the messy Si7210 required switch hysteresis conversion:
hysteresis = (8 +
sw_hyst[2:0]) × 2sw_hyst[5:3]
If sw_op = 127, (latch mode) the hysteresis is multiplied by 2
When sw_hyst = 63, the hysteresis is set to zero.
And here are the steps to read Si7210 temperature (from the Si7210 datasheet):
Better Than SENT
Silicon Labs also offers a version with a SENT interface, the Si7213. Its
limited to just 1 kSps, and their SENT messages are complicated:
A calibration/synchronization period consisting of 56 clock
ticks
A status and serial communication 4-bit nibble
A sequence of up to six data nibbles
A one nibble checksum
Each nibble is 12 to 27 clock ticks
An optional delay pause pulse
You need to account for variable data length, concatenating nibbles, and calculating
checksums. Because SENT is asynchronous it is susceptible to garbled data, and
the microcontroller has to be continuously calibrated to the sensor speed.
<Questions or Comments>
|