micropython中的microbit指南针
microbit compass in micropython
我有一个 microbit 项目,其中 microbit 垂直插入 kiktronics 机器人。
我想获取机器人的航向,但是
compass.heading()
只有微位是水平的才有效。我尝试使用 get_x()、get_y()、get_z()
读取指南针的 x、y、z 坐标
但是我得到的数字范围在 z 轴和 x,y 轴上的比例不同。
有谁知道不同传感器的范围是多少?
我使用了下面的测试代码。如果我先 运行 compass_calibrate() 函数,即使磁力计垂直,我也可以获得准确的罗盘读数。
注释掉 compass_calibrate() 行后,当围绕 3 轴自由移动电路板时 space,我可以看到 z 值没有 x 和 y 变化那么大。所以我得到了一个小磁铁。在磁力计周围移动它会使 x、y、z 值似乎在大致相同的范围内变化——这是一个粗略的眼球实验。
查看 MAG3110 磁力计的数据 sheet,我看不到 3 个磁力计轴不同的任何迹象。那么,为什么没有外场时 z 读数会不同呢?我假设 PCB 中有一个地平面。这在 PCB 构造中很常见。这可以作为 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))
我有一个 microbit 项目,其中 microbit 垂直插入 kiktronics 机器人。
我想获取机器人的航向,但是
compass.heading()
只有微位是水平的才有效。我尝试使用 get_x()、get_y()、get_z()
读取指南针的 x、y、z 坐标但是我得到的数字范围在 z 轴和 x,y 轴上的比例不同。
有谁知道不同传感器的范围是多少?
我使用了下面的测试代码。如果我先 运行 compass_calibrate() 函数,即使磁力计垂直,我也可以获得准确的罗盘读数。
注释掉 compass_calibrate() 行后,当围绕 3 轴自由移动电路板时 space,我可以看到 z 值没有 x 和 y 变化那么大。所以我得到了一个小磁铁。在磁力计周围移动它会使 x、y、z 值似乎在大致相同的范围内变化——这是一个粗略的眼球实验。
查看 MAG3110 磁力计的数据 sheet,我看不到 3 个磁力计轴不同的任何迹象。那么,为什么没有外场时 z 读数会不同呢?我假设 PCB 中有一个地平面。这在 PCB 构造中很常见。这可以作为 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))