赞
踩
MPU-60X0是全球首例9轴运动处理传感器。集成了三轴加速度,三轴角速度,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor:数字运动处理器),能够通过I2C协议进行获取数据,并返回到电脑或者显示在OLED屏幕上,直观地表现出来。
MPU6050将使用I2C协议进行通讯,获取角速度、加速度以及温度数据,使用串口显示在电脑上。
1、硬件原理图以及实物图
图一:硬件原理图
图二:实物图MCU6050
2、如何连接及使用
这里的XDA 和 XCL 作为次I2C接口,可以接磁力计等器件。这里我们未使用。
3、驱动文件
陀螺仪数据输出寄存器(共6个寄存器,地址为0x43-0x48)
加速度传感器数据输出寄存器(6个,地址为0x3B-0x40)
温度传感器数据输出寄存器(0x41-0x42)
温度换算公式为 :Tem = 36.53 + regval /340
- import machine
-
- class accel():
- def __init__(self, i2c, addr=0x68):
- self.iic = i2c
- self.addr = addr
- self.iic.start()
- self.iic.writeto(self.addr, bytearray([107, 0]))
- self.iic.stop()
-
- def get_raw_values(self):
- self.iic.start()
- a = self.iic.readfrom_mem(self.addr, 0x3B, 14)
- self.iic.stop()
- return a
-
- def get_ints(self):
- b = self.get_raw_values()
- c = []
- for i in b:
- c.append(i)
- return c
-
- def bytes_toint(self, firstbyte, secondbyte):
- if not firstbyte & 0x80:
- return firstbyte << 8 | secondbyte
- return - (((firstbyte ^ 255) << 8) | (secondbyte ^ 255) + 1)
-
- def get_values(self):
- raw_ints = self.get_raw_values()
- vals = {}
- vals["AcX"] = self.bytes_toint(raw_ints[0], raw_ints[1])
- vals["AcY"] = self.bytes_toint(raw_ints[2], raw_ints[3])
- vals["AcZ"] = self.bytes_toint(raw_ints[4], raw_ints[5])
- vals["Tmp"] = self.bytes_toint(raw_ints[6], raw_ints[7]) / 340.00 + 36.53
- vals["GyX"] = self.bytes_toint(raw_ints[8], raw_ints[9])
- vals["GyY"] = self.bytes_toint(raw_ints[10], raw_ints[11])
- vals["GyZ"] = self.bytes_toint(raw_ints[12], raw_ints[13])
- return vals # returned in range of Int16
- # -32768 to 32767
-
- def val_test(self): # ONLY FOR TESTING! Also, fast reading sometimes crashes IIC
- from time import sleep
- while 1:
- print(self.get_values())
- sleep(0.05)
关于程序的一些解释说明:
主程序:
- import mpu6050
- from machine import SoftI2C,Pin
- import utime
-
- i2c = SoftI2C(scl=Pin(7), sda=Pin(6))
- accel = mpu6050.accel(i2c)
- while True:
- accel_dict = accel.get_values()
- print(accel_dict)
- utime.sleep(3)
今天只是简单地实现功能,下一篇文章将详细地讲解参数以及如何设置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。