Bosch Sensortec Community

    cancel
    Showing results for 
    Search instead for 
    Did you mean: 

    BMM150 sensor calibraion

    BMM150 sensor calibraion

    A_Zyma
    New Poster

    Hello!

    I'm implementing the magnetometer readings processing. For this purpose the custom sensor driver is used.
    Here is the code of the sensor raw data processing so as to get uT values:

    const float kMaxVal = 32768.0;
    const float kXYRange = 1300; // +-1300uT (x, y axes)
    const float kZRange = 2500; // +-2500uT (z axes)
    int16_t l_x, l_y, l_z;

    //This function takes raw X, Y and Z values from the sensor
    Magnetometer_getValues(&l_x, &l_y, &l_z);

    *x = (kXYRange/kMaxVal)*l_x;
    *y = (kXYRange/kMaxVal)*l_y;
    *z = (kZRange/kMaxVal)*l_z;

    The problem is that when sensor is moved, the overall magnetic flux value (B = sqrt(x^2+y^2+z^2)) fluctuates (Graph 1).
    There are no magnets around the BMM150. How this value can be trimmed? I've tried the compensation code from the
    original API, but with no success, as the Y value showed the result in hendreds of uT.

    What can be the reason of such results and where can I find the complete calibration process instructions?

    In addition, I've done some compensation by myself. Here is is:

    *x = ((kXYRange/kMaxVal)*l_x + 6.18) * 1.07;
    *y = ((kXYRange/kMaxVal)*l_y - 33.0) * 1.06;
    *z = ((kZRange/kMaxVal)*l_z + 9.38) * 1.51;

    After these modifications the graph of magnetic flux looks like in the pic. "Graph_2" (attached).

    1 REPLY 1

    FAE_CA1
    Community Moderator
    Community Moderator

    Hi,

    Thanks for your inquiry.

    In order to obtain magnetic field measurements in the unit of uT from BMM150 raw data signed integers, please refer to BMM150 API source code at https://github.com/BoschSensortec/BMM150-Sensor-API. Please also see the attached "bmm150-step-by-step-temperature-compensation-sample.pdf" for more information.

    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