發布日期:2022-10-09 點擊率:68
目前手機集成了多個不同用途的傳感器。最近項目中需要用到加速度傳感器和方向傳感器,故做一下筆記。
加速度傳感器,用于檢測手機運動狀態。
方向傳感器,用于檢測手機方向狀態。
傳感器調用方式:
1、初始化
2、注冊監聽
3、實現OnSensorChange方法,獲取 x,y,z三軸的坐標。
4、使用完畢,記得注銷
需要說明的是,不同手機的傳感器靈敏度不同,而且傳感器的調用是不間斷的,所以使結果更準確,最好是取一段時間內的傳感器變化,為適配大多數手機,需要設定一個閾值或者范圍。
例如調用加速度傳感器,檢測手機搖一搖:
關于方向傳感器坐標軸
z是指向地心的方位角,x軸是仰俯角(由靜止狀態開始前后反轉),y軸是翻轉角(由靜止狀態開始左右反轉)。
方向傳感器結合地磁傳感器可以實現指南針功能。單獨使用,可以檢測手機的方向,例如豎屏橫屏狀態。
其實檢測豎屏橫屏有多種方式,但有些方法會存在適配問題,有些機子不管用,傳感器基本都適用,靈敏度會有差異而已
現在的手機或者其他便攜設備中用到了越來越多的傳感器,什么加速度傳感器,方向傳感器、重力傳感器、陀螺儀、g-sensor、o-sensor等等,這些傳感器到底是干什么用的,各自有什么特點,彼此之間又有什么區分?本文就對他們進行簡單的對比介紹。
1、加速度傳感器
加速度傳感器又叫G-sensor,獲取的是x、y、z三軸的加速度數值。
該數值包含地心引力的影響,單位是m/s^2。
將手機平放在桌面上,x軸默認為0,y軸默認0,z軸默認9.81。
將手機朝下放在桌面上,z軸為-9.81。
加速度傳感器可能是最為成熟的一種mems產品,市場上的加速度傳感器種類很多。手機中常用的加速度傳感器有BOSCH(博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。這些傳感器一般提供±2G至±16G的加速度測量范圍,采用I2C或SPI接口和MCU相連,數據精度小于16bit。
2、磁力傳感器
磁力傳感器簡稱為M-sensor,返回x、y、z三軸的環境磁場數據。
該數值的單位是微特斯拉(micro-Tesla),用uT表示。也可以是高斯(Gauss),1Tesla=Gauss。
硬件上一般沒有獨立的磁力傳感器,磁力數據由電子羅盤傳感器提供(E-compass)。電子羅盤傳感器在提供磁力傳感器數據的同時,還能提供方向傳感器數據。
3、方向傳感器
方向傳感器簡稱為O-sensor,返回三軸的角度數據,方向數據的單位是角度。
如上所述,電子羅盤E-compass在獲取到G-sensor的數據之后,經過計算生產O-sensor數據以及M-sensor數據。
O-sensor提供三個數據,分別為azimuth、pitch和roll。
azimuth:方位,返回水平時磁北極和Y軸的夾角,范圍為0°至360°。0°=北,90°=東,180°=南,270°=西。pitch:x軸和水平面的夾角,范圍為-180°至180°。當z軸向y軸轉動時,角度為正值。roll:y軸和水平面的夾角,由于歷史原因,范圍為-90°至90°。當x軸向z軸移動時,角度為正值。
電子羅盤在獲取正確的數據前需要進行校準,通常可用8字校準法。8字校準法要求用戶使用需要校準的設備在空中做8字晃動,原則上盡量多的讓設備法線方向指向空間的所有8個象限。
4、陀螺儀傳感器
陀螺儀傳感器叫做Gyro-sensor,返回x、y、z三軸的角加速度數據。
角加速度的單位是radians/second。
根據Nexus S手機實測:
水平逆時針旋轉,Z軸為正。
水平逆時針旋轉,z軸為負。
向左旋轉,y軸為負。
向右旋轉,y軸為正。
向上旋轉,x軸為負。
向下旋轉,x軸為正。
5、重力傳感器
重力傳感器簡稱GV-sensor,輸出重力數據。
在地球上,重力數值為9.8,單位是m/s^2。
坐標系統與加速度傳感器相同。
當設備復位時,重力傳感器的輸出與加速度傳感器相同。
6、線性加速度傳感器
線性加速度傳感器簡稱LA-sensor。
線性加速度傳感器是加速度傳感器減去重力影響獲取的數據。
單位是m/s^2,坐標系統與加速度傳感器相同。
加速度傳感器、重力傳感器和線性加速度傳感器的計算公式如下:
加速度 = 重力 + 線性加速度。
7、旋轉矢量傳感器
旋轉矢量傳感器簡稱RV-sensor。
旋轉矢量代表設備的方向,是一個將坐標軸和角度混合計算得到的數據。
RV-sensor輸出三個數據:
x*sin(theta/2)y*sin(theta/2)z*sin(theta/2)
sin(theta/2)是RV的數量級。
RV的方向與軸旋轉的方向相同。
RV的三個數值,與cos(theta/2)組成一個四元組。
RV的數據沒有單位,使用的坐標系與加速度相同。
舉例:
sensors_event_t.data[0] = xsin(theta/2)
sensors_event_t.data[1] = ysin(theta/2)
sensors_event_t.data[2] = z*sin(theta/2)
sensors_event_t.data[3] = cos(theta/2)
GV、LA和RV的數值沒有物理傳感器可以直接給出,需要G-sensor、O-sensor和Gyro-sensor經過算法計算后得出。
摘要:
[問題]提供一種能夠自動地判定搭載于車輛的加速度傳感器的方向的,加速度傳感器的安裝方向判定裝置和安裝方向判定方法.[解決手段]該安裝方向判定裝置判定加速度傳感器相對于車輛安裝的安裝方向,所述加速度傳感器能夠檢測第一方向上的第一加速度和第二方向上的第二加速度.安裝方向判定部通過將加速度傳感器的實測值與判定基準數據進行比較來判定安裝方向.在判定基準數據中規定了第一加速度和第二加速度的檢測結果與安裝方向的組合.
展開
加速度傳感器是測量加速度的常用電子元器件。它可以用于檢測由于墜落、傾斜、運動、定位、振動和沖擊等產生的力的變化。 安裝加速度傳感器時,有時可能難以確定加速度傳感器的正確傳感軸方向,以下提示應該可以幫助您確定其軸方向。
1)從數據手冊中查找感測方向
例如,ADI公司ADXL344 加速度傳感器的數據手冊中,通過實際元器件的引腳分配顯示封裝中X、Y和Z軸的感測方向。 如果您知道引腳1在哪里,便可以從數據手冊中找到傳感軸在傳感器上的位置。
640.jpg (33.85 KB, 下載次數: 34)
下載附件
保存到相冊
2018-8-30 12:04 上傳
2) 用重力檢查輸出
通常加速度傳感器在感測重力時具有輸出響應,包括地球的重力。
我們可以通過檢查實際芯片在不同方向受到地球重力而產生不同的輸出響應,來識別加速度傳感器上的每個傳感軸方向。
643.jpg (26.67 KB, 下載次數: 39)
下載附件
保存到相冊
2018-8-30 12:10 上傳
圖片來源: AnalogDevice 的MEMS加速度傳感器
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原