目录

1.什么是MPU6050?

MPU6050介绍:

MPU6050寄存器介绍:

2.例程

1.平台

2.目的

3.讲解

1.查阅原理图

 2.流程分析

3.代码讲解

3.结果


1.什么是MPU6050?

MPU6050介绍:

在介绍MPU6050之前,我们先介绍下MPU60X0,MPU60X0是全球首例9 轴运动处理传感器。它集成了3 轴MEMS 陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。

在其扩展之后就可以通过其I2C 或SPI 接口输出一个9 轴的信号,但这里我们要注意的是SPI 接口仅在MPU-6000 可用。同时呢,MPU-60X0 也可以通过其I2C 接口连接非惯性的数字传感器,比如压力传感器。
MPU-60X0 对陀螺仪和加速度计分别用了三个16 位的ADC(0~65535),将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的,陀螺仪可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。

对于我们这次采用的主体呢,MPU6050 是一款高性能的 6 轴三轴加速度+三轴陀螺仪)传感器模块,用于测试物体的运动姿态。

我们再简单看一下MPU6050的框图:

Micro Python———MPU6050六轴传感器_寄存器

编辑

 针对上述框图,我这里主要介绍一下SCL,SDA引脚,这两个引脚用于连接IIC接口(下边我们也会用到IIC知识,不理解的小伙伴们可以先去看一下。)。同时MPU6050又提供了另外的一个 IIC 接口:AUX_CL和AUX_DA两个引脚,通过这两个引脚我们可以添加外设,构成9轴传感器(本篇不涉及)。此外,再介绍一个引脚AD0,AD0是从IIC 接口(接 MCU)的地址控制引脚,该引脚控制的是IIC 地址的最低位。如果接 GND ,则 MPU6050的IIC地址是:0X68,如果接VDD,则是0X69。需要注意的是:这里的地址0x68和0x69是不包含用于数据传输的最低位的,因此并不是八位数据,如0x68表示的是110 1000,0x69表示的则是110 1001,通常最低位用于表示IIC主机的读取数据/写数据模式。

MPU6050寄存器介绍:

其实,我们这里是基于MicroPython进行程序的设计,是不需要去了解寄存器这些底层知识的,所以这里我仅做一个补充,介绍一些重要的寄存器,有需要的话可以自行去查看MPU6050的技术手册。

(英语好的还是建议去阅读英文版!!!)

1.采样分频寄存器Sample Rate Divider:该寄存器指定陀螺仪输出速率的分频器,用于为MPU-60X0生成采样速率。

2.配置寄存器 Configuration:该寄存器为陀螺仪和加速度计配置外部帧同步(FSYNC) 管脚的采样和数字低通滤波(DLPF)设置。

3.陀螺仪配置寄存器 Gyroscope Configuration:该寄存器是用来触发陀螺仪自检和配置陀螺仪的满量程范围。

4.加速度计配置Accelerometer Configuration:该寄存器是用来触发加速度计自检和配置加速度计的满量程范围。

5.加速度计测量值寄存器 Accelerometer Measurements:该寄存器存储最近加速度计的测量值。加速度计根据采样频率(由采样分频寄存器寄存器设定 )写入到这些寄存器。

6.陀螺仪测量值寄存器 Gyroscope Measurements:该寄存器存储最近加陀螺仪的测量值。大致构成与加速度计测量值寄存器相同,此处便不做叙述。

2.例程

1.平台

这里,我采用了麦哲伦 MicroPython 开发板。

2.目的

通过编程实现 MPU6050 六轴传感器数据获取,并显示在 LCD 上。

3.讲解

1.查阅原理图

这里通过查阅原理图,知道板载的MPU6050是通过IIC连接到主板上,以及IIC连接端口(H5,H4)

Micro Python———MPU6050六轴传感器_加速度计_02

编辑

Micro Python———MPU6050六轴传感器_陀螺仪_03

编辑

 2.流程分析

导入MPU6050,LCD显示模块,初始化,获取MPU6050数据,LCD数据显示 

3.代码讲解

#MPU6050传感器

#导入模块
import mpu6050,time,tftlcd
from machine import SoftI2C,Pin

#初始化颜色
WHITE=(255,255,255)
BLACK=(0,0,0)

#LCD显示屏初始化
#构建对象
d=tftlcd.LCD43R(portrait=4)
#填充白色
d.fill(WHITE)

#I2C构建
i=SoftI2C(sda=Pin("H5"),scl=Pin("H4"))

#MPU6050构建
m=mpu6050.accel(i)

d.printStr('CKFDR MPU6050', 40, 10, BLACK, size=4)

#主程序
while True:
    #获取传感器数据,返回的值value为元组格式
    value=m.get_values()
    
    #显示数据
    #x轴加速度
    d.printStr('Ac-X:'+str(value["AcX"]), 10, 100, BLACK, size=4)
    #y轴加速度
    d.printStr('Ac-Y:'+str(value["AcY"]), 10, 150, BLACK, size=4)
    #z轴加速度
    d.printStr('Ac-Z:'+str(value["AcZ"]), 10, 200, BLACK, size=4)
    
    #陀螺仪数据
    d.printStr('Gy-X:'+str(value["GyX"]), 10, 300, BLACK, size=4)
    d.printStr('Gy-Y:'+str(value["GyY"]), 10, 350, BLACK, size=4)
    d.printStr('Gy-Z:'+str(value["GyZ"]), 10, 400, BLACK, size=4)
    
    #延时1s读取数据
    time.sleep(1)

3.结果

Micro Python———MPU6050六轴传感器_寄存器_04

编辑

 通过上述的讲解,我们已经成功的实现了MPU6050的LCD显示!

大家应该也感受到了运用python语言的方便与快速!

(上边的一些代码,如果是第一次接触MicroPython的话可能会不太理解,多去阅读一下文档就可以了!)