摘 要: 加速度傳感器在手機(jī)、PAD、防盜等多種電子設(shè)備產(chǎn)品已有廣泛的應(yīng)用,而目前絕大多數(shù)的加速度傳感器都搭建在Android或者IOS平臺,很少搭建在Windows ARM平臺。文章從傳感的原理、電路接口以及驅(qū)動實現(xiàn)三個方面來說明加速度傳感器在Windows ARM嵌入式系統(tǒng)上的應(yīng)用。
關(guān)鍵詞: 加速度傳感器; 電路接口; Windows ARM嵌入式系統(tǒng); 驅(qū)動
中圖分類號:TPN39 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)01-30-02
Construction of circuit structures and implementation of driver of acceleration sensor in embedded system
Du Shiying
(Jiaxing Vocational Technical College, Jiaxing, Zhejiang 314036, China)
Abstract: With the development of science and technology, the acceleration sensor is widely applied in the phone, PAD, anti-theft and other electronic equipment products. Most acceleration sensors are constructed in Android or IOS platform, rarely in Windows ARM platform. In this paper, from the aspects of the principle of the sensor circuit interface as well as circuit interface and driver implementation, the application of acceleration sensor in the Windows ARM embedded systems is introduced.
Key words: acceleration sensor; circuit interface; windows ARM embedded systems; driver
0 引言
加速度傳感器[1]是一種能夠測量加速力的電子設(shè)備。加速力就是當(dāng)物體在加速過程中作用在物體上的力,就好比地球引力,也就是重力。加速力可以是個常量,比如g,也可以是變量。加速度計有兩種:一種是角加速度計,是由陀螺儀(角速度傳感器)改進(jìn)的;另一種是線加速度計。
線加速度計的原理是慣性原理,也就是力的平衡,A(加速度)=F(慣性力)/M(質(zhì)量),所以只需要測量F即可。測量F可以用電磁力去平衡這個力,得到F對應(yīng)于電流的關(guān)系,并用實驗去標(biāo)定這個比例系數(shù)。當(dāng)然中間的信號傳輸、放大、濾波就是電路的事了。多數(shù)加速度傳感器是根據(jù)壓電效應(yīng)的原理來工作的。
所謂的壓電效應(yīng)就是對于不存在對稱中心的異極晶體加在晶體上的外力除了使晶體發(fā)生形變以外,還將改變晶體的極化狀態(tài),在晶體內(nèi)部建立電場,這種由于機(jī)械力作用使介質(zhì)發(fā)生極化的現(xiàn)象稱為正壓電效應(yīng)。
一般加速度傳感器[2]就是利用了其內(nèi)部由于加速度造成的晶體變形這個特性。由于這個變形會產(chǎn)生電壓,只要計算出產(chǎn)生電壓和所施加的加速度之間的關(guān)系,就可以將加速度轉(zhuǎn)化成電壓輸出。當(dāng)然,還有很多其他方法來制作加速度傳感器,比如壓阻技術(shù),電容效應(yīng),熱氣泡效應(yīng),光效應(yīng)等,其最基本的原理都是由于加速度使某個介質(zhì)產(chǎn)生變形,通過測量其變形量,并用相關(guān)電路轉(zhuǎn)化成電壓輸出。
1 加速度傳感器外部接口以及與SOC接口電路
1.1 外部接口
MEMSIC器件是基于單片CMOS集成電路制造工藝而生產(chǎn)出來的一個完整的雙軸加速度測量系統(tǒng),就像其他加速度傳感器有重力塊一樣,MEMSIC器件是以可移動的熱對流小氣團(tuán)作為重力塊。器件通過測量由加速度引起的內(nèi)部溫度的變化來測量加速度VDD內(nèi)部數(shù)字電路電源電壓輸入腳,直流電源電壓必須控制在+3V到+5.25V之間。
⑴ VDA:內(nèi)部模擬電路電源電壓輸入腳。直流電源電壓必須控制在+3V到+5.25V之間。
⑵ AOUTX:軸加速度感應(yīng)輸出腳。與之相連的器件的輸入阻抗需足夠高,以保證此腳的輸出電流不大于100μA,靈敏度在出廠前被設(shè)置成與軸相同,但可以根據(jù)用戶的要求將兩個軸的靈敏度設(shè)置成不同的值。
⑶ AOUTY:Y軸加速度感應(yīng)輸出腳。與之相連的器件的輸入阻抗需足夠高,以保證此腳的輸出電流不大于100μA,靈敏度在出廠前被設(shè)置成與軸相同,但可以根據(jù)用戶的要求將兩個軸的靈敏度設(shè)置成不同的值。
⑷ TOUT:內(nèi)部溫度傳感器緩沖輸出腳。此腳輸出的模擬電壓所指示的是管芯襯底的溫度,此電壓可用于測量周圍環(huán)境溫度度的變化量,而不是對溫度直接測量。當(dāng)環(huán)境溫度發(fā)生變化時,Tout的輸出電壓相對于25℃時的電壓就產(chǎn)生一個差值。用此差值可以對傳感器的零點(diǎn)偏置和靈敏度進(jìn)行補(bǔ)償。
⑸ MEMSIC:標(biāo)準(zhǔn)產(chǎn)品選擇的是內(nèi)部時鐘800kHz。當(dāng)選擇內(nèi)部時鐘時此腳必須接地,根據(jù)客戶的特殊要求,MEMSIC可以定制使用外部時鐘的產(chǎn)品,外部時鐘的頻率范圍為400kHz至1.6MHz。
⑹ Vref:輸出一個2.50V的參考電壓。此腳的驅(qū)動能力為100μA。
⑺ GND:接地。
1.2 與SOC接口電路
加速度傳感器的輸出電壓與加速度成正比,為了測量加速度傳感器芯片的輸出電壓[3],通常使用帶有A/D的微控制器,具體連接方法如圖2所示。Xout與A/D IN管腳之間的RC是起濾波作用,用于減小時鐘噪聲。加速度傳感器與微控制器之間不要有高電流。電源與地之間的0.1uF的電容是去耦電容。要盡量減小加速度傳感器與微控制器的距離。
為了使加速計體積盡可能地小,芯片通常采用表貼封裝。最好將加速度測量板安裝在可以獲得理想加速度的地方,例如:能夠快速地獲取加速度,同時是系統(tǒng)的重心等。另外,加速計的安裝方向也要保證[4]。
2 驅(qū)動程序?qū)崿F(xiàn)
對于芯片的驅(qū)動程序[5],本文從I2C的通信方式來闡述驅(qū)動的編寫過程以及主要的實現(xiàn)。
⑴ 查看芯片手冊,并查看原理圖,檢查芯片與ARM之間的硬件接口;
⑵ 在保證硬件電路正常連接的情形下,構(gòu)建驅(qū)動的基本框架;
⑶ 上電時序部分代碼編寫;
⑷ I2C通信部分的代碼編寫;
⑸ 中斷觸發(fā)條件的設(shè)定(操作系統(tǒng)不一樣,實現(xiàn)有所不同);
⑹ 中斷服務(wù)程序片段編寫;
⑺ 數(shù)據(jù)訪問處理代碼片段編寫;
⑻ 休眠模式處理代碼片段;
⑼ 下電時序代碼處理片段。
對于初始化I2C控制器,初始化加速度傳感器模塊,讀加速度傳感器數(shù)據(jù)代碼片段分別描述如下。
⑴ 初始化I2C控制器
/*根據(jù)傳感器初始化I2C控制器*/
I2C_Data.p_getDataBuff=getDataBuf;
//初始化接收數(shù)據(jù)緩沖區(qū)指針
I2C_Data.p_sendDataBuff=sendDataBuf;
/初始化發(fā)送緩沖區(qū)指針
I2C_Data.SerialNumber=0; //發(fā)送序號清零
I2C_Data.i2cInitInfo.controlMode=1; //采用硬件流控制
I2C_Data.i2cInitInfo.slaveAddr=0x4A; //設(shè)置器件地址
I2C_Data.i2cInitInfo.speed=400000; //讀寫速率設(shè)定
I2C_Data.i2cInitInfo.subAddrMode=1; //設(shè)置子地址
I2C_Data.i2cInitInfo.subAddrWidth=1; //子地址寬度為1字節(jié)
I2C_Init(I2C_Data);
⑵ 初始化加速度傳感器模塊
/*初始化傳感器*/
I2C_Data.subAddr=0x16; //子地址為0x16
I2C_Data.dataLength=1; //數(shù)據(jù)長度為1個字節(jié)
sendDataBuf[0]=0x52; //控制字命令
if(0!=I2C_WriteData(I2C_Data)) //判定數(shù)據(jù)是否成功寫入
{ I2C_Data.SerialNumber=0;
needInitFlag=1;
return;
}
needInitFlag=0;
⑶ 讀加速度傳感器數(shù)據(jù)
/讀傳感器的測量的數(shù)據(jù),讀出的數(shù)據(jù)將存儲在
I2C_Data.p_getDataBuff
//所指向的數(shù)據(jù)緩沖區(qū)
I2C_Data.subAddr=0x00; //數(shù)據(jù)起始子地址
I2C_Data.dataLength=6; //數(shù)據(jù)長度
if(0!=I2C_ReadData(I2C_Data)) //數(shù)據(jù)讀取是否成功
{ I2C_Data.SerialNumber=0;
needInitFlag=1;
return 3;
}
3 結(jié)束語
本文分別從加速度傳感器的原理,外部接口方式,以及windows driver的實現(xiàn)方式進(jìn)行了探討。對于其他的傳感裝置,例如地磁、陀螺儀、光線傳感、近距離傳感、熱導(dǎo)傳感等傳感裝置在windows arm體系的集成實現(xiàn)有一定的指導(dǎo)意義。同時,對于傳感器KMDF驅(qū)動的實現(xiàn)方式以及如何使得器件工作在低功耗模式,我們將繼續(xù)進(jìn)行研究。
參考文獻(xiàn):
[1] 王俊融,胡蘭子.基于嵌入式技術(shù)的傾角傳感器檢測系統(tǒng)設(shè)計[J].傳感器世界,2012.18(7):18-20
[2] 梁偉,馮楓,鮑學(xué)良,陳娟.角加速度傳感器及其應(yīng)用[J].長春工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2012.33-3:311-316
[3] 陳盈,王弘韜,安成斌.基于加速度傳感器的紅外圖像穩(wěn)像技術(shù)研究[J].光電工程,2012.39(8):63-68
[4] 趙學(xué)玲.加速度傳感器在動作識別中的應(yīng)用[J].機(jī)床與液壓,201l.39(2):l18-120
[5] 馮國進(jìn).嵌入式Linux驅(qū)動程序設(shè)計從入門到精通[M].清華大學(xué)出版社,2008:151-168