華中師范大學計算機學院 孫 捷 劉 瑄
?
三軸運動檢測芯片應用測試研究
華中師范大學計算機學院 孫 捷 劉 瑄
【摘要】運動檢測芯片在手機、相機、智能穿戴設備中都在使用,在測試、測量等領域也應用普遍。以飛思卡爾公司生產的低成本新型三軸加速度傳感器MMA7660FC為例,介紹了它的工作原理、功能、應用方法及其與STM32F103的接口電路,通過將MMA7660FC的數據傳送到PC機實時顯示,并通過改變傳感器工作模式等,測試該傳感器應用的各種方法及效果。
【關鍵詞】MMA7660FC;加速度傳感器;運動檢測;STM32F103
加速度傳感器是一種十分重要的測量加速力或運動情況的傳感器,一般加速度測量范圍為0.1g~10g。加速度傳感器的種類繁多,從工作原理上可分為壓電式、電容式、電感式、壓阻式、隧道電流式、諧振式等等。從測量維數上來看,有單軸、二軸、三軸等,目前市場上有越來越多的產品應用了雙軸以及三軸加速度傳感器。隨著近年來大規模集成電路技術的發展,加速度傳感器也逐漸向集成化、低功耗的方向發展。集成了信號調理電路的加速度傳感器能大大簡化電路設計,降低系統功耗,提高系統穩定性,同時減少了系統設計成本,縮短開發周期,更利于產品快速推向市場。加速度傳感器應用范圍廣泛,一般來講它可用于傾斜度檢測、運動檢測、定位檢測、震動檢測、振動檢測和自由落下等檢測功能。本文將簡要介紹MMA7660FC的功能、工作原理及與STM32F103的接口電路,通過在PC機上實時顯示傳感器的數據,構建一個MMA7660FC的各種應用方法的測試系統,以方便更快更好的應用該傳感器芯片。
MMA7660FC是飛思卡爾生產的一種±1.5g三軸加速度I2C總線數字輸出的傳感器芯片,具有超低功耗、微型電容式MEMS的傳感器,內部具有低通濾波器,用于0g偏移和增益誤差補償。在配置為每秒采樣一次時可達到6位分辨率。該器件通過中斷引腳(INT)可以提供傳感器數據變化、產品方向和姿態識別等中斷觸發信號。一般常用來測量傾斜角、慣性力、沖擊力及震動,廣泛用于手機、掌上電腦、PDA、數碼相機、小家電、游戲中的運動檢測、自動叫醒、醫療和體育應用的活動監測、沖擊檢測和運動控制、方向和自由落體檢測。具體性能特點如下:
●低電壓操作:模擬工作電壓為2.4V ~3.6V,數字工作電壓為1.71V~3.6V
●低功耗
關閉模式:0.4μA
待機模式:2μA
工作模式:可配置到47μA
●3mm*3mm*0.9mmDFN封裝
●集成3軸±1.5g MEMS傳感器和CMOS接口控制器在同一個封裝內
●可配置數據輸出速率:1~120次采樣/秒
●包括智能電源管理功能,自動喚醒/自動休眠功能來降低功耗
●方向檢測:橫向/縱向、正面/反面識別,MMA7660FC可在六個方向檢測加速度
●集成了眾多智能的運動功能,振動識別和方向、震動、敲擊檢測
●可靠的設計、高抗震性(10,000g)
MMA7660FC內部功能框圖如下圖1所示,它是一種電容式傳感器,是在wafer的表面上做出梳狀結構,當產生動作時,由偵測電容差來判斷變形量,從而反推出加速度的值。MMA7660FC設置MODE寄存器可以有三種工作模式: Standby(待機)模式、Active and Auto-Sleep (活動并且Auto-Sleep) 模式、Auto-Wake(自動喚醒)模式。

圖1 MMA7660FC內部功能框圖
為了研究MMA7660FC使用方法與性能,需要構建一個完整的控制電路及測試方案,我們使用STM32F103作為主控制芯片,其引腳及外圍連接信號如圖2所示,供電電壓為3.3V,與MMA7660FC電源電壓一致,可以直接連接。

圖2 STM32F103引腳及外圍信號圖
傳感器與CPU部分的連接電路原理圖如圖3所示,IIC總線的兩根線SCL、SDA要接4.7K上拉電阻,另外中斷信號接CPU的PA0端口。CPU的復位、晶振、電源部分電路原理圖如圖4所示,發光二極管D1接CPU的PB9端口,主要用來指示傳感器采樣的頻率。另外傳感器的數據要發送到PC機的串口,因此還需要一個串口通信電平轉換電路,電路原理圖如圖5所示,P1插座的TXD接電腦串口DB9的2腳,RXD接DB9的3腳,GND接DB9的5腳。圖6為STM32F103的JTAG端口,與J-LINK仿真器連接。

圖3 MMA7660FC電路原理圖

圖4 CPU復位、電源、晶振電路原理圖

圖5 串行接口電路原理圖

圖6 JTAG接口電路原理圖
3.1STM32F103的程序設計
開發環境使用的是Keil uVision3+MDK3.50,STM32F103的程序設計主要完成MMA7660FC初始化設置,使其工作在標準模式下,通過I2C總線通信方式讀取X、Y、Z三軸加速度值,并通過串口發送到計算機中去顯示,同時還要接收計算機發過來的命令數據,從而改變MMA7660FC的工作模式或方式,主控程序流程圖如圖7所示。

圖7 STM32F103主控程序流程圖
STM32F103初始化主要進行RCC_Configuration(void)、NVIC_Configuration(void)、GPIO_Configuration(void)、USART_Init(USART1,&USART_InitStructure)和IIC_Init(void)。在MMA7660FC的初始化過程中,主要完成如下的一些工作:
void MMA7660_Init(void)
{
FSL_MMA_IICWrite(MMA7660_MODE, 0); //Make 7660 enter standby mode to set registers
FSL_MMA_IICWrite(MMA7660_SPCNT, MMA7660_SPCNT_Value);// Sleep Counter Register: SPCNT
FSL_MMA_IICWrite(MMA7660_INTSU, MMA7660_INTSU_Value);// Interrupt Setup Register: INTSU
FSL_MMA_IICWrite(MMA7660_SR, MMA7660_SR_Value); //Sample Rates Register: SR
FSL_MMA_IICWrite(MMA7660_PDET, MMA7660_PDET_Value);//Pulse Detection Register: PDET
FSL_MMA_IICWrite(MMA7660_PD, MMA7660_PD_Value); //Pulse Debounce Count: PD
FSL_MMA_IICWrite(MMA7660_MODE, MMA7660_MODE_Value);// Mode Register: MODE
}
對于MMA7660FC的兩種工作模式,一個為Auto-Sleep,即Running模式。在該模式下,傳感器可以配置較高的采樣率。另一個模式為Auto-Wakeup,即Sleep模式。該模式并非真正的休眠模式,而只是低速采樣模式。在該模式下,能夠有效地降低芯片的運行功耗。
實際測試時,當水平放置時,傳感器的某個軸加速度達到最大時,另外兩個軸讀數應該為0,但是硬件缺陷使得另兩軸會跳值,實驗結果,其跳值范圍在1~2,且連續跳值次數極少超過2次。故在讀入數據過程中加入判斷語句,過濾加速度傳感器的“自跳”,其邏輯是:在某個軸上,若此次讀數小于等于2,且前兩次讀數至少有一次為0,就認為此讀數為自跳,將其置零。在動作檢測的過程中,盡量采用的是相對的坐標值,而不是絕對的坐標值。因為在生產過程中,并不能保證傳感器的絕對水平。在讀取XYZ坐標的時候,最好采用的就是Multiple Byte Read的方式,這樣才能保證XYZ三個坐標是同一次采樣的結果。如果分開讀取,則有可能讀取到不同組的采樣數據。
3.2PC端的程序設計
在PC機端主要負責顯示三軸傳感器的數值,并且還要能發送控制數據改變傳感器的工作狀態,從而能直觀的觀察MMA7660FC在各種不同模式和不同方式下的性能,這種數據雙向傳送是通過串口進行的。采用VC進行了上位機的程序設計,界面如圖8所示。主要包括三個軸的數據顯示,數據顯示區部分是串口接收全部數據的顯示,命令區是發送給STM32F103的命令數據,另外還有串口配置的相關內容。

圖8 PC機端顯示與控制界面圖
上位機發送的命令數據主要包括設置MMA7660FC的工作模式、采樣率、對傳感器數據濾波處理的參數選擇命令,通過改變不同工作狀況從而能直觀觀察到傳感器的數據精確度及穩定性。
通過測試,發現當板子水平放置時,無論如何改變X、Y的位置,都不會有中斷產生,因為這時它只能檢測Z軸的變化,X、Y的變化它檢測不到,只有當我們將板子傾斜一個角度后才能檢測X、Y的變化,經過查找相關文獻,這是由于其內部是電容式的結構,很難在同一個結構中同時感測到三個軸(X、Y、Z)的變化。另外在采樣率越低時穩定性越好,但實時性較差,一般可根據實際應用環境的要求,優先選擇響應時間的條件下,通過設置濾波參數可達到較好的效果。如果傳感器只是應用于方位檢測的話,8個值的濾波就夠了。而用于動作檢測的話,一般使用32階的均值濾波效果較好。
參考文獻
[1]資道周.加速度傳感器性能測試系統的設計與實現[D].湖南:湖南大學,2007.
[2]汪少初,劉昱,郝文飛,劉開華,路文平.基于慣性傳感的人員行進動作識別方法[J].電子測量與儀器學報,2014(06)
[3]李智利,汪正祥.MMA7260Q在車載導航定位中的應用[J].微計算機信息,2007,23(8-2):218-219.
[4]杜時英.加速度傳感器在嵌入式系統中的電路搭建及驅動的實現[J].計算機時代,2013(01)
[5]張潔.基于加速度傳感器的人體運動行為識別研究[J].自動化與儀器儀表,2016(03)
[6]唐曉剛,顏永安,趙冰.石油勘探MEMS加速度傳感器在煤田勘探的應用[J].儀表技術與傳感器,2006,6:50-57.
[7]馬少龍,劉冬花,馬國紅,朱書林,葉佳.一種快速獲取機器人運動軌跡的方法研究[J].組合機床與自動化加工技術,2014(10)
[8]蘇維嘉,王旭輝.新型加速度傳感器在傾角測量中的應用研究[J].機械研究與應用,2007,20(5):62-65.
作者簡介:
孫捷(1995—),女,湖北荊州人,大學本科,現就讀于華中師范大學計算機學院計算機科學與技術系。
劉瑄(1995—),女,廣東珠海人,大學本科,現就讀于華中師范大學計算機學院軟件工程系。