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
libmetawear.mbl_mw_mag_bmm150_set_preset(self.board, MagBmm150Preset.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.
def data_handler(self, ctx, data):
print("%s -> %s" % (self.device.address, parse_value(data)))
sensor_data_handler = FnVoid_VoidP_DataP(data_handler)
libmetawear.mbl_mw_mag_bmm150_set_preset(self.board, MagBmm150Preset.LOW_POWER)
signal = libmetawear.mbl_mw_mag_bmm150_get_b_field_data_signal(board)
libmetawear.mbl_mw_datasignal_subscribe(signal, None, sensor_data_handler)
libmetawear.mbl_mw_mag_bmm150_enable_b_field_sampling(board)
libmetawear.mbl_mw_mag_bmm150_start(board)