嵌入式课程 之 陀螺仪传感器实验

版权归如下公司,禁止非授权转载:

  • 北京西普阳光教育科技股份有限公司(https://www.simpleware.com.cn)
  • 维周机器人科技有限公司(http://www.vejoe.com)


【实验目的】

熟悉陀螺仪工作原理,了解不同种类陀螺仪之间的差异;
熟悉MPU6050的输出形式,熟悉MPU6050的通信方法;
掌握STM32F10xx系列微控制器上陀螺仪的接口配置与数据采集过程;

【实验原理】

一、陀螺仪简介

陀螺仪(gyroscope)是角运动检测装置,传统陀螺仪是通过检测高速回转体的动量矩敏感壳体相对惯性空间绕正交于自转轴的一个或两个轴的角运动的装置。通俗的来讲,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向。然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。利用其他原理制成的角运动检测装置起同样功能的也称陀螺仪。

传统陀螺仪为机械式陀螺仪,然而机械式陀螺仪制造工艺要求高,而且精度低,体积大。于是,人们开始寻找更好的办法,利用物理学上的进步,发展出激光陀螺仪,光纤陀螺仪,以及微机电陀螺仪(MEMS)。这些东西虽然还叫陀螺仪,但是它们的原理和传统的机械陀螺仪已经完全是两码事了。目前,传统上的机械陀螺仪正在被淘汰,有高精度需求的地方用的是激光陀螺仪,而普及方面则是微机电陀螺仪。

二、MPU6050简介

本实验采用的是MPU6050运动传感器,它是一款整合性6轴运动传感器,集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可拓展的数字运动处理器DMP(Digital Motion Processor)。MPU6050传输可透过最高至400kHz的IIC通信,也可以通过其I2C接口连接其他非惯性的数字传感器。IIC通信协议要求每一个挂载在总线上的设备都要有一个独有的7位设备地址,用以区分信号传递的对象。MPU6050的设备地址前六位在出场时已经由厂商决定为(110100B),而MPU6050提供一个AD0引脚用以确定第7位电平,若AD0接地,则其设备地址为0x68H(1101000B),再加上第8位读写方向位,构成了IIC传输的器件地址0xD0(11010000B)。

硬件连接图和库函数介绍
在这里插入图片描述
图1.1 硬件连接示意图
在本实验中所使用的库函数包括IICwriteBits函数,该函数的参数含义如下:

  1. dev,设备地址,这里为MPU6050设备地址(在mpu6050.h中给出宏定义);
  2. reg,目标寄存器地址,这里指PWR电池管理寄存器地址0x6B;
  3. bitStart,寄存器上功能标志位起始地址,由于配置时钟源的标志位为寄存器上的[2:0]位,因此这里的值为2;
  4. length,功能标志位长度,由于配置时钟源的标志位为寄存器上的[2:0]位,长度为3,因此这里的值为3;
  5. data,将要在寄存器标志位储存的值,这里由函数入口的时钟源参数给出。

I2C_ReadOneByte函数,该函数的参数含义如下:

  1. I2C_Addr ,目标设备地址,这里为MPU6050设备地址(在mpu6050.h中给出宏定义);
  2. addr,寄存器地址
    四、软件流程图
    由于MPU6050通过IIC通信,因此可以通过IIC访问各个数据寄存器对应的地址,就能得到相应的陀螺仪加速度计信息。各个功能寄存器的寄存器地址已经在mpu6050.h中给出,程序中已经预给出的库函数还有:oled.c显示屏库函数、delay.c延时库函数、IOI2C模拟IIC库函数等,程序流程的简要说明图如图1.2所示:

图1.2 程序流程示意图

【实验环境】

硬件设备:

双轮自平衡机器人。如图1.3所示,在平衡车上电路板上已经集成了MPU6050模块。
ST-Link下载器(包含USB线与下载线)。如图1.4所示。
操作系统:
Windows7/8/10,32bit/64bit

在这里插入图片描述
图1.3 双轮自平衡机器人
在这里插入图片描述
图1.4 ST-Link下载器与下载线

软件环境:

Keil 5

【实验步骤】

第一步 配置工程环境

打开已经建立好的工程模板,在新建立的工程模板中已经添加五个文件夹,分别命名为USER、HARDWARE、SYSTEM、CORE、FWLib文件夹,如图1.5所示。其中USER文件夹存放的是主函数,HARDWARE文件夹存放的是本实验对应的硬件设备函数,SYSTEM存放的是本课程所有实验通用的函数,CORE文件夹存放的是启动文件,FWLib文件夹存放的是底层驱动函数。
在这里插入图片描述
图1.5 工程模板对应的文件夹
在HARDWARE文件夹下新建一个文件,命名为mpu6050.c,并加载已经编写好的在工程目录下HARDWARE文件夹里的MPU6050文件夹内的MPU6050.h文件,该文件存放MPU6050寄存器地址已经相应数据位的宏定义。mpu6050.c则存放MPU6050的配置文件,如图1.6所示。
在这里插入图片描述
图1.6 在HARDWARE文件夹下建立mpu6050.c与mpu6050.h文件

第二步 陀螺仪寄存器读取函数和初始化函数

打开程序中的mpu6050.c文件,首先将mpu6050.h和IOI2C.h文件包含进来。其次编写MPU6050的时钟源配置函数MPU6050_setClockSource。

#include "MPU6050.h"
#include "IOI2C.h"

/****************************************************************
函数功能:设置MPU6050的时钟源
入口参数:时钟源参数
返回值:无
****************************************************************/
void MPU6050_setClockSource(uint8_t source)
{
   
IICwriteBits(devAddr, MPU6050_RA_PWR_MGMT_1, 	MPU6050_PWR1_CLKSEL_BIT, MPU6050_PWR1_CLKSEL_LENGTH, source);
}

同理&

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放羊郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值