我有一个 microbit 项目,其中 microbit 垂直插入到 kiktronics 机器人中。
我想获得机器人的航向,但是
compass.heading()
仅当微位是水平的时才有效。我尝试使用 get_x()、get_y()、get_z() 读取指南针的 x、y、z 坐标
但是我得到的数字范围对于 z 轴和 x,y 轴的缩放比例不同。
有谁知道不同传感器的范围是多少?
我有一个 microbit 项目,其中 microbit 垂直插入到 kiktronics 机器人中。
我想获得机器人的航向,但是
compass.heading()
仅当微位是水平的时才有效。我尝试使用 get_x()、get_y()、get_z() 读取指南针的 x、y、z 坐标
但是我得到的数字范围对于 z 轴和 x,y 轴的缩放比例不同。
有谁知道不同传感器的范围是多少?
我使用了下面的测试代码。如果我首先运行 compass_calibrate() 函数,即使磁力计垂直,我也可以获得准确的罗盘读数。
在注释掉 compass_calibrate() 行之后,当在自由空间中围绕 3 轴移动板时,我可以看到 z 值的变化不像 x 和 y 那样大。所以我得到了一个小磁铁。在磁力计周围移动它会使 x、y、z 值看起来在大致相同的范围内变化——这是一个粗略的眼球实验。
查看 MAG3110 磁力计的数据表,我看不到任何迹象表明 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))