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

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

詳解Arduino GY-30數(shù)字光強(qiáng)傳感器應(yīng)用

2018年10月07日 11:45 網(wǎng)絡(luò)整理 作者:工程師譚軍 用戶評論(0
  數(shù)字傳感器
?
  數(shù)字傳感器是指將傳統(tǒng)的模擬式傳感器經(jīng)過加裝或改造A/D轉(zhuǎn)換模塊,使之輸出信號為數(shù)字量(或數(shù)字編碼)的傳感器,主要包括:放大器、A/D轉(zhuǎn)換器微處理器CPU)、存儲器、通訊接口、溫度測試電路等,在微處理器和傳感器變得越來越便宜的今天,全自動或半自動(通過人工指令進(jìn)行高層次操作,自動處理低層次操作)系統(tǒng)可以包含更多智能性功能,能從其環(huán)境中獲得并處理更多不同的參數(shù)。
?
  特點
?
  1、先進(jìn)的A/D轉(zhuǎn)換技術(shù)和智能濾波算法,在滿量程的情況下仍可保證輸出碼的穩(wěn)定。
?
  2、可行的數(shù)據(jù)存儲技術(shù),保證模塊參數(shù)不會丟失。
?
  3、良好的電磁兼容性能。
?
  4、傳感器的性能采用數(shù)字化誤差補(bǔ)償技術(shù)和高度集成化電子元件,用軟件實現(xiàn)傳感器的線性、零點、溫漂、蠕變等性能參數(shù)的綜合補(bǔ)償,消除了人為因素對補(bǔ)償?shù)挠绊?,大大提高了傳感器綜合精度和可靠性。
?
  5、傳感器的輸出一致性誤差可以達(dá)到0.02%以內(nèi)甚至更高,傳感器的特性參數(shù)可完全相同,因而具有良好的互換性。
?
  6、采用A/D轉(zhuǎn)換電路、數(shù)字化信號傳輸和數(shù)字濾波技術(shù),傳感器的抗干擾能力增加,信號傳輸距離遠(yuǎn),提高了傳感器的穩(wěn)定性。
?
  7、數(shù)字傳感器能自動采集數(shù)據(jù)并可預(yù)處理、存儲和記憶,具有唯一標(biāo)記,便于故障診斷。
?
  8、傳感器采用標(biāo)準(zhǔn)的數(shù)字通訊接口,可直接連入計算機(jī),也可與標(biāo)準(zhǔn)工業(yè)控制總線連接,方便靈活。
?
  9, 數(shù)字傳感器是將AD,EPROM,DIE(指還未封裝的傳感器芯片,屬于裸片,大小介于cell和chip之間),封裝在一塊用PCB,金屬塊或陶瓷板上的集成。通過各種溫度,壓力點的校準(zhǔn),計算出DIE的線性,再利用AD去補(bǔ)償?shù)姆椒庸ざ傻摹?/div>
?
  應(yīng)用及前景
?
  在微處理器和傳感器變得越來越便宜的今天,全自動或半自動(通過人工指令進(jìn)行高層次操作,自動處理低層次操作)系統(tǒng)可以包含更多智能性功能,能從其環(huán)境中獲得并處理更多不同的參數(shù)。尤其是MEMS(微型機(jī)電系統(tǒng))技術(shù),它使數(shù)字傳感器的體積非常微小并且能耗與成本也很低。以納米碳管或其它納米材料制成的納米傳感器同樣具有巨大的潛力 [1] 。
?
  即使在萌芽階段,人們?nèi)匀徽J(rèn)為在不久的將來數(shù)字傳感器對電子市場具有重要的推動作用。制作數(shù)字傳感器的接口以及支持用于數(shù)字傳感器網(wǎng)絡(luò)的形式多樣的通訊協(xié)議都是對技術(shù)工藝的巨大挑戰(zhàn)。傳感器的非均質(zhì)特性和其操作條件的多樣化也對技術(shù)工藝提出了巨大的挑戰(zhàn)。
?
  現(xiàn)在系統(tǒng)設(shè)計所包含的傳感器和處理器越來越多。隨著傳感器和處理器價格的不斷降低,取代機(jī)械控制結(jié)構(gòu)的閾值也在不斷變化。在系統(tǒng)中選擇正確的傳感器組合和處理算法可以顯著地降低原材料及能耗的費用并提高系統(tǒng)的總體性能。目前,不斷提高操作的簡化程度和延長能源的使用壽命變得越來越重要,尤其是如今越來越多的傳感器網(wǎng)絡(luò)動輒就配置1000或更多的傳感器節(jié)點。

  GY-30數(shù)字光強(qiáng)傳感器通過I2C通信協(xié)議接入Arduino過程中的一些問題和解決方案:

  網(wǎng)上流行著兩個版本:

  我用版本一的代碼,發(fā)現(xiàn)并不對,串口打印一直顯示光照強(qiáng)度為 0 ,很奇怪,也研究了很久,去 Wire 這個庫文件看了函數(shù)實現(xiàn),后來發(fā)現(xiàn)

  Wire.requestFrom(ADDR, 2); // 2byte every time

  這一行代碼出現(xiàn)了問題。

  這個 requestFrom

  網(wǎng)上對它的描述都是:

  Wire.requestFrom()

  描述:

  主設(shè)備請求從設(shè)備一個字節(jié),這個字節(jié)可以被主設(shè)備用 read()或available()接受。

  Wire.requrstFrom(addtess,quantity)

  Wire.requrstFrom(addtess,quantity,stop)

  參數(shù) :

  addtess : 7位的器件地址

  quantity : 請求得到的數(shù)量 stop :布爾形,‘1’

  則在請求結(jié)束后發(fā)送一個停止命令,并釋放總線?!?’則繼續(xù)發(fā)送請求保持連接。

  返回:

  字節(jié)形 ,從從機(jī)接受到的字節(jié)數(shù)目。

  然而并沒有提,要用 requestFrom 前后必須要加:

  Wire.beginTransmission(ADDR);

  Wire.endTransmission();

  這兩句,分別為開始一次傳輸數(shù)據(jù),和結(jié)束一次傳輸。

  也就是將 requestFrom 這行代碼改為以下,即可完成從設(shè)備向主設(shè)備發(fā)送數(shù)據(jù)

  在這里也就是 gy30(從設(shè)備) 向 arduino 板(主設(shè)備)傳輸光強(qiáng)度的采集量

  Wire.beginTransmission(ADDR);

  Wire.requestFrom(ADDR, 2);

  Wire.endTransmission();


非常好我支持^.^

(6) 85.7%

不好我反對

(1) 14.3%

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

      發(fā)表評論

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

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

      ?