陶志成,張海
(北京航空航天大學 自動化科學與電氣工程學院,北京 100191)
?
MPU6050和STM32L152的微功耗三維無線鼠標設計
陶志成,張海
(北京航空航天大學 自動化科學與電氣工程學院,北京 100191)
摘要:利用運動傳感芯片MPU6050和STM32L152,設計了一款運動感知及處理模塊功耗僅為1.2 mA左右的低功耗三維鼠標。針對功耗問題,詳細介紹了符合鼠標低功耗工作要求的STM32L152低功耗運行、睡眠模式配置,以及MPU6050加速度計單獨循環(huán)、單軸加速度計工作模式的配置,給出了加速度計標定及基于加速度計的姿態(tài)角計算方法,實現了鼠標姿態(tài)的精確測量。
關鍵詞:STM32L152;MPU6050;三維無線鼠標
引言
針對低功耗設計問題,大多數三維無線鼠標僅考慮無線模塊的低功耗設計。本文在此基礎上,進一步將鼠標處理器模塊及慣性測量模塊功耗考慮進來,實現一款功耗更低、性能更優(yōu)的三維無線鼠標。
1方案選擇
圖1 系統(tǒng)功能框圖
系統(tǒng)主要由電源模塊、運動感測追蹤組件MPU6050模塊、串口轉無線WiFi模塊和主控芯片STM32L152構成,系統(tǒng)功能框圖如圖1所示。這里WiFi模塊只是用于遠程傳輸測試,不在低功耗設計考慮之中,若考慮遠程傳輸低功耗設計,則使用ZigBee無線傳輸。
2硬件電路設計
2.1微控制器接口電路
主控芯片STM32L152與MPU6050的I2C和串口轉WiFi模塊的接口電路如圖2所示。
圖2 微控制器與其他模塊接口電路
2.2運動感測追蹤組件MPU6050電路
MPU6050硬件電路設計如圖3所示,將其SCL、SDA端口連接4.7 kΩ上拉電阻(否則I2C總線不能通信),并與微處理器PB8、PB9引腳相連;AD0經4.7 kΩ電阻接地,讀寫器件地址為0xD0,若懸空或接高電平,地址為0xD2;濾波電容取值0.1 μF,電荷泵電容取值10 μF,否則片上傳感器不工作。
圖3 MPU 6050數據采集電路
2.3串口轉WiFi模塊電路
WiFi232-s是一款實現串口到WiFi數據包的雙向透明轉發(fā),其內部完成協(xié)議轉換。串口轉WiFi模塊電路如圖4所示。通過串口或WiFi網絡連接至電腦,可以對模塊進行AT指令集設置其配置參數。其中9、10、12引腳接4.7 kΩ上拉電阻,5、6引腳接處理器串口引腳PD8、PD9。
圖4 串口轉WiFi模塊電路
3軟件設計
3.1三維鼠標低功耗設計描述
使用MPU6050可以設計兩種三維鼠標:基于加速度計或陀螺儀,這里主要討論基于加速度計的三維鼠標設計。
三維鼠標低功耗設計中,主要實現在鼠標不工作時系統(tǒng)進入睡眠模式,達到功耗最低,并且能夠及時從睡眠中喚醒,進入工作狀態(tài)。因此,在微處理器STM32L152中設置一個3 s定時器,用來掃描鼠標當前狀態(tài)是否符合進入睡眠模式條件。每當定時溢出中斷到來后,采集加速度計Z軸輸出值并持續(xù)0.5 s,采集的當前數據與上一時刻相減得到變化值,判斷其是否大于所設的閾值,并對這些大于閾值的數據進行計數。若計數大于所設閾值,則鼠標仍然保持工作狀態(tài),等待下一次定時中斷到來,此時STM32L152為低功耗運行模式,MPU6050工作模式為加速度計單獨循環(huán)模式;若計數小于所設閾值,則鼠標進入睡眠模式,此時微處理器設置為低功耗睡眠模式,MPU6050的工作模式設置為加速度計Z軸工作,其余軸為Standby待機模式。
3.2MPU6050低功耗設置
(1) MPU6050加速度計單獨循環(huán)工作模式
三維鼠標的MPU6050模塊中的三軸加速度計設置為循環(huán)工作模式,三軸陀螺儀設置為Standby待機模式,此時MPU6050電流消耗500 μA。
MPU6050生產商已經給出了編程所需頭文件mpu6050.h,其將編程中所用到的寄存器都做了定義,如MPU6050_DEFAULT_ADDRESS,在頭文件中對應地址為0xD0或0xD2。
void mpu6050_setCycle(u8 cycleFre){
IICwriteByte(MPU6050_DEFAULT_ADDRESS,MPU6050_RA_PWR_MGMT_2, 0x07);
//三軸加速度計工作,三軸陀螺儀Standby
IICwriteByte(MPU6050_DEFAULT_ADDRESS,MPU6050_RA_PWR_MGMT_1, 0x28);
//開啟加速度計循環(huán),關閉溫度傳感器,時鐘設置為內部8 MHz
//晶振
IICwriteBits(MPU6050_DEFAULT_ADDRESS,MPU6050_RA_PWR_MGMT_2,MPU6050_PWR2_LP_WAKE_CTRL_BIT,MPU6050_PWR2_LP_WAKE_CTRL_LENGTH, cycleFre);
//設置循環(huán)模式頻率:0x00為1.25 Hz;
//0x01為5 Hz;0x02為20 Hz;0x03為40 Hz
}
(2) MPU6050其他工作模式配置
MPU6050睡眠模式:電源管理1寄存器PWR_MGMT_1設置為0x40。此時加速度和陀螺儀傳感器都進入Standby待機模式,陀螺儀輸出值為0,加速度傳感器輸出一個固定值,MPU6050電流消耗為5 μA。
MPU6050陀螺儀單獨運行模式:電源管理1寄存器PWR_MGMT_1設置為0x0C,電源管理2寄存器PWR_MGMT_2設置為0x38。此時只有陀螺儀傳感器工作,加速度計進入Standby待機模式,輸出為一個固定值,MPU6050電流消耗為3.6 mA。
3.3STM32L152低功耗設置
(1) STM32L152低功耗運行工作模式
void low_power_run_mode (void){
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|……, DISABLE);
//配置各個外設時鐘使能開啟或關閉
PWR_VoltageScalingConfig(PWR_VoltageScaling_Range2);
while(PWR_GetFlagStatus(PWR_FLAG_VOS)!= RESET){}
//設置電源管理器為range2
lowPowerRun_clock();
//設置匹配的工作頻率
PWR_EnterLowPowerRunMode(ENABLE);
while(PWR_GetFlagStatus(PWR_FLAG_REGLP)== RESET) ;
}
//LPSDSRLPRUN置1,進入低功耗運行模式
(2) STM32L152低功耗睡眠工作模式
void low_power_sleep (void){
low_power_run_mode (void);
NVIC_SystemLPConfig(NVIC_LP_SEVONPEND,DISABLE);
NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,DISABLE);
//關閉深睡眠模式
NVIC_SystemLPConfig(NVIC_LP_SLEEPONEXIT,DISABLE);
//進入睡眠方式為sleep-now
PWR_EnterSleepMode(PWR_Regulator_LowPower,PWR_SLEEPEntry_WFI);
//進入睡眠模式
}
注意,一般睡眠函數放置在while循環(huán)最后執(zhí)行,在其他任務跑完后進入睡眠模式,待中斷到來時喚醒。
(3) STM32L152低功耗模式參數
低功耗睡眠模式:當靜止不動時,三維鼠標會進入不工作狀態(tài)。此時只有微處理器中的3 s定時掃描MPU6050加速度計Z軸動作的定時器在工作,在1.8 V或3 V電壓下,微處理器功耗為6.1 μA。
低功耗運行模式:三維鼠標進行旋轉或位移動作時,進入工作狀態(tài),此時STM32L152處于低功耗運行模式,主頻設置為16 MHz。關閉所有無關的外設,其電流消耗在500 μA左右。
3.4鼠標工作狀態(tài)及睡眠狀態(tài)下的總功耗
鼠標正常工作狀態(tài):STM32L152工作在低功耗運行模式,MPU6050工作在加速度計單獨循環(huán)模式,電流消耗在1.2 mA左右。
鼠標睡眠狀態(tài):STM32L152工作在睡眠模式(定時器中斷喚醒),MPU6050只有加速度計Z軸工作,電流消耗在200 μA左右。
3.5三維鼠標算法實現
三軸加速度計精度在出廠時便存在工藝誤差,制成MPU6050模塊后還存在安裝誤差等,所以大多數情況下加速度計所測得的值與真實值有所差別,需要進行加速度計標定過程。
(1) 加速度計標定方法
標定模型:ai=Kiui+Bi,i=x、y、z,其中ai為加速度計真值,ki為測量斜率,ui為測量值,Bi為零偏。
取多個靜態(tài)位置的加速度計測量值,當三軸加速度計靜止時,有如下狀態(tài)關系式:
g為當地重力加速度值。將標定模型代入狀態(tài)關系式,并作相關變量代換[4],可得表達式:
其中,pi是與測量斜率ki和零偏bi有關的替換變量。
本文測量20組不同位置的加速度計測量值,并除以對應的系數轉換成以g為單位,分別求取每組中各軸的均值和平方值,代入上式中求出最小二乘解,接著求出標定參數中的斜率和零偏。
(2) MPU6050加速度計不同量程標定及結果
MPU6050加速度計有4種量程,分別是±2g、±4g、±8g、±16g,并且傳感器輸出單位分別是16 384 LSB/g、8 192 LSB/g、4 096 LSB/g、2 048 LSB/g,表1給出了±2g、±4g量程標定結果,當地重力加速度取值為9.8。
表1 MPU6050加速度計Ki、Bi標定結果
當量程選取±2g時,通過下式計算加速度值:
ai=9.8 Kiui/16 384+Bi
當量程選取±4g時,通過下式計算加速度值:
ai=9.8 Kiui/8 192+Bi
(3) 姿態(tài)角計算
俯仰角pitch和橫滾角roll的計算公式:
pitch=arcsin(-ay),roll=arctan(-ax/az)
三軸加速度計只有在靜止或勻速運動下,加速度測量合成矢量與重力矢量重合時,才能準確測量姿態(tài)角。在測量精度要求不高的情況下,可以通過放寬對合成矢量的要求,獲得姿態(tài)角連續(xù)測量。圖5(a)、圖5(b)以橫滾角為例,給出了不同閾值情況下的計算結果,其中黑點和細線分別為滿足于測量閾值條件時的橫滾角度計算值,可見對于三維鼠標,使用0.15g的閾值,能夠滿足連續(xù)測量的要求??煽啃耘卸l件如下:
圖5 不同閾值橫滾角的計算結果
(4) 三維鼠標在屏幕上坐標映射計算
三維鼠標在屏幕上坐標映射的兩種計算方式為:
① 旋轉角度判定方向、角度變化映射成坐標位置:加速度傳感器計算橫滾、俯仰兩個傾角θ、Ψ,θ角變化表示鼠標在屏幕水平方向移動;Ψ角變化表示在屏幕垂直方向移動。角度變化按一個比例系數轉換為鼠標的位移。
② 旋轉角度判定方向、加速度積分映射光標位移:鼠標光標在屏幕移動方向的判斷同上。對加速度計動作軸的輸出值在時間軸上積分得到位移,從而得到屏幕映射坐標位置。
結語
參考文獻
[1] 陳建新,卜翔,王榮,等.基于MEMS加速度的三維無線鼠標設計與實現[J].無線互聯(lián)科技, 2011(8):22-25.
[2] InvenSense Inc.MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2[EB/OL].[2015-06].http://download.csdn.net/download/peng08303/6320325.
[3] ST Microelectronics.STM32L1xx參考手冊,2013.
[4] 吳越鵬,金愛娟,李少龍.微機電三軸加速度計的無轉臺標定[J].中國科技信息,2012(4):70-71.
陶志成(碩士研究生),主要研究方向為慣性導航系統(tǒng);張海(教授),主要從事導航技術領域和研究智能交通領域工作。
Marvell推出Marvell EZ-Connect MW302 IoT Starter Kit,該套件已獲得“亞馬遜Web服務(AWS)IoT”平臺支持,這款入門套件使設備能夠簡便地連接AWS服務,以便企業(yè)存儲、處理、分析全球范圍內的互連設備所產生的大量數據,并根據分析結果采取行動。Marvell開發(fā)這款AWS IoT支持的入門套件,是為了幫助開發(fā)人員面向各種IoT應用簡便地設計智能設備,包括家庭自動化、家庭安防、個人健康、智能家電、照明、工業(yè)互聯(lián)網以及更多應用。AWS IoT支持的Marvell IoT入門套件采用了Marvell EZ-Connect MW300/302 Wi-Fi微控制器單芯片系統(tǒng)(SoC),已開始向全球供貨。
Marvell公司副總裁、無線與物聯(lián)網業(yè)務部總經理Philip Poulidis表示:“我們與AWS的合作表明,Marvell為加速IoT行業(yè)發(fā)展,一直在致力于最佳解決方案的開發(fā)和創(chuàng)新?,F在,通過Marvell EZ-Connect MW302 IoT Starter Kit,我們的客戶可以利用AWS IoT平臺,為消費者和企業(yè)快速開發(fā)并上市新一輪具備開創(chuàng)性的創(chuàng)新產品和服務?!?/p>
Marvell與AWS合作開發(fā)了Marvell EZ-Connect MW302 IoT Starter Kit,以幫助開發(fā)人員快速產生原型產品,將其連接到AWS IoT平臺,并在此基礎上為消費者和企業(yè)開發(fā)應用和服務。88MW300/302 Wi-Fi微控制器SoC是Marvell EZ-Connect系列的旗艦產品,已經得到全球領先設備制造商的廣泛采用,用來開發(fā)了多種產品,包括家用電器、自動調溫器、一氧化碳/煙霧檢測器、玩具、無線存儲系統(tǒng)、HomeKit配件以及其他智能互連產品。Marvell也與蘋果HomeKit等領先智能家庭平臺及相關廠商建立了合作關系。
Low-power 3D Wireless Mouse Based on MPU6050 and STM32L152
Tao Zhicheng,Zhang Hai
(School of Automation Science and Electrical Engineering,Beihang University,Beijing 100191,China)
Abstract:Based on the motion sensor chip MPU6050 and STM32L152,a low-power 3D mouse is designed,in which the power consumption of the motion detection and processing module is only 1.2 mA.Aiming at the power consumption,the contents of the mouse with low-power need are introduced in detail such as STM32L152 low-power operation,sleep pattern configuration as well as MPU6050 accelerometer single cycle,single axis accelerometer working mode configuration.And the accelerometer calibration and attitude angle calculation method based on the accelerometer are given,then the precise measurement of mouse gestures is achieved.
Key words:STM32L152;MPU6050;3D wireless mouse
收稿日期:(責任編輯:薛士然2015-06-13)
中圖分類號:TP21
文獻標識碼:A