數(shù)字傳感器
?
數(shù)字
傳感器是指將傳統(tǒng)的
模擬式傳感器經(jīng)過加裝或改造A/D轉(zhuǎn)換模塊,使之輸出
信號為數(shù)字量(或數(shù)字編碼)的傳感器,主要包括:
放大器、A/D
轉(zhuǎn)換器、
微處理器(
CPU)、存儲器、通訊
接口、溫度測試電路等,在微處理器和傳感器變得越來越便宜的今天,全自動或半自動(通過人工指令進行高層次操作,自動處理低層次操作)系統(tǒng)可以包含更多智能性功能,能從其環(huán)境中獲得并處理更多不同的
參數(shù)。
?
特點
?
1、先進的A/D轉(zhuǎn)換技術和
智能濾波
算法,在滿量程的情況下仍可保證輸出碼的穩(wěn)定。
?
2、可行的數(shù)據(jù)存儲技術,保證模塊參數(shù)不會丟失。
?
?
4、傳感器的性能采用數(shù)字化誤差補償技術和高度集成化
電子元件,用軟件實現(xiàn)傳感器的線性、零點、溫漂、蠕變等性能參數(shù)的綜合補償,消除了人為因素對補償?shù)挠绊懀蟠筇岣吡藗鞲衅骶C合精度和可靠性。
?
5、傳感器的輸出一致性誤差可以達到0.02%以內(nèi)甚至更高,傳感器的特性參數(shù)可完全相同,因而具有良好的互換性。
?
6、采用A/D轉(zhuǎn)換電路、數(shù)字化信號傳輸和數(shù)字濾波技術,傳感器的抗干擾能力增加,信號傳輸距離遠,提高了傳感器的穩(wěn)定性。
?
7、數(shù)字傳感器能自動采集數(shù)據(jù)并可預處理、存儲和記憶,具有唯一標記,便于故障診斷。
?
8、傳感器采用標準的數(shù)字通訊接口,可直接連入計算機,也可與標準
工業(yè)控制總線連接,方便靈活。
?
9, 數(shù)字傳感器是將
AD,EP
ROM,DIE(指還未封裝的傳感器
芯片,屬于裸片,大小介于cell和chip之間),封裝在一塊用
PCB,金屬塊或陶瓷板上的集成。通過各種溫度,壓力點的校準,計算出DIE的線性,再利用AD去補償?shù)姆椒庸ざ傻摹?/div>
?
應用及前景
?
在微處理器和傳感器變得越來越便宜的今天,全自動或半自動(通過人工指令進行高層次操作,自動處理低層次操作)系統(tǒng)可以包含更多智能性功能,能從其環(huán)境中獲得并處理更多不同的參數(shù)。尤其是
MEMS(微型機電系統(tǒng))技術,它使數(shù)字傳感器的體積非常微小并且能耗與成本也很低。以納米碳管或其它納米材料制成的納米傳感器同樣具有巨大的潛力 [1] 。
?
即使在萌芽階段,人們?nèi)匀徽J為在不久的將來數(shù)字傳感器對電子市場具有重要的推動作用。制作數(shù)字傳感器的接口以及支持用于數(shù)字傳感器
網(wǎng)絡的形式多樣的通訊協(xié)議都是對技術工藝的巨大挑戰(zhàn)。傳感器的非均質(zhì)特性和其操作條件的多樣化也對技術工藝提出了巨大的挑戰(zhàn)。
?
現(xiàn)在系統(tǒng)設計所包含的傳感器和
處理器越來越多。隨著傳感器和處理器價格的不斷降低,取代
機械控制結構的閾值也在不斷變化。在系統(tǒng)中選擇正確的傳感器組合和處理算法可以顯著地降低原材料及能耗的費用并提高系統(tǒng)的總體性能。目前,不斷提高操作的簡化程度和延長能源的使用壽命變得越來越重要,尤其是如今越來越多的傳感器網(wǎng)絡動輒就配置1000或更多的傳感器節(jié)點。
GY-30數(shù)字光強傳感器通過I2C通信協(xié)議接入Arduino過程中的一些問題和解決方案:
網(wǎng)上流行著兩個版本:
我用版本一的代碼,發(fā)現(xiàn)并不對,串口打印一直顯示光照強度為 0 ,很奇怪,也研究了很久,去 Wire 這個庫文件看了函數(shù)實現(xiàn),后來發(fā)現(xiàn)
Wire.requestFrom(ADDR, 2); // 2byte every time
這一行代碼出現(xiàn)了問題。
這個 requestFrom
網(wǎng)上對它的描述都是:
Wire.requestFrom()
描述:
主設備請求從設備一個字節(jié),這個字節(jié)可以被主設備用 read()或available()接受。
Wire.requrstFrom(addtess,quantity)
Wire.requrstFrom(addtess,quantity,stop)
參數(shù) :
addtess : 7位的器件地址
quantity : 請求得到的數(shù)量 stop :布爾形,‘1’
則在請求結束后發(fā)送一個停止命令,并釋放總線。‘0’則繼續(xù)發(fā)送請求保持連接。
返回:
字節(jié)形 ,從從機接受到的字節(jié)數(shù)目。
然而并沒有提,要用 requestFrom 前后必須要加:
Wire.beginTransmission(ADDR);
Wire.endTransmission();
這兩句,分別為開始一次傳輸數(shù)據(jù),和結束一次傳輸。
也就是將 requestFrom 這行代碼改為以下,即可完成從設備向主設備發(fā)送數(shù)據(jù)
在這里也就是 gy30(從設備) 向 arduino 板(主設備)傳輸光強度的采集量
Wire.beginTransmission(ADDR);
Wire.requestFrom(ADDR, 2);
Wire.endTransmission();