Я использовал тестовый код ниже. Я могу получить точное показание компаса, если сначала запустил функцию compass_calibrate (), даже если магнитометр находится в вертикальном положении.
После комментирования строки compass_calibrate () при перемещении доски вокруг 3-х осей в свободном пространстве я вижу, что значение z не так сильно меняется, как x и y. Итак, я получил маленький магнит. Перемещение по магнитометру приводит к тому, что значения x, y, z изменяются примерно в тех же пределах - это грубый эксперимент с глазным яблоком.
Глядя на таблицу данных для магнитометра MAG3110, я не вижу никаких признаков того, что ось 3 магнитометра отличается. Так почему же z-показания отличаются без внешнего поля? Я предполагаю, что в плате есть заземление. Это часто встречается в конструкции печатных плат. Это может быть щитом для оси z.
from microbit import *
# compass.calibrate()
while True:
sleep(250)
# c = compass.heading()
x = compass.get_x()
y = compass.get_y()
z = compass.get_z()
print('x:{} y:{} z: {}'.format(x,y,z))