Шестиосевой датчик MPU6050 измеряет угол наклона объекта

Интернет вещей

Шестиосевой датчик MPU6050 измеряет угол наклона объекта

1. Основное понятие угла наклона (угол Эйлера)

Положение объекта в пространстве можно определить с помощью углов Эйлера, которые включают тангаж (угол тангажа), рыскание (угол рыскания) и крен (угол крена), как показано на следующем рисунке:在这里插入图片描述 在这里插入图片描述

2. Функциональное описание реализации кода

Core собирает данные об угле Эйлера шестиосевого датчика MPU6050 после расчета ориентации и печатает целую часть тангажа (угол тангажа), рыскания (угол рыскания) и крена (угол крена) на терминале последовательного порта компьютера. чтобы облегчить пользователям наблюдение за положением сенсорного модуля в пространстве в режиме реального времени.

  • При кратковременном нажатии кнопки 1 начинается калибровка угла тангажа и крена.
  • При кратковременном нажатии кнопки 2 запускается калибровка угла рыскания.

3. Схема подключения

在这里插入图片描述

5. Полный код

--配置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 

6. Результаты выполнения кода

Угол наклона (единица измерения: градус) сенсорного модуля, отображаемый на терминале отладки последовательного порта компьютера, выглядит следующим образом:在这里插入图片描述

7. На что обратить внимание

  1. Модуль MPU6050 GY25 автоматически калибруется при включении питания.Он должен находиться в статическом состоянии более 3 секунд.Не рекомендуется держать его руками.
  2. Сам модуль не имеет магнитометра, и угол рыскания будет дрейфовать долго. Вы должны учитывать калибровку угла рыскания, когда это уместно в реальной разработке.
  3. Из-за проблемы блокировки подвеса угол Эйлера, угол крена и угол тангажа будут влиять друг на друга на 90 градусов.

Для получения более подробной информации посетите сайт Shineblink.comСсылка на официальный сайт