本文對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)闪萄,微型電子機械系統(tǒng),也叫微機電系統(tǒng)奇颠,是指可批量制作的败去,將微型機構(gòu)、微型傳感器烈拒、微型執(zhí)行器以及信號處理和控制電路圆裕、直至接口、通信和電源等于一體的微型器件或系統(tǒng)荆几∠抛保可以把它理解為利用傳統(tǒng)的半導體工藝和材料,用微米技術(shù)在芯片上制造微型機械吨铸,并將其與對應(yīng)電路集成為一個整體的技術(shù)行拢。
MEMS傳感器的種類繁多,G-sensor是MEMS傳感器的一種诞吱。
什么是G-sensor
G-sensor(Gravity sensor)舟奠,重力傳感器狈涮,又名加速度傳感器(accelerometer),是能感知加速度大小的MEMS傳感器鸭栖。
G-sensor工作原理
如圖中的模型歌馍, 一個質(zhì)量塊兩端通過彈簧進行固定。在沒有加速度的情況下晕鹊,彈簧不會發(fā)生形變松却,質(zhì)量塊靜止。當產(chǎn)生加速度時溅话,彈簧發(fā)生形變晓锻,質(zhì)量塊的位置會發(fā)生變化。 彈簧的形變量隨著加速度的增大而增大飞几。在彈簧的勁度系統(tǒng) k 和質(zhì)量塊的質(zhì)量 m已知的情況下砚哆,只要測量出彈簧的形變量,就可以求出系統(tǒng)的加速度屑墨。
G-sensor內(nèi)部有 finger sets, 用來測量產(chǎn)生加速度讀時質(zhì)量塊的位移躁锁。 每一個finger set 相當兩個電容極板, 當有加速度時質(zhì)量塊會產(chǎn)生相對運動卵史,而位移的變化會導致差分電容的變化战转。
當然,具體的差分電容檢測和計算加速度過程由G-sensor內(nèi)部完成以躯,我們只需要直接讀取其轉(zhuǎn)化后的值即可槐秧。G-sensor輸出值也不是直接的加速度值,它的計量單位是通常用g表示忧设,1g代表一個重力加速度刁标,即9.8m/s^2。1g=1000mg址晕。
這里用一個例子再次強調(diào)一下G-sensor的輸出值是根據(jù)其內(nèi)部質(zhì)量塊的位移計算得出的:
將G-sensor的Z軸垂直向地膀懈,靜止放置在水平桌面上,此時G-sensor芯片是靜止的斩箫,雖然芯片整體加速度為0g吏砂,但是讀取其輸出值,X/Y軸輸出為0g乘客,Z軸輸出為1g狐血。因為內(nèi)部質(zhì)量塊在重力加速度的作用下,產(chǎn)生了位移易核。
G-sensor重要參數(shù)
測量范圍 Measurement Rang
測量范圍是傳感器可以支持的輸出加速度范圍匈织,通常用±g 表示。這就是G-sensor可以測量并準確輸出的最大加速度。例如缀匕,一個測量范圍是±8g G-sensor纳决,它的輸出一直到加速度達到±8g 時是線性的。靈敏度 Sensitivity
靈敏度表示傳感器輸出隨加速度(輸入)變化的比例乡小,它定義理想情況下加速度和傳感器輸出的直線關(guān)系阔加。數(shù)字輸出的傳感器的靈敏度通常使用 LSB/g 或mg/LSB 表示。例如满钟,一個靈敏度為4mg/LSB的G-sensor胜榔,若其Z軸輸出為100,則可計算出Z軸加速度為400mg湃番。0g偏移 0g-offset
0g 偏置表示在沒有加速度(零輸入)時輸出的測量值夭织。模擬輸出的傳感器通常使用伏特或毫伏表示,數(shù)字輸出的傳感器使用碼字表示吠撮。
不同型號的G-sensor的 0g-offset 不同尊惰,同一型號的不同芯片的 0g-offset 也不同,甚至同一顆芯片中不同軸的 0g-offset 也不同泥兰,是否需要校正要視具體應(yīng)用而定弄屡。如果應(yīng)用中只關(guān)心加速度的相對變化,而不關(guān)心加速度的具體數(shù)值逾条,則不需要校正琢岩。如果是關(guān)心加速度的具體數(shù)值,而所選器件的 0g-offset 又比較大师脂,則必須要校正。
某些G-sensor本身有 offset 寄存器江锨,這是只需要把待校準的軸沿水平方向靜止放置吃警,測量其 0g 時的輸出,并把這個值乘以-1 寫入 offset 寄存器即可啄育。如果G-sensor本身沒有 offset 寄存器酌心,則需要用戶在自己的處理器中記錄這個數(shù)值,并在實際的測量結(jié)果中減去這個 offset挑豌。輸出速率 ODR
ODR(Output Data Rate)安券,表示G-sensor的輸出數(shù)據(jù)的刷新頻率。ODR越高氓英,輸出數(shù)據(jù)更新越快侯勉,功耗越高。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
- 內(nèi)置溫度傳感器
- 內(nèi)置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方向檢測练对、自由落體檢測和動作檢測并不是由獨立的單元實現(xiàn)的遍蟋,這三種功能的實現(xiàn)都是通過對可配置中斷資源INT1和INT2進行設(shè)置后實現(xiàn)的。
單擊/雙擊識別和自動休眠/喚醒都是由獨立的單元實現(xiàn)的螟凭,其中單擊/雙擊識別有相應(yīng)的中斷標志位虚青,自動休眠/喚醒沒有標志位。
可配置中斷資源INT1和INT2
LIS2DH12提供了兩個可配置中斷資源INT1和INT2螺男,這里針對INT1進行說明挟憔,INT2與INT1是相似的。
注意區(qū)分中斷資源的INT1/INT2和中斷輸出引腳的INT1/INT2烟号,前者是G-sensor的內(nèi)部中斷資源绊谭,后者是G-sensor的實際物理輸出引腳。
INT相關(guān)寄存器
INT1的寄存器包括配置寄存器INT1_CFG汪拥,狀態(tài)寄存器INT1_SRC达传,門限寄存器INT1_THS,持續(xù)時長寄存器INT1_DURATION迫筑。
-
INT1_CFG
-
INT1_SRC
INT1_SRC是只讀寄存器宪赶,讀取該寄存器將會清除IA位中斷。
-
INT1_THS
根據(jù)所配置的測量范圍脯燃,1LSB代表不同的門限值搂妻。
-
INT1_DURATION
INT中斷模式
INT1_CFG中AOI
位和6D
位決定了INT1的四種中斷模式:OR combination
、AND combination
辕棚、6-direction movement
欲主、6-direction position
-
OR combination
和AND combination
OR combination
和AND combination
模式下,是將三軸數(shù)據(jù)的絕對值與threshold值進行比較逝嚎。大于threshold時扁瓢,將狀態(tài)寄存器INT1_SRC中XH(YH, ZH)置1,XL(YL, ZL)置0补君;小于threshold時引几,XH(YH, ZH)置0,XL(YL, ZL)置1挽铁。
OR combination
模式時伟桅,任一使能了的事件發(fā)生,都將觸發(fā)INT1中斷叽掘。其應(yīng)用場景之一就是wake-up檢測楣铁。
AND combination
模式時,所有使能的事件都發(fā)生够掠,才能觸發(fā)INT1中斷民褂。其應(yīng)用場景之一就是free-fall檢測。 -
6-direction movement
和6-direction position
6-direction movement
和6-direction position
模式下,是將三軸數(shù)據(jù)直接與threshold值進行比較赊堪。XH面殖、YH、 ZH哭廉、XL脊僚、YL、 ZL的值反應(yīng)了三軸數(shù)據(jù)與threshold的大小關(guān)系和其正負遵绰。
當三軸數(shù)據(jù)為正辽幌,且大于threshold時,XH(YH, ZH)將置為1椿访;當三軸數(shù)據(jù)為負乌企,且大于threshold時,XL(YL, ZL)將置為1成玫。
6-direction movement
模式下加酵,器件從某個方向移向不同的已知方向時將觸發(fā)INT1中斷,中斷持續(xù)1/ODR哭当。其應(yīng)用場景是movement recognition猪腕。
6-direction position
模式下,器件穩(wěn)定在已知的方向時將觸發(fā)INT1中斷钦勘,中斷持續(xù)直到方向改變陋葡。其應(yīng)用場景是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可同時使能單擊檢測和雙擊檢測门扇,但要注意雹有,如果這樣設(shè)置,發(fā)生單擊事件時臼寄,SClick
位會置為1霸奕,但是IA
位不會置為1,也就不能觸發(fā)CLICK中斷吉拳;只有發(fā)生雙擊事件時质帅,才能使IA
位置1,觸發(fā)中斷,并且由于雙擊事件是滿足一定時序關(guān)系的兩個單擊事件煤惩,所以雙擊事件的第一擊會使得SClick
置為1嫉嘀,這樣就還需要加上邏輯判斷才能確定沒有發(fā)生單擊事件。
綜上魄揉,單擊剪侮、雙擊檢測最好只使能一種。如果兩種都使能洛退,當SClick
置為1時瓣俯,就還是需要加入額外的邏輯判斷來區(qū)別到底是一次單擊事件還是雙擊事件中的一擊。
單擊/雙擊識別的寄存器包括:配置寄存器CLICK_CFG兵怯,狀態(tài)寄存器CLICK_SRC彩匕,門限寄存器CLICK_THS,時序相關(guān)寄存器CLICK_LIMIT媒区、CLICK_LATENCY和CLICK_TIMELIMIT驼仪。
-
CLICK_CFG
-
CLICK_SRC
-
CLICK_THS
-
TIME_LIMIT
-
TIME_LATENCY
-
TIME_WINDOW
自動休眠/喚醒
通過中斷資源INT1和INT2,可實現(xiàn)wake-up檢測驻仅,但是需要加入額外的邏輯處理谅畅。LIS2DH12直接提供了自動休眠、喚醒的功能噪服。
當加速度小于設(shè)置的activation threshold時毡泻,器件自動切換到low-power模式。一旦加速度大于threshold粘优,器件馬上自動切換到由CTRL_REG1
的LPen
位和CTRL_REG3
的HR
位配置的工作狀態(tài)仇味。
自動休眠/喚醒功能的寄存器包括門限寄存器Act_THS和時長寄存器Act_DUR。
-
Act_THS
-
Act_DUR