0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32入門學(xué)習(xí)筆記之溫濕度采集實(shí)驗(yàn)1

jf_78858299 ? 來(lái)源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-02-16 11:13 ? 次閱讀

11.1 實(shí)驗(yàn)簡(jiǎn)介

11.1.1 溫度采集方案概述

本實(shí)驗(yàn)采用三種方式來(lái)獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本上DHT22比較高,所以實(shí)驗(yàn)僅使用DHT11,DS18B20和內(nèi)部溫度傳感器進(jìn)行。

11.1.2 單線協(xié)議

單總線協(xié)議是美國(guó)的達(dá)拉斯公司推出的一款總線通信協(xié)議,所謂單線協(xié)議,就是通過一根線傳輸所有的數(shù)據(jù),通俗地講就是根據(jù)低電平的時(shí)間來(lái)判斷總線上的數(shù)據(jù)是0還是1,比如拉低總線10us,就認(rèn)為發(fā)送的是1,拉低總線50us,就認(rèn)為發(fā)送的是0,單總線協(xié)議中,有3種時(shí)序,即寫時(shí)序,讀時(shí)序和檢測(cè)時(shí)序。我們?cè)?a target="_blank">51單片機(jī)開發(fā)中已經(jīng)嘗試用51單片機(jī)通過單總線協(xié)議讀取DS18B20的溫度值,故這里不再詳細(xì)描述協(xié)議的具體內(nèi)容。

11.2 傳感器介紹

11.2.1 內(nèi)部溫度傳感器

STM32F103有一個(gè)內(nèi)部溫度傳感器,可以用于測(cè)量CPU以及周圍的溫度,這個(gè)溫度傳感器在內(nèi)部和ADC模塊的通道16相連,這個(gè)通道用于將傳感器輸出的電壓值轉(zhuǎn)換為數(shù)字編碼,根據(jù)手冊(cè)得到推薦的采樣時(shí)間是17.1us,STM32內(nèi)部溫度傳感器支持的溫度范圍為-40~+125℃,精度在±1.5℃左右。

根據(jù)手冊(cè)提供的電壓與溫度轉(zhuǎn)換公式如下所示。

圖片

其中V25代表傳感器在25℃時(shí)候的數(shù)值,典型值為1.43

K代表溫度與Vsense曲線的平均斜率,典型值為4.3mV/℃

Vsense代表實(shí)際溫度傳感器輸出的數(shù)值。

通過上面的公式,我們就可以方便地計(jì)算出當(dāng)前的實(shí)際溫度。

11.2.2 DS18B20溫度傳感器

DS18B20是一款測(cè)溫范圍在-55~+125℃,精度在±0.5℃的高精度數(shù)字式溫度傳感器,可以通過單線接口直接讀取出被測(cè)物體的溫度,測(cè)溫精度可以通過編程實(shí)現(xiàn),工作電壓3~5.5V。值得一提的是,DS18B20內(nèi)部具有64位序列號(hào)是出廠就被設(shè)定的,每一個(gè)DS18B20的序列號(hào)均不相同,其中前8位是產(chǎn)品家族碼,中間48位是序列號(hào),最后8位是CEC校驗(yàn)碼,這就可以實(shí)現(xiàn)1根總線上掛接多個(gè)DS18B20。

(1)復(fù)位與應(yīng)答脈沖

單總線上的所有通信都是以初始化序列開始。主機(jī)輸出低電平,保持低電平時(shí)間至少480us,以產(chǎn)生復(fù)位脈沖。接著主機(jī)釋放總線,4.7K的上拉電阻將單總線拉高,延時(shí)15~60us,并進(jìn)入接收模式。接著從設(shè)備拉低總線60~240us,以產(chǎn)生低電平應(yīng)答脈沖,若為低電平,再延時(shí)480us。

(2)寫時(shí)序

寫時(shí)序包括寫0時(shí)序和寫1時(shí)序。所有寫時(shí)序至少需要60us,且在2次獨(dú)立的寫時(shí)序之間至少需要1us的恢復(fù)時(shí)間,兩種寫時(shí)序均起始于主機(jī)拉低總線。寫1時(shí)序:主機(jī)輸出低電平,延時(shí)2us,然后釋放總線,延時(shí)60us。寫0時(shí)序:主機(jī)輸出低電平,延時(shí)60us,然后釋放總線,延時(shí)2us。

(3)讀時(shí)序

必須馬上產(chǎn)生讀時(shí)序,以便從機(jī)能夠傳輸數(shù)據(jù)。所有讀時(shí)序至少需要60us,且在2次獨(dú)立的讀時(shí)序之間至少需要1us的恢復(fù)時(shí)間。每個(gè)讀時(shí)序都由主機(jī)發(fā)起,至少拉低總線1us。主機(jī)在讀時(shí)序期間必須釋放總線,并且在時(shí)序起始后的15us之內(nèi)采樣總線狀態(tài)。典型的讀時(shí)序過程為:主機(jī)輸出低電平延時(shí)2us,然后主機(jī)轉(zhuǎn)入輸入模式延時(shí)12us,然后讀取單總線當(dāng)前的電平,然后延時(shí)50us。

(4)DS18B20測(cè)溫時(shí)序

DS18B20的典型溫度讀取過程為:復(fù)位->發(fā)送跳過ROM讀取命令(0XCC)->發(fā)開始轉(zhuǎn)換命令(0X44)->延時(shí)復(fù)位->發(fā)送跳過ROM讀取命令(0XCC)->發(fā)讀存儲(chǔ)器命令(0XBE)->連續(xù)讀出兩個(gè)字節(jié)溫度->結(jié)束。

11.2.3 DHT11溫濕度傳感器

DHT11是一款濕溫度一體化的數(shù)字傳感器。該傳感器包括一個(gè)電阻式測(cè)濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8位單片機(jī)相連接。通過單片機(jī)等微處理器簡(jiǎn)單的電路連接就能夠?qū)崟r(shí)的采集本地濕度和溫度。DHT11與單片機(jī)之間能采用簡(jiǎn)單的單總線進(jìn)行通信,僅僅需要一個(gè)I/O口。傳感器內(nèi)部濕度和溫度數(shù)據(jù)40Bit的數(shù)據(jù)一次性傳給單片機(jī),數(shù)據(jù)采用校驗(yàn)和方式進(jìn)行校驗(yàn),有效的保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。DHT11功耗很低,5V電源電壓下,工作平均最大電流0.5mA。

DHT11的電參數(shù)如下所示。

(1)工作電壓:3.3V~5.5V

(2)工作電流:平均0.5mA

(3)測(cè)量范圍:濕度2090%RH,溫度050℃

(4)測(cè)量精度:濕度±5%,溫度±2%℃

(5)分辨率:濕度1%,溫度1℃

DHT11數(shù)字式溫濕度傳感器采用單總線數(shù)據(jù)格式。即,單個(gè)數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5個(gè)字節(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校驗(yàn)和。其中校驗(yàn)和數(shù)據(jù)為前四個(gè)字節(jié)相加。傳感器數(shù)據(jù)輸出的是未編碼的二進(jìn)制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間應(yīng)該分開處理。

DHT11的 開始時(shí)序 ,即:拉低數(shù)據(jù)線,保持至少18ms,然后拉高數(shù)據(jù)線2040us,然后讀取DHT11的響應(yīng),正常的話,DHT11會(huì)拉低數(shù)據(jù)線,保持4050us,作為響應(yīng)信號(hào),然后DHT11拉高數(shù)據(jù)線,保持40~50us后,開始輸出數(shù)據(jù)。

11.3 STM32片內(nèi)ADC簡(jiǎn)介

11.3.1 內(nèi)部ADC概述

STM32F103擁有1~3個(gè)ADC,這些ADC可以獨(dú)立使用,也可以使用雙重模式(提高采樣率)。STM32的ADC是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有18個(gè)通道,可測(cè)量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對(duì)齊或右對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器中。模擬看門狗特性允許應(yīng)用程序檢測(cè)輸入電壓是否超出用戶定義的高/低閥值。STM32F103系列最少都擁有2個(gè)ADC,我們選擇的STM32F103ZET包含有3個(gè)ADC。

STM32的ADC最大的轉(zhuǎn)換速率為1Mhz,也就是轉(zhuǎn)換時(shí)間為1us(在ADCCLK=14M,采樣周期為1.5個(gè)ADC時(shí)鐘下得到),不要讓ADC的時(shí)鐘超過14M,否則將導(dǎo)致結(jié)果準(zhǔn)確度下降。STM32將ADC的轉(zhuǎn)換分為2個(gè)通道組:規(guī)則通道組和注入通道組。規(guī)則通道相當(dāng)于你正常運(yùn)行的程序,而注入通道就相當(dāng)于中斷。在程序正常執(zhí)行的時(shí)候,中斷是可以打斷執(zhí)行的。同這個(gè)類似,注入通道的轉(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:獨(dú)立模式

   0001:混合的同步規(guī)則+注入同步模式

   0010:混合的同步規(guī)則+交替觸發(fā)模式

   0011:混合同步注入+快速交叉模式

   0100:混合同步注入+慢速交叉模式

   0101:注入同步模式

   0110:規(guī)則同步模式

   0111:快速交叉模式

   1000:慢速交叉模式

   1001:交替觸發(fā)模式

Bit 15~Bit 13:間斷模式通道計(jì)數(shù)

000:1個(gè)通道

   001:2個(gè)通道

   ……

   111:8個(gè)通道

Bit 12:在注入通道上的間斷模式

0:注入通道組上禁用間斷模式

   1:注入通道組上使用間斷模式

Bit 11:在規(guī)則通道上的間斷模式

0:規(guī)則通道組上禁用間斷模式

   1:規(guī)則通道組上使用間斷模式

Bit 10:自動(dòng)的注入通道組轉(zhuǎn)換

0:關(guān)閉自動(dòng)的注入通道組轉(zhuǎn)換

   1:開啟自動(dòng)的注入通道組轉(zhuǎn)換

Bit 9:掃描模式中在一個(gè)單一的通道上使用看門狗

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
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2265

    文章

    10858

    瀏覽量

    354432
  • 溫濕度傳感器
    +關(guān)注

    關(guān)注

    5

    文章

    572

    瀏覽量

    35641
  • DHT22
    +關(guān)注

    關(guān)注

    2

    文章

    51

    瀏覽量

    7149
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于STM32溫濕度采集系統(tǒng)設(shè)計(jì)

    ①利用stm32對(duì)DHT11模塊進(jìn)行數(shù)據(jù)采集②將采集到的溫濕度數(shù)據(jù)上云(本次實(shí)驗(yàn)并未成功上云)二、實(shí)驗(yàn)
    發(fā)表于 08-10 08:17

    基于STM32開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集

    STM32F407ZGT6開發(fā)板進(jìn)行項(xiàng)目開發(fā),選用的傳感器為常見通用的DHT11溫濕度傳感器。傳感器將采集到的數(shù)據(jù)傳輸?shù)?b class='flag-5'>STM32(MCU)主控進(jìn)行數(shù)據(jù)處理,最后通過串口打印出來(lái)。軟硬
    發(fā)表于 08-10 07:41

    AHT20溫濕度傳感器簡(jiǎn)介

    目錄一、AHT20溫濕度傳感器簡(jiǎn)介二、AHT20 封裝設(shè)計(jì)三、AHT20 元件設(shè)計(jì)四、原理圖設(shè)計(jì)五、總結(jié)博客內(nèi)容:學(xué)習(xí)溫濕度傳感器原理,閱讀國(guó)產(chǎn)溫濕度
    發(fā)表于 02-14 07:29

    溫濕度傳感器與LM-8052NET實(shí)現(xiàn)網(wǎng)絡(luò)化遠(yuǎn)程采集溫濕度

    溫濕度是自然界中和人類打交道最多的兩個(gè)物理參數(shù),無(wú)論是在生產(chǎn)實(shí)驗(yàn)場(chǎng)所,還是在居住休閑場(chǎng)所,溫濕度采集或控制都十分頻繁和重要,而且,網(wǎng)絡(luò)化遠(yuǎn)程采集
    發(fā)表于 07-02 09:16 ?1342次閱讀

    基于STM32的溫室溫濕度采集系統(tǒng)

    基于STM32的溫室溫濕度采集系統(tǒng)
    發(fā)表于 09-28 11:07 ?79次下載
    基于<b class='flag-5'>STM32</b>的溫室<b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b>系統(tǒng)

    基于STM32溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)

    基于STM32溫濕度監(jiān)測(cè)系統(tǒng)設(shè)計(jì)
    發(fā)表于 09-28 11:09 ?276次下載
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>溫濕度</b>監(jiān)測(cè)系統(tǒng)設(shè)計(jì)

    基于STM32的低功耗溫濕度采集器的設(shè)計(jì)與實(shí)現(xiàn)

    本文主要介紹了一種基于STM32F103RET6的低功耗溫濕度采集器的設(shè)計(jì)與實(shí)現(xiàn),系統(tǒng)主要有供電模塊,USB全速通信模塊,STM32芯片,SD卡存儲(chǔ)模塊,
    發(fā)表于 12-23 14:28 ?1.6w次閱讀
    基于<b class='flag-5'>STM32</b>的低功耗<b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b>器的設(shè)計(jì)與實(shí)現(xiàn)

    STM32實(shí)例——基于STM32開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集

    STM32實(shí)例——基于STM32開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)采集-DHT11溫濕度采集
    發(fā)表于 12-05 20:06 ?93次下載
    <b class='flag-5'>STM32</b>實(shí)例——基于<b class='flag-5'>STM32</b>開發(fā)板實(shí)現(xiàn)傳感數(shù)據(jù)<b class='flag-5'>采集</b>-DHT11<b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b>

    STM32學(xué)習(xí)筆記①:環(huán)境配置及室內(nèi)溫濕度檢測(cè)

    、項(xiàng)目簡(jiǎn)介1.1.項(xiàng)目名稱基于STM32的室內(nèi)溫濕度檢測(cè)1.2. 項(xiàng)目設(shè)計(jì)思路思路:本項(xiàng)目采用ARM結(jié)構(gòu)中最為代表的Cortex-M4系列的芯片,選用STM32F407ZGT6開發(fā)板進(jìn)行項(xiàng)目開發(fā),選用的傳感器為常見通用的DHT1
    發(fā)表于 12-05 20:36 ?20次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>①:環(huán)境配置及室內(nèi)<b class='flag-5'>溫濕度</b>檢測(cè)

    溫濕度采集

    畢業(yè)設(shè)計(jì)溫濕度采集。幫忙做的一個(gè),原理啥子都很簡(jiǎn)單,但是第一次做還是會(huì)很多周折,單純的記錄一下,哈哈,證明一下我還沒畢業(yè)。。Stm32+DHT11(SHT30)+AD+Android
    發(fā)表于 12-31 19:27 ?15次下載
    <b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b> 二

    Art_Pi學(xué)習(xí)筆記8:使用AHT10溫濕度模塊

    參考鏈接:RT-Thread Studio入門(6)— 采集溫濕度數(shù)據(jù)_Willliam_william的博客-CSDN博客[鏈接]
    發(fā)表于 01-25 17:57 ?1次下載
    Art_Pi<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>8:使用AHT10<b class='flag-5'>溫濕度</b>模塊

    STM32入門學(xué)習(xí)筆記溫濕度采集實(shí)驗(yàn)2

    實(shí)驗(yàn)采用三種方式來(lái)獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本
    的頭像 發(fā)表于 02-16 11:13 ?736次閱讀

    STM32入門學(xué)習(xí)筆記溫濕度采集實(shí)驗(yàn)3

    實(shí)驗(yàn)采用三種方式來(lái)獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本
    的頭像 發(fā)表于 02-16 11:13 ?834次閱讀

    STM32入門學(xué)習(xí)筆記溫濕度采集實(shí)驗(yàn)4

    實(shí)驗(yàn)采用三種方式來(lái)獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本
    的頭像 發(fā)表于 02-16 11:14 ?779次閱讀

    溫濕度采集實(shí)驗(yàn)

    實(shí)驗(yàn)采用三種方式來(lái)獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本
    的頭像 發(fā)表于 03-01 15:52 ?1317次閱讀
    <b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b><b class='flag-5'>實(shí)驗(yàn)</b>