嵌入式开发

G-sensor概述及常用芯片整理

2016-10-24  本文已影响5780人  WilliamChou

本文对G-sensor进行整理,先介绍G-sensor的一些基本概念,再具体讲解BOSCH、ST、ADI三家的G-sensor,其中BOSCH的G-sensor重点讲BMA222E,ST的G-sensor重点讲LIS2DH12,ADI的G-sensor具体讲ADXL362。


一、G-sensor概述

什么是MEMS

MEME(Micro-Electro-Mechanical System),微型电子机械系统,也叫微机电系统,是指可批量制作的,将微型机构、微型传感器、微型执行器以及信号处理和控制电路、直至接口、通信和电源等于一体的微型器件或系统。可以把它理解为利用传统的半导体工艺和材料,用微米技术在芯片上制造微型机械,并将其与对应电路集成为一个整体的技术。
MEMS传感器的种类繁多,G-sensor是MEMS传感器的一种。

MEMS传感器分类

什么是G-sensor

G-sensor(Gravity sensor),重力传感器,又名加速度传感器(accelerometer),是能感知加速度大小的MEMS传感器。

G-sensor

G-sensor工作原理

如图中的模型, 一个质量块两端通过弹簧进行固定。在没有加速度的情况下,弹簧不会发生形变,质量块静止。当产生加速度时,弹簧发生形变,质量块的位置会发生变化。 弹簧的形变量随着加速度的增大而增大。在弹簧的劲度系统 k 和质量块的质量 m已知的情况下,只要测量出弹簧的形变量,就可以求出系统的加速度。


G-sensor抽象模型

G-sensor内部有 finger sets, 用来测量产生加速度读时质量块的位移。 每一个finger set 相当两个电容极板, 当有加速度时质量块会产生相对运动,而位移的变化会导致差分电容的变化。
当然,具体的差分电容检测和计算加速度过程由G-sensor内部完成,我们只需要直接读取其转化后的值即可。G-sensor输出值也不是直接的加速度值,它的计量单位是通常用g表示,1g代表一个重力加速度,即9.8m/s^2。1g=1000mg

这里用一个例子再次强调一下G-sensor的输出值是根据其内部质量块的位移计算得出的:
将G-sensor的Z轴垂直向地,静止放置在水平桌面上,此时G-sensor芯片是静止的,虽然芯片整体加速度为0g,但是读取其输出值,X/Y轴输出为0g,Z轴输出为1g。因为内部质量块在重力加速度的作用下,产生了位移。

G-sensor重要参数


二、BOSCH的BMA222E


三、ST的LIS2DH12

LIS2DH12的功能和特色如下:

其中6D/4D方向检测、自由落体检测和动作检测并不是由独立的单元实现的,这三种功能的实现都是通过对可配置中断资源INT1和INT2进行设置后实现的。
单击/双击识别和自动休眠/唤醒都是由独立的单元实现的,其中单击/双击识别有相应的中断标志位,自动休眠/唤醒没有标志位。

可配置中断资源INT1和INT2

LIS2DH12提供了两个可配置中断资源INT1和INT2,这里针对INT1进行说明,INT2与INT1是相似的。
注意区分中断资源的INT1/INT2和中断输出引脚的INT1/INT2,前者是G-sensor的内部中断资源,后者是G-sensor的实际物理输出引脚。

INT相关寄存器

INT1的寄存器包括配置寄存器INT1_CFG,状态寄存器INT1_SRC,门限寄存器INT1_THS,持续时长寄存器INT1_DURATION。

INT中断模式

INT1_CFG中AOI位和6D位决定了INT1的四种中断模式:OR combinationAND combination6-direction movement6-direction position

wake-up检测

wake-up事件,反映到加速度上,就是选定轴的任一轴的加速度值超过threshold。属于OR combination事件。
参考配置如下:

1. Write A7h into CTRL_REG1 // Turn on the sensor and enable XYZ, ODR = 100 Hz
2. Write 00h into CTRL_REG2 // High-pass filter disabled
3. Write 40h into CTRL_REG3 // Interrupt driven to INT1 pad
4. Write 00h into CTRL_REG4 // FS = 2 g
5. Write 08h into CTRL_REG5 // Interrupt latched
6. Write 10h into INT1_THS // Threshold = 250 mg
7. Write 00h into INT1_DURATION // Duration = 0
8. Write 0Ah into INT1_CFG // Enable XH and YH interrupt generation
9. Poll INT1 pad; if INT1=0 then go to 8 // Poll RDY/INT pin waiting for the wake-up event
10 Read INT1_SRC // Return the event that has triggered the interrupt
11 (Wake-up event has occurred; insert your code here) // Event handling
12 Go to 8
自由落体检测

free-fall事件,反映到加速度上,就是三轴加速度都都接近于0g。属于AND combination事件。
参考配置如下:

1 Write A7h into CTRL_REG1 // Turn on the sensor, enable XYZ, ODR = 100 Hz
2 Write 00h into CTRL_REG2 // High-pass filter disabled
3 Write 40h into CTRL_REG3 // Interrupt driven to INT1 pad
4 Write 00h into CTRL_REG4 // FS = 2 g
5 Write 08h into CTRL_REG5 // Interrupt latched
6 Write 16h into INT1_THS // Set free-fall threshold = 350 mg
7 Write 03h into INT1_DURATION // Set minimum event duration
8 Write 95h into INT1_CFG // Configure free-fall recognition
9 Poll INT1 pad; if INT1 = 0 then go to 10 // Poll INT1 pin waiting for the free-fall event
10 (Free-fall event has occurred; insert your code here) // Event handling
11 Read INT1_SRC register // Clear interrupt request
12 Go to 9

单击/双击识别

LIS2DH12可同时使能单击检测和双击检测,但要注意,如果这样设置,发生单击事件时,SClick位会置为1,但是IA位不会置为1,也就不能触发CLICK中断;只有发生双击事件时,才能使IA位置1,触发中断,并且由于双击事件是满足一定时序关系的两个单击事件,所以双击事件的第一击会使得SClick置为1,这样就还需要加上逻辑判断才能确定没有发生单击事件。
综上,单击、双击检测最好只使能一种。如果两种都使能,当SClick置为1时,就还是需要加入额外的逻辑判断来区别到底是一次单击事件还是双击事件中的一击。


单击/双击识别的寄存器包括:配置寄存器CLICK_CFG,状态寄存器CLICK_SRC,门限寄存器CLICK_THS,时序相关寄存器CLICK_LIMIT、CLICK_LATENCY和CLICK_TIMELIMIT。

自动休眠/唤醒

通过中断资源INT1和INT2,可实现wake-up检测,但是需要加入额外的逻辑处理。LIS2DH12直接提供了自动休眠、唤醒的功能。
当加速度小于设置的activation threshold时,器件自动切换到low-power模式。一旦加速度大于threshold,器件马上自动切换到由CTRL_REG1LPen位和CTRL_REG3HR位配置的工作状态。


自动休眠/唤醒功能的寄存器包括门限寄存器Act_THS和时长寄存器Act_DUR。

四、ADI的ADXL362


参考资料

  1. ADI-MEMS加速度传感器常见问题解答
  2. LIS2DH12 datasheet
  3. ST AN3308 Application note
上一篇 下一篇

猜你喜欢

热点阅读