代码之家  ›  专栏  ›  技术社区  ›  mksteve

micropython中的microbit指南针

  •  3
  • mksteve  · 技术社区  · 6 年前

    我有一个microbit项目,microbit垂直插入到kiktronics机器人中。

    我想知道机器人的航向,但是

    compass.heading()
    

    只有当微卫星水平时才有效。我试过用get_x()、get_y()、get_z()读取指南针的x、y、z坐标

    但是我得到的数字范围在z轴和x,y轴上的比例是不同的。

    有人知道不同传感器的范围吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Oppy    6 年前

    我使用了下面的测试代码。如果我先运行compass_calibrate()函数,即使磁强计是垂直的,也可以得到精确的罗盘读数。

    在注释了CopasySimultAudio()线之后,当在自由空间中移动板3轴时,我可以看到Z值没有像X和Y那样变化。因此,我得到了一个小磁铁。在磁强计周围移动它会使x,y,z值在大致相同的范围内变化——这是一个粗略的眼球实验。

    看一下MAG31 10磁力仪的数据表,我看不到有任何迹象表明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))
    
    推荐文章