shineblink MPU6050六轴传感器测量物体姿态角

一、姿态角(欧拉角)基本概念

物体在空间中的姿态可以用欧拉角来定义,欧拉角包含pitch(俯仰角)、yaw(偏航角)、roll(横滚角),如下图示意:
在这里插入图片描述
在这里插入图片描述

二、代码实现功能描述

Core采集MPU6050六轴传感器经过姿态解算后的欧拉角数据,并在电脑串口终端打印出pitch(俯仰角)、yaw(偏航角)、roll(横滚角)这三个角度的整数部分以方便用户实时观察传感器模块在空间中的姿态。

  • 当按键1短按后,开始俯仰横滚角校准就开始俯仰角和横滚角的校准。
  • 当按键2短按后,开始航偏角的校准。

三、接线图

在这里插入图片描述

五、完整代码

--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出
LIB_UsbConfig("CDC")
--设置按键1(占用D10口)以低电平有效的方式检测按键动作
LIB_ButtonConfig("BTN1","D10","L")
--设置按键2(占用D11口)以低电平有效的方式检测按键动作
LIB_ButtonConfig("BTN2","D11","L")
--设置MPU6050六轴传感器占用TX0和RX0引脚,并启动传感器以每秒输出100组欧拉角数据的频率工作
LIB_MPU6050Config("UART0")
--开始大循环
while(GC(1) == true)
do
    --查询是否收到欧拉角数据,如果收到就在OLED屏幕上输出显示
    recv_flag,pitch,yaw,roll = LIB_MPU6050GetEulerAngle()
    if recv_flag == 1 then
        --只打印角度的整数部分
        print(string.format("pitch:%.0f yaw:%.0f roll:%.0f\r\n", pitch,yaw,roll))
    end
    
    --如果按键1短按,就开始俯仰角和横滚角的校准,校准时请保持传感器静止状态至少5--校准后pitch角和roll角的度数会自动的逐渐归零
    btn1 = LIB_ButtonQuery("BTN1")
    if btn1 == 1 then
        LIB_MPU6050Cali("PITCH_ROLL")
    end
    
    --如果按键2短按,就开始航偏角校准
    --校准后yaw角的度数会自动归零
    btn2 = LIB_ButtonQuery("BTN2")
    if btn2 == 1 then
        LIB_MPU6050Cali("YAW")
    end
end 

六、代码运行结果

电脑串口调试终端上显示的传感器模块的姿态角(单位:度)内容如下图:
在这里插入图片描述

七、需要注意的地方

  1. MPU6050 GY25模块上电会自校准, 需保持 3 秒以上静止状态, 建议不要用手拿着。
  2. 模块本身不带磁力计, 偏航角长时间会有漂移。需要您在实际开发中考虑在适当的时候进行偏航角校准。
  3. 欧拉角由于万向锁问题, 横滚角, 俯仰角在 90 度时候会有相互影响。

更多详情请参看 shineblink.com官网链接

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值