您好,歡迎來電子發(fā)燒友網! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網>電子元器件>傳感器>

淺談傳感器開發(fā)流程

2018年09月24日 10:20 作者:工程師譚軍 用戶評論(0
關鍵字:傳感器(728523)
  傳感器
?
  傳感器(英文名稱:transducer/sensor)是一種檢測裝置,能感受到被測量的信息,并能將感受到的信息,按一定規(guī)律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求。
?
  傳感器的特點包括:微型化、數字化、智能化、多功能化、系統(tǒng)化、網絡化。它是實現(xiàn)自動檢測和自動控制的首要環(huán)節(jié)。傳感器的存在和發(fā)展,讓物體有了觸覺、味覺和嗅覺等感官,讓物體慢慢變得活了起來。通常根據其基本感知功能分為熱敏元件、光敏元件、氣敏元件、力敏元件、磁敏元件、濕敏元件、聲敏元件、放射線敏感元件、色敏元件和味敏元件等十大類。
?
  主要作用
?
  人們?yōu)榱藦耐饨绔@取信息,必須借助于感覺器官。
?
  而單靠人們自身的感覺器官,在研究自然現(xiàn)象和規(guī)律以及生產活動中它們的功能就遠遠不夠了。為適應這種情況,就需要傳感器。因此可以說,傳感器是人類五官的延長,又稱之為電五官。
?
  新技術革命的到來,世界開始進入信息時代。在利用信息的過程中,首先要解決的就是要獲取準確可靠的信息,而傳感器是獲取自然和生產領域中信息的主要途徑與手段。
?
  在現(xiàn)代工業(yè)生產尤其是自動化生產過程中,要用各種傳感器來監(jiān)視和控制生產過程中的各個參數,使設備工作在正常狀態(tài)或最佳狀態(tài),并使產品達到最好的質量。因此可以說,沒有眾多的優(yōu)良的傳感器,現(xiàn)代化生產也就失去了基礎。
?
  在基礎學科研究中,傳感器更具有突出的地位?,F(xiàn)代科學技術的發(fā)展,進入了許多新領域:例如在宏觀上要觀察上千光年的茫茫宇宙,微觀上要觀察小到fm的粒子世界,縱向上要觀察長達數十萬年的天體演化,短到 s的瞬間反應。此外,還出現(xiàn)了對深化物質認識、開拓新能源、新材料等具有重要作用的各種極端技術研究,如超高溫、超低溫、超高壓、超高真空、超強磁場、超弱磁場等等。顯然,要獲取大量人類感官無法直接獲取的信息,沒有相適應的傳感器是不可能的。許多基礎科學研究的障礙,首先就在于對象信息的獲取存在困難,而一些新機理和高靈敏度的檢測傳感器的出現(xiàn),往往會導致該領域內的突破。一些傳感器的發(fā)展,往往是一些邊緣學科開發(fā)的先驅。
?
  傳感器早已滲透到諸如工業(yè)生產、宇宙開發(fā)、海洋探測、環(huán)境保護、資源調查、醫(yī)學診斷、生物工程、甚至文物保護等等極其之泛的領域??梢院敛豢鋸埖卣f,從茫茫的太空,到浩瀚的海洋,以至各種復雜的工程系統(tǒng),幾乎每一個現(xiàn)代化項目,都離不開各種各樣的傳感器。
?
  由此可見,傳感器技術在發(fā)展經濟、推動社會進步方面的重要作用,是十分明顯的。世界各國都十分重視這一領域的發(fā)展。相信不久的將來,傳感器技術將會出現(xiàn)一個飛躍,達到與其重要地位相稱的新水平。
?
  主要特點
?
  傳感器的特點包括:微型化、數字化、智能化、多功能化、系統(tǒng)化、網絡化,它不僅促進了傳統(tǒng)產業(yè)的改造和更新?lián)Q代,而且還可能建立新型工業(yè),從而成為21世紀新的經濟增長點。微型化是建立在微電子機械系統(tǒng)(MEMS)技術基礎上的,已成功應用在硅器件上做成硅壓力傳感器。
?
  傳感器的組成
?
  傳感器一般由敏感元件、轉換元件、變換電路和輔助電源四部分組成。
?
  敏感元件直接感受被測量,并輸出與被測量有確定關系的物理量信號;轉換元件將敏感元件輸出的物理量信號轉換為電信號;變換電路負責對轉換元件輸出的電信號進行放大調制;轉換元件和變換電路一般還需要輔助電源供電
?
  主要功能
?
  常將傳感器的功能與人類5大感覺器官相比擬:
?
  光敏傳感器——視覺
?
  聲敏傳感器——聽覺
?
  氣敏傳感器——嗅覺
?
  化學傳感器——味覺
?
  壓敏、溫敏、
?
  流體傳感器——觸覺
?
  敏感元件的分類:
?
  物理類,基于力、熱、光、電、磁和聲等物理效應。
?
  化學類,基于化學反應的原理。
?
  生物類,基于酶、抗體、和激素等分子識別功能。
?
  通常據其基本感知功能可分為熱敏元件、光敏元件、氣敏元件、力敏元件、磁敏元件、濕敏元件、聲敏元件、放射線敏感元件、色敏元件和味敏元件等十大類(還有人曾將敏感元件分46類)。

  了解安卓傳感器主要分為三種

  動作傳感器:加速傳感器,重力傳感器,陀螺儀傳感器,旋轉向量傳感器

  環(huán)境傳感器,光線傳感器,溫度傳感器(據說還有大氣壓傳感器)

  位置傳感器:方向傳感器,磁場傳感器

  其中這些傳感器又分為硬件傳感器和軟件傳感器!所謂硬件傳感器就是純粹基于手機硬件獲取的數據

  而軟件傳感器并不是真實存在,而是基于硬件傳感器基于一系列算法產生的偽傳感器,比如方向傳感器就是基于距離傳感器和磁場傳感器經過這兩個傳感器一系列算法得出!

  在安卓開發(fā)中,已經提供了傳感器的API就是

  1 SensorManager類,該類是用來注冊,監(jiān)聽,銷毀監(jiān)聽器的方法,以及獲取傳感器數量種類精度等方法

  2 Sensor類是提供了傳感器的信息比如傳感器的類型,版本,制造商等等比如常見的SensorType類型

  序號傳感器Sensor類中定義的TYPE常量

  1加速度傳感器TYPE_ACCELEROMETER

  2溫度傳感器TYPE_AMBIENT_TEMPERATURE

  3陀螺儀傳感器TYPE_GYROSCOPE

  4光線傳感器TYPE_LIGHT

  5磁場傳感器TYPE_MAGNETIC_FIELD

  6壓力傳感器TYPE_PRESSURE

  7臨近傳感器TYPE_PROXIMITY

  8濕度傳感器TYPE_RELATIVE_HUMIDITY

  9方向傳感器TYPE_ORIENTATION

  10重力傳感器TYPE_GRAVITY

  11線性加速傳感器TYPE_LINEAR_ACCELERATION

  12旋轉向量傳感器TYPE_ROTATION_VECTOR

  3 SensorEventListener接口,主要就是傳感器開發(fā)的監(jiān)聽回調,傳感器的數值發(fā)生變化時就會調用這個方法

  4 SensorEvent類是回調監(jiān)聽的參數,主要封裝了傳感器的監(jiān)聽數值(以數組形式存在)

  這個就是傳感器開發(fā)會用到的主要API,話說查了不少資料。..

  待會后面的一些內容是我這次項目開發(fā)用不到的,但是為了考慮以后會遇上,我就一并記錄在這里了,這樣之后在進行傳感器開發(fā),我不用再去查資料了,直接看我這篇帖子就囊括了大部分的資料

  然后是我們要確定傳感器的開發(fā)流程

  1創(chuàng)建傳感器管理類,

  mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);

  2選擇項目開發(fā)中會遇到的傳感器(最好打印出列表看手機支持那些傳感器,主要用來看手機支持那些傳感器,實際開發(fā)不需要這行代碼)

  List《Sensor》 sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL);//主要用來看看手機支持哪些傳感器,可以不寫

  3注冊你要監(jiān)聽的傳感器監(jiān)聽器,實現(xiàn)監(jiān)聽方法

  我的項目經過我的測試實際用到的是方向傳感器

  //方向傳感器

  mSensorManager.registerListener(this,

  mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),

  SensorManager.SENSOR_DELAY_UI);

  這里要注意了,要為了用戶負責,注冊了就要反注冊,否則傳感器可是耗電大戶,我們一般在onResume注冊監(jiān)聽,在onPause進行解綁

  mSensorManager.unregisterListener(this);

  這里介紹下監(jiān)聽器的三個參數

  registerListener(參數一,參數二,參數三)

  參數一就是監(jiān)聽回調對象,實現(xiàn)這個接口,編譯器會自動復寫這兩個方法,我們下面再介紹這兩個方法

  參數二你需要監(jiān)聽的傳感器類型

  參數三 傳感器獲取數值的模式,你可以理解成傳感器監(jiān)聽周圍變化塊慢,這個參數是一個常量,一般有四種

  SENSOR_DELAY_FASTEST 最快,耗電大戶 ,監(jiān)聽的越快耗電量越大,這種模式一般不建議使用,因為監(jiān)聽周圍大量的數據,算法如果不好將會影響游戲邏輯以及UI性能

  SENSOR_DELAY_GAME 一般用來開發(fā)游戲,用于實行性較高的游戲比如一些賽車游戲,游戲開發(fā)建議用這個模式

  SENSOR_DELAY_NORMAL 默認的平率,對于一般的益智類游戲使用,比如根據重力來調整小球進洞的小游戲,如果這個模式應用在賽車游戲上,采樣率太低會導致跳幀

  SENSOR_DELAY_UI 根據傳感器更新UI,我們一般根據傳感器的值變化用來繪制我們相應的UI,延遲一點反而好不用平凡的繪制UI造成性能浪費

  4 開始考慮傳感器采集的數據以及算法邏輯了,以上三步全是模板代碼,第四步才是傳感器開發(fā)的核心!

  首先要知道不同的傳感器返回的采樣數據是不同的,如下

  4-1加速度傳感器

  加速度傳感器又叫G-sensor,返回x、y、z三軸的加速度數值。

  該數值包含地心引力的影響,單位是m/s^2。

  將手機平放在桌面上,x軸默認為0,y軸默認0,z軸默認9.81。

  將手機朝下放在桌面上,z軸為-9.81。

  將手機向左傾斜,x軸為正值。

  將手機向右傾斜,x軸為負值。

  將手機向上傾斜,y軸為負值。

  將手機向下傾斜,y軸為正值。

  加速度傳感器可能是最為成熟的一種mems產品,市場上的加速度傳感器種類很多。

  手機中常用的加速度傳感器有BOSCH博世)的BMA系列,AMK的897X系列,ST的LIS3X系列等。

  這些傳感器一般提供±2G至±16G的加速度測量范圍,采用I2C或SPI接口和MCU相連,數據精度小于16bit。

  4-2 磁力傳感器

  磁力傳感器簡稱為M-sensor,返回x、y、z三軸的環(huán)境磁場數據。

  該數值的單位是微特斯拉(micro-Tesla),用uT表示。

  單位也可以是高斯(Gauss),1Tesla=10000Gauss。

  硬件上一般沒有獨立的磁力傳感器,磁力數據由電子羅盤傳感器提供(E-compass)。

  電子羅盤傳感器同時提供下文的方向傳感器數據。

  4-3 方向傳感器

  方向傳感器簡稱為O-sensor,返回三軸的角度數據,方向數據的單位是角度。

  為了得到精確的角度數據,E-compass需要獲取G-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個象限。

  手機中使用的電子羅盤芯片有AKM公司的897X系列,ST公司的LSM系列以及雅馬哈公司等等。

  由于需要讀取G-sensor數據并計算出M-sensor和O-sensor數據,

  因此廠商一般會提供一個后臺daemon來完成工作,電子羅盤算法一般是公司私有產權。

  4-4 陀螺儀傳感器

  陀螺儀傳感器叫做Gyro-sensor,返回x、y、z三軸的角加速度數據。

  角加速度的單位是radians/second。

  根據Nexus S手機實測:

  水平逆時針旋轉,Z軸為正。

  水平逆時針旋轉,z軸為負。

  向左旋轉,y軸為負。

  向右旋轉,y軸為正。

  向上旋轉,x軸為負。

  向下旋轉,x軸為正。

  ST的L3G系列的陀螺儀傳感器比較流行,iphone4和google的nexus s中使用該種傳感器。

  4-5 光線感應傳感器

  光線感應傳感器檢測實時的光線強度,光強單位是lux,其物理意義是照射到單位面積上的光通量。

  光線感應傳感器主要用于Android系統(tǒng)的LCD自動亮度功能。

  可以根據采樣到的光強數值實時調整LCD的亮度。

  4-6 壓力傳感器

  壓力傳感器返回當前的壓強,單位是百帕斯卡hectopascal(hPa)。

  4-7 溫度傳感器

  溫度傳感器返回當前的溫度。

  4-8 接近傳感器

  接近傳感器檢測物體與手機的距離,單位是厘米。

  一些接近傳感器只能返回遠和近兩個狀態(tài),

  因此,接近傳感器將最大距離返回遠狀態(tài),小于最大距離返回近狀態(tài)。

  接近傳感器可用于接聽電話時自動關閉LCD屏幕以節(jié)省電量。

  一些芯片集成了接近傳感器和光線傳感器兩者功能。

  下面三個傳感器是Android2新提出的傳感器類型,目前還不太清楚有哪些應用程序使用。

  4-9 重力傳感器

  重力傳感器簡稱GV-sensor,輸出重力數據。

  在地球上,重力數值為9.8,單位是m/s^2。

  坐標系統(tǒng)與加速度傳感器相同。

  當設備復位時,重力傳感器的輸出與加速度傳感器相同。

  4-10 線性加速度傳感器

  線性加速度傳感器簡稱LA-sensor。

  線性加速度傳感器是加速度傳感器減去重力影響獲取的數據。

  單位是m/s^2,坐標系統(tǒng)與加速度傳感器相同。

  加速度傳感器、重力傳感器和線性加速度傳感器的計算公式如下:

  加速度 = 重力 + 線性加速度

  4-11 旋轉矢量傳感器

  旋轉矢量傳感器簡稱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] = x*sin(theta/2)

  sensors_event_t.data[1] = y*sin(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經過算法計算后得出。

  算法一般是傳感器公司的私有產權。

  看到了吧,不同的傳感器,返回的數值單位不僅不一樣,就連返回值的數量也不同,所以業(yè)務邏輯算法差距都是非常大的,既然說到了X,Y,Z的正負值,就不得不說手機的坐標系了

  X Y Z分別對應values[0]到[2](監(jiān)聽回調返回的數組)

  這里對傳感器舉下例子

  加速度感應檢測——Accelerometer

  Accelerometer Sensor測量的是所有施加在設備上的力所產生的加速度的負值(包括重力加速度)。加速度所使用的單位是m/sec^2,數值是加速度的負值。

  SensorEvent.values[0]:加速度在X軸的負值

  SensorEvent.values[1]:加速度在Y軸的負值

  SensorEvent.values[2]:加速度在Z軸的負值

  例如:

  當手機Z軸朝上平放在桌面上,并且從左到右推動手機,此時X軸上的加速度是正數。

  當手機Z軸朝上靜止放在桌面上,此時Z軸的加速度是+9.81m/sec^2。

  當手機從空中自由落體,此時加速度是0

  當手機向上以Am/sec^2的加速度向空中拋出,此時加速度是A+9.81m/sec^2

  重力加速度感應檢測——Gravity

  重力加速度,其單位是m/sec^2,其坐標系與Accelerometer使用的一致。當手機靜止時,gravity的值和Accelerometer的值是一致的。

  線性加速度感應檢測——Linear-Acceleration

  Accelerometer、Gravity和Linear-Acceleration三者的關系如下公式:

  accelerometer = gravity + linear-acceleration

  地磁場感應檢測——Magnetic-field

  地磁場的單位是micro-Tesla(uT),檢測的是X、Y、Z軸上的絕對地磁場。

  陀螺儀感應檢測——Gyroscope

  陀螺儀的單位是弧度/秒,測量的是物體分別圍繞X,Y,Z軸旋轉的角速度。它的坐標系與加速度傳感器的坐標系相同。逆時針方向旋轉的角度正的。也就是說,如果設備逆時針旋轉,觀察者向X,Y,Z軸的正方向看去,就報告設備是正轉的。請注意,這是標準的正旋轉的數學定義。

  光線感應檢測——Light

  values[0]:表示環(huán)境光照的水平,單位是SI lux。

  位置逼近感應檢測——Proximity

  values[0]:逼近的距離,單位是厘米(cm)。有一些傳感器只能支持近和遠兩種狀態(tài),這種情況下,傳感器必須報告它在遠狀態(tài)下的maximum_range值和在近狀態(tài)下的小值。

  旋轉矢量感應檢測——Rotation Vector

  旋轉向量是用來表示設備的方向,它是由角度和軸組成,就是設備圍繞x,y,z軸之一旋轉θ角度。旋轉向量的三個要素是,這樣旋轉向量的大小等于sin(θ/2),旋轉向量的方向等于旋轉軸的方向。

  values[0]: x*sin(θ/2)

  values[1]: y*sin(θ/2)

  values[2]: z*sin(θ/2)

  values[3]: cos(θ/2) (optional: only if value.length = 4)

  方向感應檢測——Orientation

  其單位是角度

  values[0]: Azimuth(方位),地磁北方向與y軸的角度,圍繞z軸旋轉(0到359)。0=North, 90=East, 180=South, 270=West

  values[1]: Pitch(俯仰),圍繞X軸旋轉(-180 to 180), 當Z軸向Y軸運動時是正值

  values[2]: Roll(滾),圍繞Y軸旋轉(-90 to 90),當X軸向Z軸運動時是正值


非常好我支持^.^

(12) 92.3%

不好我反對

(1) 7.7%

( 發(fā)表人:金巧 )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關規(guī)定!

      ?