Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 
    SOLVED

    BMM150 range

    BMM150 range

    CPCamus
    New Poster

    Hi everyone, 

    I am currently using the bmm150 (directly from the BMX160) to measure the magnetic field of a very small NdFeB magnet (250 micron size).

    I use the Bosh API to set correctly every parameter (bmx160.c), and therefore use the compensated values for x, y and z, which are returned in int16.

    While reading those values, I correctly find that when it overflows, the value is at 32768 for all three axis.

    However, I don't understand the range of the magnetometer. Indeed, if I use the fact that LSB = 1/16 uT (as it is said here), and because the x and y axis are coded on 13 bits, then I should have a range of +/- 255.9375 uT (From -4905 to +4095, as -4096 is used to define a saturated state). When I measure the earth's magnetic field, convert binary into uT (by dividing by 16), calibrate the data against Soft Iron and Hard Iron effects, the value I obtain is 10 times lower than the actual earth's magnetic field. 

    Am I missing something obvious?

    The other possible approach is the following: as the Datasheet gives +/-1300 uT range for x and y axis, and as the saturated value of x and y axis is -4096, does it mean that 4095 is associated to +1300uT, and -4095 to -1300 uT?  That means that LSB = 0.32 uT, not 1/16 uT... 
    Following the same thought, for the z axis, the binary value for +2500 uT is 16383 and -2500uT is -16383?

    So basically, my question is: how to get from binary to uT value? 

    Thank you for your answer,

    Corentin

    1 REPLY 1

    FAE_CA1
    Community Moderator
    Community Moderator

    Hi,

    Thanks for your inquiry.

    In order to get BMM150 x/y/z values in the unit of uT, you need to use the formula and temperature compensation parameters in the NVM of each BMM150 chip to work together with the signed integers from BMM150 x/y/z/Hall resistance data registers. Please see the attached "bmm150-step-by-step-temperature-compensation-sample.pdf" for more information. This formula is also included in the BMM150 API source code on the Github at https://github.com/BoschSensortec/BMM150-Sensor-API.

    Thanks.

    Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist