和12歲小同志搞創(chuàng)客開發(fā):如何驅(qū)動(dòng)各類型傳感器?
機(jī)緣巧合在網(wǎng)上認(rèn)識(shí)一位12歲小同志,從零開始系統(tǒng)輔導(dǎo)其創(chuàng)客開發(fā)思維和技巧。
項(xiàng)目專欄:https://blog.csdn.net/m0_38106923/category_11097422.html
傳感器檢測現(xiàn)實(shí)物體的狀態(tài)并轉(zhuǎn)換輸出為電信號(hào),這個(gè)電信號(hào)可以是:電壓、電流、脈沖等多樣形式。
根據(jù)這些輸出類型可以將傳感器進(jìn)行分類,主要包括:數(shù)字量輸出類型傳感器、數(shù)字量輸入類型傳感器、模擬量電壓類型傳感器、模擬量電流類型傳感器和協(xié)議類型傳感器。
注:本文側(cè)重應(yīng)用,較為復(fù)雜的驅(qū)動(dòng)原理將會(huì)在之后的項(xiàng)目中講解。
1
數(shù)字量輸出類型傳感器
數(shù)字量輸出類型傳感器輸出高、低電平信號(hào)表示檢測狀態(tài)。例如,人體傳感器當(dāng)有人經(jīng)過時(shí),數(shù)據(jù)端口會(huì)輸出高電平,無人時(shí)輸出低電平。
驅(qū)動(dòng)數(shù)字量輸出類型傳感器,需要將控制器端口配置為數(shù)字輸入模式,檢測傳感器輸出電壓的變化,驅(qū)動(dòng)按鍵元器件也是這樣的原理。
2
數(shù)字量輸入類型傳感器
數(shù)字量輸入類型傳感器需要控制器輸出高、低電平實(shí)現(xiàn)開關(guān)控制。例如:LED燈,控制器輸出3.3V~5V高電平則LED熄滅,控制器輸出低電平則LED點(diǎn)亮。
驅(qū)動(dòng)數(shù)字量輸入類型傳感器,需要將控制器端口配置為數(shù)字輸出模式,輸出滿足驅(qū)動(dòng)能力的高、低電平,即可實(shí)現(xiàn)驅(qū)動(dòng)。
3
模擬量電壓類型傳感器
模擬量電壓類型傳感器會(huì)隨著被檢測物體狀態(tài)變化,輸出規(guī)定范圍內(nèi)的模擬電壓。例如:電容式土壤濕度傳感器,隨著土壤濕度的變化,會(huì)輸出0~3V的電壓,將土壤濕度傳感器插入干燥的沙土,輸出約為3V電壓,插入濕潤的沙土輸出約為1.5V左右電壓,插入非常潮濕輸出約為0V電壓。
驅(qū)動(dòng)模擬量電壓類型傳感器,需要將控制器端口配置為ADC模式,采集傳感器輸出的模擬電壓數(shù)據(jù)。
4
模擬量電流類型傳感器
模擬量電流類型傳感器會(huì)隨著被檢測物體狀態(tài)變化,輸出規(guī)定范圍內(nèi)的模擬電流。例如:4~20mA電流型溫度傳感器,假設(shè)該溫度傳感器檢測溫度范圍為:-200~500℃,則當(dāng)溫度為-200℃時(shí),傳感器輸出電流約為0mA,溫度為500℃時(shí),傳感器輸出電流約為20mA。
需要注意,絕大多數(shù)控制器是無法直接輸入電流信號(hào)的,需要將模擬電流信號(hào)轉(zhuǎn)換為合適范圍的模擬電壓信號(hào),將控制器端口配置為ADC模式,采集傳感器輸出的模擬電壓數(shù)據(jù)。
5
協(xié)議類型傳感器
以上四種類型傳感器可直接采集輸出的電信號(hào),開發(fā)者需要再進(jìn)行轉(zhuǎn)換方可得到感知結(jié)果。
協(xié)議類型傳感器在采集數(shù)據(jù)后,將電信號(hào)直接轉(zhuǎn)換為數(shù)據(jù)結(jié)果,存入寄存器中,開發(fā)者無需自己再編程轉(zhuǎn)換,只需要讀取通信總線,按照相關(guān)協(xié)議訪問寄存器即可讀取結(jié)果。
常用的協(xié)議類型傳感器主要包括:UART通信總線、I2C通信總線、SPI通信總線這三種。
協(xié)議類型傳感器深究較為復(fù)雜,考慮到創(chuàng)客基礎(chǔ)較為薄弱,建議先應(yīng)用實(shí)踐,熟練使用后再深究原理。
5.1、UART通信總線
通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter), 通常稱作UART。UART是一種通用串行數(shù)據(jù)總線,用于異步通信,該總線雙向通信,可以實(shí)現(xiàn)全雙工的發(fā)送和接收。
UART通信需要連接三個(gè)接口,如下所示:
TXD:數(shù)據(jù)發(fā)送端口;
RXD:數(shù)據(jù)接收端口;
GND:電源地。
連線時(shí)需要將控制器TXD、RXD和傳感器TXD、RXD交叉連接,連線效果如下所示:
例如:HuskyLens AI視覺傳感器,基于UART通信,連線效果如下所示:
連線成功后即可使用控制器驅(qū)動(dòng)HuskyLens AI視覺傳感器。
5.2、I2C通信總線
I2C總線(Inter-Integrated Circuit)是一種簡單、雙向二線制同步串行總線,只需要兩根線即可實(shí)現(xiàn)數(shù)據(jù)通信,如下所示:
SDA:串行數(shù)據(jù)線,實(shí)現(xiàn)數(shù)據(jù)通信;
SCL:串行時(shí)鐘線,實(shí)現(xiàn)時(shí)序同步。
連線時(shí)需要將控制器SDA、SCL和傳感器SDA、SCL對(duì)應(yīng)連接,連線效果如下所示:
例如,驅(qū)動(dòng)BH1750環(huán)境光傳感器,需要將控制器SDA、SCL和環(huán)境光傳感器SDA、SCL對(duì)應(yīng)連接。
連線成功后即可使用控制器驅(qū)動(dòng)環(huán)境光傳感器。
5.3、SPI通信總線
SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫。是一種高速的,全雙工,同步的通信總線。它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,需要至少4根線,事實(shí)上3根也可以(單向傳輸時(shí)),如下所示:
SDI/MISO:主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出;
SDO/MOSI:主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入;
SCLK:時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生;
CS/SS:片選,從設(shè)備使能信號(hào),由主設(shè)備控制。
連線時(shí)需要將控制器SDI/MISO、SDO/MOSI、SCLK和傳感器SDI/MISO、SDO/MOSI、SCLK對(duì)應(yīng)連接,主設(shè)備CS/SS和從設(shè)備CS/SS分別對(duì)應(yīng)連接,連線效果如下所示:
例如,驅(qū)動(dòng)ADXL345三軸加速度傳感器,將控制器SDI/MISO、SDO/MOSI、SCLK、CS/SS和三軸加速度傳感器SDI/MISO、SDO/MOSI、SCLK、CS/SS對(duì)應(yīng)連接,連線效果如下所示:
連線成功后即可使用控制器驅(qū)動(dòng)三軸加速度傳感器。
往期推薦

