NVE Corporation 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 NVE’s groundbreaking SM124 Smart Magnetometer over the Silicon Labs part are summarized below:

    Technology   Full-Scale
 Sensitivity 
Accuracy Noise Package
–40–125°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 SM124’s 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 don’t 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. That’s at least 12.5% total error (2.5 mT) for gain and offset alone over the full temperature range—more 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. That’s 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, you’re 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, here’s 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 isn’t 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, here’s the Si7210 calculation for the magnetic field:
 
  B = (256*Dspsigm[6:0]+Dspsigl[7:0]-16384)*(0.00125 or 0.0125)

Here’s 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. It’s 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>