当前位置:   article > 正文

Micropython——九轴传感器(MPU6050)的使用及算法(三)_mpu6050数据手册

mpu6050数据手册

简介:

上篇文章中,关于九轴传感器(MPU6050),学习其如何对其生成的数据偏移进行校准,这节课我们来将其中的一个问题来进行解决。关于MPU6050地址问题,我们如何学习并判断是否是MPU6050


1、看其MPU6050的数据手册,发现下面这段文字

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzM5NjAzMjQ3,size_16,color_FFFFFF,t_70#pic_center

能够发现参数WHO_AM_I 是包含了MPU6050的6为I2C地址的,而其I2C地址是储存在0x75寄存器中。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_20,color_FFFFFF,t_70,g_se,x_16

图一:MPU6050实物图

 

对于MPU6050来说,I2C地址是判断AD0是悬空还是接VCC。接VCC时,地址是0X69,悬空或者接地时,地址是0X68。


代码程序:

  1. # @Time : 2022.4.20
  2. # @Author : Xa_L
  3. # @FileName: I2C_MPU6050.py
  4. from machine import I2C,Pin
  5. #初始化I2C通道1 ,使用GPIO6和GPIO7 分别作为SDA 和SCL 引脚,频率为10KHZ
  6. i2c = I2C(id = 1 ,scl = Pin(7) ,sda = Pin(6), freq = 1000000)
  7. #扫描I2C总线下所有设备地址,并返回对应的列表
  8. addr_list = i2c.scan()
  9. print(addr_list)
  10. print(addr_list[0])
  11. if len(addr_list) == 1:
  12. #尝试读取该设备的0x75寄存器
  13. who = i2c.readfrom_mem(addr_list[0],0x75,1)
  14. print(who[0])
  15. #如果读取数值为0x68
  16. if who[0] == 0x68:
  17. print("Just a MPU6050 connected")
  18. else:
  19. print("Have a device connected but it is not MPU6050")
  20. elif len(addr_list) == 0:
  21. print("Nothing connected")
  22. else:
  23. print("More than one device is conneted ")

运行结果:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_20,color_FFFFFF,t_70,g_se,x_16

 这里我只写了连接的地址为0x68,读者可以自行重写程序看是否为其他设备。

也许有的读者会问为什么是104,不是0x68,其实这是因为十进制和十六进制的关系,所以这里对于进制不做讲解,可以去其他地方仔细进行了解。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_20,color_FFFFFF,t_70,g_se,x_16

技术交流
欢迎转载、收藏、有所收获点赞支持一下!

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/795451
推荐阅读
相关标签
  

闽ICP备14008679号