11.1 實驗簡介
11.1.1 溫度采集方案概述
本實驗采用三種方式來獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本上DHT22比較高,所以實驗僅使用DHT11,DS18B20和內(nèi)部溫度傳感器進行。
11.1.2 單線協(xié)議
單總線協(xié)議是美國的達拉斯公司推出的一款總線通信協(xié)議,所謂單線協(xié)議,就是通過一根線傳輸所有的數(shù)據(jù),通俗地講就是根據(jù)低電平的時間來判斷總線上的數(shù)據(jù)是0還是1,比如拉低總線10us,就認為發(fā)送的是1,拉低總線50us,就認為發(fā)送的是0,單總線協(xié)議中,有3種時序,即寫時序,讀時序和檢測時序。我們在51單片機開發(fā)中已經(jīng)嘗試用51單片機通過單總線協(xié)議讀取DS18B20的溫度值,故這里不再詳細描述協(xié)議的具體內(nèi)容。
11.2 傳感器介紹
11.2.1 內(nèi)部溫度傳感器
STM32F103有一個內(nèi)部溫度傳感器,可以用于測量CPU以及周圍的溫度,這個溫度傳感器在內(nèi)部和ADC模塊的通道16相連,這個通道用于將傳感器輸出的電壓值轉(zhuǎn)換為數(shù)字編碼,根據(jù)手冊得到推薦的采樣時間是17.1us,STM32內(nèi)部溫度傳感器支持的溫度范圍為-40~+125℃,精度在±1.5℃左右。
根據(jù)手冊提供的電壓與溫度轉(zhuǎn)換公式如下所示。
其中V25代表傳感器在25℃時候的數(shù)值,典型值為1.43
K代表溫度與Vsense曲線的平均斜率,典型值為4.3mV/℃
Vsense代表實際溫度傳感器輸出的數(shù)值。
通過上面的公式,我們就可以方便地計算出當(dāng)前的實際溫度。
11.2.2 DS18B20溫度傳感器
DS18B20是一款測溫范圍在-55~+125℃,精度在±0.5℃的高精度數(shù)字式溫度傳感器,可以通過單線接口直接讀取出被測物體的溫度,測溫精度可以通過編程實現(xiàn),工作電壓3~5.5V。值得一提的是,DS18B20內(nèi)部具有64位序列號是出廠就被設(shè)定的,每一個DS18B20的序列號均不相同,其中前8位是產(chǎn)品家族碼,中間48位是序列號,最后8位是CEC校驗碼,這就可以實現(xiàn)1根總線上掛接多個DS18B20。
(1)復(fù)位與應(yīng)答脈沖
單總線上的所有通信都是以初始化序列開始。主機輸出低電平,保持低電平時間至少480us,以產(chǎn)生復(fù)位脈沖。接著主機釋放總線,4.7K的上拉電阻將單總線拉高,延時15~60us,并進入接收模式。接著從設(shè)備拉低總線60~240us,以產(chǎn)生低電平應(yīng)答脈沖,若為低電平,再延時480us。
(2)寫時序
寫時序包括寫0時序和寫1時序。所有寫時序至少需要60us,且在2次獨立的寫時序之間至少需要1us的恢復(fù)時間,兩種寫時序均起始于主機拉低總線。寫1時序:主機輸出低電平,延時2us,然后釋放總線,延時60us。寫0時序:主機輸出低電平,延時60us,然后釋放總線,延時2us。
(3)讀時序
必須馬上產(chǎn)生讀時序,以便從機能夠傳輸數(shù)據(jù)。所有讀時序至少需要60us,且在2次獨立的讀時序之間至少需要1us的恢復(fù)時間。每個讀時序都由主機發(fā)起,至少拉低總線1us。主機在讀時序期間必須釋放總線,并且在時序起始后的15us之內(nèi)采樣總線狀態(tài)。典型的讀時序過程為:主機輸出低電平延時2us,然后主機轉(zhuǎn)入輸入模式延時12us,然后讀取單總線當(dāng)前的電平,然后延時50us。
(4)DS18B20測溫時序
DS18B20的典型溫度讀取過程為:復(fù)位->發(fā)送跳過ROM讀取命令(0XCC)->發(fā)開始轉(zhuǎn)換命令(0X44)->延時復(fù)位->發(fā)送跳過ROM讀取命令(0XCC)->發(fā)讀存儲器命令(0XBE)->連續(xù)讀出兩個字節(jié)溫度->結(jié)束。
11.2.3 DHT11溫濕度傳感器
DHT11是一款濕溫度一體化的數(shù)字傳感器。該傳感器包括一個電阻式測濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。通過單片機等微處理器簡單的電路連接就能夠?qū)崟r的采集本地濕度和溫度。DHT11與單片機之間能采用簡單的單總線進行通信,僅僅需要一個I/O口。傳感器內(nèi)部濕度和溫度數(shù)據(jù)40Bit的數(shù)據(jù)一次性傳給單片機,數(shù)據(jù)采用校驗和方式進行校驗,有效的保證數(shù)據(jù)傳輸?shù)臏蚀_性。DHT11功耗很低,5V電源電壓下,工作平均最大電流0.5mA。
DHT11的電參數(shù)如下所示。
(1)工作電壓:3.3V~5.5V
(2)工作電流:平均0.5mA
(3)測量范圍:濕度2090%RH,溫度050℃
(4)測量精度:濕度±5%,溫度±2%℃
(5)分辨率:濕度1%,溫度1℃
DHT11數(shù)字式溫濕度傳感器采用單總線數(shù)據(jù)格式。即,單個數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5個字節(jié)組成。數(shù)據(jù)分小數(shù)部分和整數(shù)部分,一次完整的數(shù)據(jù)傳輸為40bit,高位先出。DHT11的數(shù)據(jù)格式為:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗和。其中校驗和數(shù)據(jù)為前四個字節(jié)相加。傳感器數(shù)據(jù)輸出的是未編碼的二進制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間應(yīng)該分開處理。
DHT11的 開始時序 ,即:拉低數(shù)據(jù)線,保持至少18ms,然后拉高數(shù)據(jù)線2040us,然后讀取DHT11的響應(yīng),正常的話,DHT11會拉低數(shù)據(jù)線,保持4050us,作為響應(yīng)信號,然后DHT11拉高數(shù)據(jù)線,保持40~50us后,開始輸出數(shù)據(jù)。
11.3 STM32片內(nèi)ADC簡介
11.3.1 內(nèi)部ADC概述
STM32F103擁有1~3個ADC,這些ADC可以獨立使用,也可以使用雙重模式(提高采樣率)。STM32的ADC是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有18個通道,可測量16個外部和2個內(nèi)部信號源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器中。模擬看門狗特性允許應(yīng)用程序檢測輸入電壓是否超出用戶定義的高/低閥值。STM32F103系列最少都擁有2個ADC,我們選擇的STM32F103ZET包含有3個ADC。
STM32的ADC最大的轉(zhuǎn)換速率為1Mhz,也就是轉(zhuǎn)換時間為1us(在ADCCLK=14M,采樣周期為1.5個ADC時鐘下得到),不要讓ADC的時鐘超過14M,否則將導(dǎo)致結(jié)果準確度下降。STM32將ADC的轉(zhuǎn)換分為2個通道組:規(guī)則通道組和注入通道組。規(guī)則通道相當(dāng)于你正常運行的程序,而注入通道就相當(dāng)于中斷。在程序正常執(zhí)行的時候,中斷是可以打斷執(zhí)行的。同這個類似,注入通道的轉(zhuǎn)換可以打斷規(guī)則通道的轉(zhuǎn)換,在注入通道被轉(zhuǎn)換完成之后,規(guī)則通道才得以繼續(xù)轉(zhuǎn)換。
11.3.2 ADC相關(guān)寄存器
(1)ADC控制寄存器1:ADC_CR1
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | AWDEN | AWDENJ | - | FUALMOD[3:0] | |||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DISCNUM[2:0] | DISCENJ | DISCEN | JAUTO | AWDSGL | SCAN | JEOCIE | AWDIE | EOCIE | AWDCH[4:0] |
Bit 23:在規(guī)則通道上開啟模擬看門狗
0:在規(guī)則通道上禁用模擬看門狗
1:在規(guī)則通道上使用模擬看門狗
Bit 22:在注入通道上開啟模擬看門狗
0:在注入通道上禁用模擬看門狗
1:在注入通道上使用模擬看門狗
Bit 19~Bit16:雙模式選擇
0000:獨立模式
0001:混合的同步規(guī)則+注入同步模式
0010:混合的同步規(guī)則+交替觸發(fā)模式
0011:混合同步注入+快速交叉模式
0100:混合同步注入+慢速交叉模式
0101:注入同步模式
0110:規(guī)則同步模式
0111:快速交叉模式
1000:慢速交叉模式
1001:交替觸發(fā)模式
Bit 15~Bit 13:間斷模式通道計數(shù)
000:1個通道
001:2個通道
……
111:8個通道
Bit 12:在注入通道上的間斷模式
0:注入通道組上禁用間斷模式
1:注入通道組上使用間斷模式
Bit 11:在規(guī)則通道上的間斷模式
0:規(guī)則通道組上禁用間斷模式
1:規(guī)則通道組上使用間斷模式
Bit 10:自動的注入通道組轉(zhuǎn)換
0:關(guān)閉自動的注入通道組轉(zhuǎn)換
1:開啟自動的注入通道組轉(zhuǎn)換
Bit 9:掃描模式中在一個單一的通道上使用看門狗
0:在所有的通道上使用模擬看門狗
1:在單一通道上使用模擬看門狗
Bit 8:掃描模式
0:關(guān)閉掃描模式
1:使用掃描模式
Bit 7:允許產(chǎn)生注入通道轉(zhuǎn)換結(jié)束中斷
0:禁止JEOC中斷
1:允許JEOC中斷
Bit 6:允許產(chǎn)生模擬看門狗中斷
0:禁止模擬看門狗中斷
1:允許模擬看門狗中斷
Bit 5:允許產(chǎn)生EOC中斷
0:禁止EOC中斷
1:允許EOC中斷
Bit 4~Bit 0:模擬看門狗通道選擇位
00000:ADC模擬輸入通道0
00001:ADC模擬輸入通道1
……
01111:ADC模擬輸入通道15
10000:ADC模擬輸入通道16
10001:ADC模擬輸入通道17
-
STM32
+關(guān)注
關(guān)注
2266文章
10876瀏覽量
354930 -
溫濕度傳感器
+關(guān)注
關(guān)注
5文章
575瀏覽量
35670 -
DHT22
+關(guān)注
關(guān)注
2文章
51瀏覽量
7162
發(fā)布評論請先 登錄
相關(guān)推薦
評論