Magnetometer¶
A magnetometer is a device for detecting and measuring magnetic fields (in Teslas). The device can be used in conjunction with a 3-axis accelerometer to produce orientation independent accurate compass heading information.
MetaWear CPro, MMC, and MMR boards have a BMM150 geomagnetic sensor for sensing magnetic fields.
Functions communicating with the magnetometer are defined in the magnetometer_bmm150.h.
Power Modes¶
The BMM150 magnetometer has 4 recommended power modes:
Setting |
ODR |
Average Current |
Noise |
---|---|---|---|
LOW_POWER |
10Hz |
170µA |
1.0µT (xy axis), 1.4µT (z axis) |
REGULAR |
10Hz |
0.5mA |
0.6µT |
ENHANCED_REGULAR |
10Hz |
0.8mA |
0.5µT |
HIGH_ACCURACY |
20Hz |
4.9mA |
0.3µT |
Constants identifying these power modes are defined by the
MblMwMagBmm150Preset enum.
For most use cases, MWL_MW_MAG_BMM_150_PP_LOW_POWER
is the recommended power mode.
// Use low power mode
MetaWear.mbl_mw_mag_bmm150_set_power_preset(device.board, MWL_MW_MAG_BMM_150_PP_LOW_POWER);
B Field Sampling¶
B field sampling measures the magnetic field strength for the XYZ directions. To enable B field sampling, call mbl_mw_mag_bmm150_enable_b_field_sampling before starting the magnetometer.
Field strength is represented by the
MblMwCartesianFloat struct and is in units of micro Teslas (µT). The
x
, y
, and z
fields contain the B field strength in that direction.
console.log('Get mag signal.')
let mag = MetaWear.mbl_mw_mag_bmm150_get_b_field_data_signal(device.board);
console.log('Set up stream.')
MetaWear.mbl_mw_datasignal_subscribe(mag, ref.NULL, MetaWear.FnVoid_VoidP_DataP.toPointer((ctx, pointer) => {
var data = pointer.deref();
var value = data.parseValue();
console.log('epoch: ' + data.epoch + ' mag: ' + value.x + ' ' + value.y + ' ' + value.z)
}))
console.log('Start accelerometer.')
MetaWear.mbl_mw_mag_bmm150_enable_b_field_sampling(device.board);
MetaWear.mbl_mw_mag_bmm150_start(device.board);