打印

【我的DIY设计】MEMS陀螺仪

[复制链接]
8731|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qixiyi|  楼主 | 2013-1-20 21:54 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qixiyi 于 2013-1-21 11:40 编辑

MEMS陀螺仪

       基于MEMS(MEMS是微机电系统“Micro-Electro-Mechanical Systems”的英文缩写)的陀螺仪价格相比光纤或者激光陀螺便宜很多,但使用精度非常低,需要使用参考传感器进行补偿,以提高使用精度。
       基于MEMS 技术的陀螺仪因其成本低,能批量生产,目前已经能够广泛应用于汽车牵引控制系统、医用设备、军事设备等低成本需求应用中。

1. MEMS陀螺仪工作原理
       MEMS陀螺仪利用科里奥效应测量运动物体的角速率,如下图所示。



       根据科里奥效应,当一个物体(m)沿(V)方向运动且施加角旋转速率(Ω)时,该物体将受到一个黄色箭头方向的力。然后,从一个电容感应结构可以测到科里奥效应最终产生的物理位移。

2.MEMS陀螺仪应用
       ● MEMS陀螺仪能够测量角速率。数码相机使用陀螺仪检测人手的旋转运动,能够对图像起到稳定的作用。
       ● 当汽车导航系统无法接收GPS卫星信号时,偏航陀螺仪能够测量汽车的方位,使汽车始终沿电子地图的规划路线行驶,这个功能被称之为航位推测系统。
       在汽车上,偏航陀螺仪可以开启电子稳定控制(ESC)制动系统,防止汽车急转弯时发生意外事故。当汽车出现翻滚状况时,滚转陀螺仪可以引爆安全气囊。
       ● 偏航陀螺仪还能用于室内机器人控制。
       ● 安装在机器人四肢上的多路惯性测量单元(IMU)能够跟踪和监测身体运动。

3.MEMS陀螺仪测试
       在陀螺仪校准后,应测试陀螺仪的性能,了解如何从陀螺仪原始数据中获取有价值的角位移信息。
       下面是板载陀螺仪L3GD20的特性:
       ·        Three selectablefull scales (250/500/2000 dps)
       ·        I2C/SPIdigital output interface
       ·        16 bit-rate valuedata output
       ·        8-bit temperaturedata output
       ·        Two digital outputlines (interrupt and data ready)
       ·        Integrated low-and high-pass filters with user-selectable bandwidth
       ·        Wide supplyvoltage: 2.4 V to 3.6 V
       ·        Lowvoltage-compatible IOs (1.8 V)
       ·        Embeddedpower-down and sleep mode
       ·        Embeddedtemperature sensor
       ·        Embedded FIFO
       ·        High shocksurvivability
       ·        Extended operatingtemperature range (-40 °C to +85 °C)
       ·        ECOPACK® RoHS and“Green” compliant

       打开Demonstration文件夹里的工程,main.c文件里:
       #define L3G_Sensitivity_250dps     (float)  114.285f
       #define L3G_Sensitivity_500dps     (float)  57.1429f
       #define L3G_Sensitivity_2000dps    (float)   14.285f  
       宏定义了在不同情况下的陀螺仪分辨率。

       第161行,Demo_GyroConfig( )函数对陀螺仪进行了初始化
       下面介绍陀螺仪的结构体,里面存储了关键的参数
/* L3GD20struct */
typedefstruct
{
  uint8_t Power_Mode;                        /* 电源模式选择 */
  uint8_t Output_DataRate;                     /* 输出速率     */
  uint8_t Axes_Enable;                        /* 坐标轴时能   */
  uint8_t Band_Width;                        /* 带宽选择     */
  uint8_t BlockData_Update;                   /* 快数据更新   */
  uint8_t Endianness;                         /* 大小端数据选择 */
  uint8_t Full_Scale;                         /* 分辨率选择 */
}L3GD20_InitTypeDef;


       那么,我们如何读到陀螺仪的值,通过Demo_GyroReadAngRate(Buffer)函数,在477行。在487       行,L3GD20_Read(tmpbuffer,L3GD20_OUT_X_L_ADDR,6)用于读取X轴的角度。


voidDemo_GyroReadAngRate (float* pfData)
{
  uint8_t tmpbuffer[6] ={0};
  int16_t RawData[3] = {0};
  uint8_t tmpreg = 0;
  float sensitivity = 0;
  int i =0;

/* 检测 controlregister 4 数据是大端还是小端存储的*/
L3GD20_Read(&tmpreg,L3GD20_CTRL_REG4_ADDR,1);
  /* 读取X轴的角度 */
  L3GD20_Read(tmpbuffer,L3GD20_OUT_X_L_ADDR,6);
  /* 如果是小端模式 */
    if(!(tmpreg & 0x40))
  {
    for(i=0; i<3; i++)
    {
      RawData=(int16_t)(((uint16_t)tmpbuffer[2*i+1]<< 8) + tmpbuffer[2*i]);
    }
  }
/* 如果是大端模式 */
  else
  {
    for(i=0; i<3; i++)
    {
     RawData=(int16_t)(((uint16_t)tmpbuffer[2*i] << 8) +tmpbuffer[2*i+1]);
    }
  }
  /* 记录灵敏度 */
  switch(tmpreg & 0x30)
  {
  case 0x00:
    sensitivity=L3G_Sensitivity_250dps;
    break;
  case 0x10:
    sensitivity=L3G_Sensitivity_500dps;
    break;
  case 0x20:
    sensitivity=L3G_Sensitivity_2000dps;
    break;
  }
  /* X轴角度除以灵敏度 */
  for(i=0; i<3; i++)
  {
    pfData=(float)RawData/sensitivity;
  }
}

最终,我们关心的就是Demo_GyroReadAngRate(Buffer)的Buffer的值。

实验二 MEMS 陀螺仪.pdf

161.9 KB

MEMS陀螺仪技术简介.pdf

1.93 MB

L3GD20_陀螺仪数据手册.pdf

1.54 MB

沙发
奔牛滚滚| | 2013-1-21 11:12 | 只看该作者
收藏了

使用特权

评论回复
板凳
reayfei| | 2013-1-21 14:38 | 只看该作者
很好的资料,顶一个

使用特权

评论回复
地板
reayfei| | 2013-1-22 09:39 | 只看该作者
不错,有价值

使用特权

评论回复
5
sensorpro| | 2013-1-22 10:27 | 只看该作者
谢谢分享经验.

使用特权

评论回复
6
reayfei| | 2013-1-22 15:17 | 只看该作者
顶一个

使用特权

评论回复
7
lark100| | 2013-1-22 23:15 | 只看该作者
测试过L3GD20的性能吗??

使用特权

评论回复
8
reayfei| | 2013-1-23 13:10 | 只看该作者
顶一个

使用特权

评论回复
9
最底层的BUG| | 2013-1-23 13:29 | 只看该作者
太感谢了…………

使用特权

评论回复
10
reayfei| | 2013-1-23 16:18 | 只看该作者
不错,正需要

使用特权

评论回复
11
reayfei| | 2013-1-28 17:39 | 只看该作者
顶一个

使用特权

评论回复
12
gsmlkk| | 2013-1-28 18:54 | 只看该作者
good!!!!

使用特权

评论回复
13
ABCDELF| | 2013-1-28 23:05 | 只看该作者
不错,下一个

使用特权

评论回复
14
dfsa| | 2013-1-28 23:48 | 只看该作者
最近论坛里的DIY大作很多啊:lol

使用特权

评论回复
15
火箭球迷| | 2013-1-29 00:05 | 只看该作者
这个DIY的难度不小啊

使用特权

评论回复
16
pkat| | 2013-1-29 00:14 | 只看该作者
可以分享一些相关的DIY心得

使用特权

评论回复
17
2009chinalj| | 2013-1-29 11:04 | 只看该作者
滤波融合是重点

使用特权

评论回复
18
19633408| | 2013-1-30 21:55 | 只看该作者
好!

使用特权

评论回复
19
fastolf| | 2013-5-15 10:49 | 只看该作者
MARK~~~

使用特权

评论回复
20
gao317422842| | 2013-5-15 20:21 | 只看该作者
顶下!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

25

帖子

1

粉丝