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

本文对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重要参数

  • 测量范围 Measurement Rang
    测量范围是传感器可以支持的输出加速度范围,通常用±g 表示。这就是G-sensor可以测量并准确输出的最大加速度。例如,一个测量范围是±8g G-sensor,它的输出一直到加速度达到±8g 时是线性的。

  • 灵敏度 Sensitivity
    灵敏度表示传感器输出随加速度(输入)变化的比例,它定义理想情况下加速度和传感器输出的直线关系。数字输出的传感器的灵敏度通常使用 LSB/g 或mg/LSB 表示。例如,一个灵敏度为4mg/LSB的G-sensor,若其Z轴输出为100,则可计算出Z轴加速度为400mg。

  • 0g偏移 0g-offset
    0g 偏置表示在没有加速度(零输入)时输出的测量值。模拟输出的传感器通常使用伏特或毫伏表示,数字输出的传感器使用码字表示。
    不同型号的G-sensor的 0g-offset 不同,同一型号的不同芯片的 0g-offset 也不同,甚至同一颗芯片中不同轴的 0g-offset 也不同,是否需要校正要视具体应用而定。如果应用中只关心加速度的相对变化,而不关心加速度的具体数值,则不需要校正。如果是关心加速度的具体数值,而所选器件的 0g-offset 又比较大,则必须要校正
    某些G-sensor本身有 offset 寄存器,这是只需要把待校准的轴沿水平方向静止放置,测量其 0g 时的输出,并把这个值乘以-1 写入 offset 寄存器即可。如果G-sensor本身没有 offset 寄存器,则需要用户在自己的处理器中记录这个数值,并在实际的测量结果中减去这个 offset。

  • 输出速率 ODR
    ODR(Output Data Rate),表示G-sensor的输出数据的刷新频率。ODR越高,输出数据更新越快,功耗越高。G-sensor的ODR往往都是可以配置的。


二、BOSCH的BMA222E


三、ST的LIS2DH12

LIS2DH12的功能和特色如下:

  • I2C/SPI两种通信接口
  • 1Hz~5.3kHz的ODR可配置
  • high-resolution/normal/low-power三种运行模式
    high-resolution模式时输出为12bits
    normal模式时输出为10bits
    low-power模式时输出为8bits;
  • 测量范围 ±2g/±4g/±8g/±16g可选
  • 两个可配置的中断资源INT1和INT2
  • 内置温度传感器
  • 内置FIFO
  • 两个中断输出引脚
  • 6D/4D方向检测 6D/4D orientation detection
  • 自由落体检测 Free-fall detection
  • 动作检测 Motion detection
  • 单击/双击识别 Click/double-click recognition
  • 自动休眠/唤醒 Sleep-to-wake and return-to-sleep

其中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。

  • INT1_CFG



  • INT1_SRC
    INT1_SRC是只读寄存器,读取该寄存器将会清除IA位中断。


  • INT1_THS
    根据所配置的测量范围,1LSB代表不同的门限值。


  • INT1_DURATION


INT中断模式

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

  • OR combinationAND combination
    OR combinationAND combination模式下,是将三轴数据的绝对值与threshold值进行比较。大于threshold时,将状态寄存器INT1_SRC中XH(YH, ZH)置1,XL(YL, ZL)置0;小于threshold时,XH(YH, ZH)置0,XL(YL, ZL)置1。

    OR combination模式时,任一使能了的事件发生,都将触发INT1中断。其应用场景之一就是wake-up检测
    AND combination模式时,所有使能的事件都发生,才能触发INT1中断。其应用场景之一就是free-fall检测
  • 6-direction movement6-direction position
    6-direction movement6-direction position模式下,是将三轴数据直接与threshold值进行比较。XH、YH、 ZH、XL、YL、 ZL的值反应了三轴数据与threshold的大小关系和其正负。
    当三轴数据为正,且大于threshold时,XH(YH, ZH)将置为1;当三轴数据为负,且大于threshold时,XL(YL, ZL)将置为1。

    6-direction movement模式下,器件从某个方向移向不同的已知方向时将触发INT1中断,中断持续1/ODR。其应用场景是movement recognition
    6-direction position模式下,器件稳定在已知的方向时将触发INT1中断,中断持续直到方向改变。其应用场景是positions recognition
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。

  • CLICK_CFG


  • CLICK_SRC


  • CLICK_THS


  • TIME_LIMIT


  • TIME_LATENCY


  • TIME_WINDOW


自动休眠/唤醒

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


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

  • Act_THS


  • Act_DUR


四、ADI的ADXL362


参考资料

  1. ADI-MEMS加速度传感器常见问题解答
  2. LIS2DH12 datasheet
  3. ST AN3308 Application note
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容