Which sensor to use for Measuring Magnetic fields as high as 0.1 or 0.05 Tesla?

Hi. I am new to arduino. Can someone please help me out by telling me which sensor can I go with if I want to measure magnetic fields coming from a large permanent magnet (neodymium)?

I am assuming that the permanent (neodymium) magnet might be creating magnetic fields as high as 0.1 T or 0.05 T.

Please help. Thank you.

Help would be a lot easier if you told us the possible sensors you have looked at and have selected some that meet you requirements. Then someone could advice on interfacing to an Arduino.

Hey. Sorry, my bad. I have gone through the following commonly available magnetometers:-

  1. BMM150 magnetometer
  2. MPU9250
  3. MLX 90393

None of them have range of magnetic field close to what I want. (that is 0.1T or 0.05 T)

Study the answers here for what others have done.

Did you mean "popular"? Just about all the current MEMS magnetometers are available from sellers like Digikey, Mouser, etc.

You need to study the manufacturer data sheets to pick the appropriate one for your application, and for such high fields, you probably won't find one mounted on a convenient PCB, so plan on having a PCB made according to the data sheet recommendations.

Or consider a finished product like this one.

Hi, @alankrit_gupta
Is this thread related to this thread?
https://forum.arduino.cc/t/how-to-measure-magnetic-field-from-bmm150-sensor/1180402

Tom... :grinning: :+1: :coffee: :australia:

Hi. I am so sorry if my question sounds very basic. I am new to arduino and sensors.

For my major project, I wanted to measure magnetic field from a magnetic source. Since BMM150 specs says that it can measure upto 2500 microtesla in the z-direction, I purchased it. I have also downloaded the required libraries. However, the only example codes available on the internet tell how to measure the x,y and z heading. Can you guys help me out and provide me with a code to measure magnetic field in microtesla (z-direction) from the BMM150 sensor? (I am arduino Mega).

I tried using this code but don't think it is correct:

/**
This example
*/

#include <Arduino.h>
#include <Wire.h>
// libraries
#include "bmm150.h"
#include "bmm150_defs.h"

BMM150 bmm = BMM150();

void setup() {
Serial.begin(9600);

if (bmm.initialize() == BMM150_E_ID_NOT_CONFORM) {
    Serial.println("Chip ID can not read!");
    while (1);
} else {
    Serial.println("Initialize done!");
}

}

void loop() {
bmm150_mag_data value;
bmm.read_mag_data();

value.z = bmm.raw_mag_data.raw_dataz;


Serial.println(value.z);

delay(100);

}

Please edit your post to add code tags, (< code> editor button), so it all looks like this

value.z = bmm.raw_mag_data.raw_dataz;
Serial.println(value.z);

Do the above for all three axes, and study the sensor data sheet to get the sensitivity value, which is a dividing scale factor that converts the raw data to standard units.

The total field strength is the "norm" of the three values:

float x = value.x; //etc. for y and z
float total = sqrt(x*x + y*y + z*z); //vector norm, divide by sensitivity

Please do not cross post.

Threads merged.

Look for Hall effect devices with analogue outputs

Hey. I went through the data sheet, but I am not able to find the sensitivity value. Is there any way you can search it and provide it to me? (Like I said, I am very new to arduino and so don't really know how to read data sheets).

The sensitivity might also be called a scale factor. Finding it will be good practice in reading data sheets, an essential skill.

Hi, @alankrit_gupta
From the link in post #5.

Tom... :grinning: :+1: :coffee: :australia:
PS. If you use a hall effect or other uncalibrated sensor, do you have the equipment or access to equipment to calibrate your project?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.