|
目 錄
5.04.1概述3
5.04.2 實驗目的5
5.04.3 硬件設計5
5.04.4 軟件設計6
5.04.5 STM32系統(tǒng)時鐘配置SystemInit()9
5.04.6 GPIO引腳時鐘使能9
5.04.7 GPIO管腳電平控制函數(shù)9
5.04.8 stm32f10x_it.c文件里的內容是10
5.04.9 ds18b20.h文件里的內容是10
5.04.10 ds18b20.c文件里的內容是11
5.04.11 main.c文件里的內容是16
5.04.12 程序下載18
5.04.13 實驗效果圖19
5.04 防水型DS18B20程序設計
5.04.1概述
美國Dallas半導體公司生產(chǎn)的數(shù)字化溫度傳感器DS18B20,采用導熱性高的密封膠灌封,保證了溫度傳感器的高靈敏性,極小的溫度延遲。該溫度傳感器支持“一線總線”接口(1-Wire),現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量。DS18B20數(shù)字溫度傳感器都具有唯一的編號,溫度采集設備通過編號來識別對應的溫度傳感器器。
?
在外設篇我們詳細介紹了DS18B20數(shù)字溫度傳感器,下面重復簡單介紹一下DS18B20獨特的優(yōu)點:
( 1 )采用單總線的接口方式與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與 DS18B20的雙向通訊。單總線具有經(jīng)濟性好,抗干擾能力強,適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點,使用戶可輕松地組建傳感器網(wǎng)絡,為測量系統(tǒng)的構建引入全新概念。
( 2 )測量溫度范圍寬,測量精度高 DS18B20 的測量范圍為 -55 ℃~+ 125 ℃ ; 在 -10~+ 85°C 范圍內,精度為 ± 0.5°C。
( 3 )在使用中不需要任何外圍元件。
( 4 )持多點組網(wǎng)功能 多個 DS18B20可以并聯(lián)在惟一的單線上,實現(xiàn)多點測溫。
( 5 )供電方式靈活 DS18B20可以通過內部寄生電路從數(shù)據(jù)線上獲取電源。因此,當數(shù)據(jù)線上的時序滿足一定的要求時,可以不接外部電源,從而使系統(tǒng)結構更趨簡單,可靠性更高。
( 6 )測量參數(shù)可配置 DS18B20 的測量分辨率可通過程序設定 9~12位。
( 7)負壓特性電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。
( 8 )掉電保護功能 DS18B20 內部含有 EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設定值。
DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟、可選更小的封裝方式,更寬的電壓適用范圍,適合于構建自己的經(jīng)濟的測溫系統(tǒng),因此也就被設計者們所青睞。
防水探頭采用全新原裝進口DS18B20溫度傳感器芯片,芯片每個引腳均用熱縮管隔開,防止短路,內部封膠,防水防潮,不銹鋼頭常規(guī)的引線1米,鋼管Φ6*50mm。每個探頭經(jīng)過嚴格測試,DC3.0V~5.5V供電。
5.04.2 實驗目的
通過我們選用的是防水型DS18B20傳感器,實驗時把它置于盛裝熱水(冷水)水杯中,測量水溫。我們設計好的程序把測量結果輸出打印至計算機顯示。觀察水溫的變化和傳感器的靈敏度是否符合要求。
5.04.3 硬件設計
選用大黃蜂實驗板,把防水型DS18B20通過PWM端子連接到實驗板上,通過程序設計把采集到的水溫打印輸出到計算機顯示。硬件設計見圖5.04.1 防水型DC18B20連線圖。
圖5.04.1 防水型DC18B20連線圖
?
5.04.4 軟件設計
5.04.4.1 軟件設計說明
防水型DS18B20是采購的成品,直接和大黃蜂實驗板連接好后可以進行程序設計了,按照在《外設篇 10. STM32DS18B20溫度傳感工作原理》中的講解我們就可以很輕松編寫出這篇采集程序,我們還是采用庫函數(shù)的方式進行程序設計。
在這節(jié)程序設計中,用到了外部中斷函數(shù);prinif 重定向打印輸出函數(shù);USART串口通訊函數(shù);定時器函數(shù)。
5.04.4.2 STM32庫函數(shù)文件
?
本節(jié)實驗及以后的實驗我們都是用到庫文件,其中stm32f10x_gpio.h頭文件包含了GPIO端口的定義。stm32f10x_rcc.h頭文件包含了系統(tǒng)時鐘配置函數(shù)以及相關的外設時鐘使能函數(shù),所以我們要把這兩個頭文件對應的stm32f10x_gpio.c和stm32f10x_rcc.c加到工程中;Misc.c庫函數(shù)主要包含了中斷優(yōu)先級的設置,stm32f10x_exti.c庫函數(shù)主要包含了外部中斷設置參數(shù),tm32f10x_tim.c庫函數(shù)主要包含定時器設置,tm32f10x_usart.c庫函數(shù)主要包含串行通訊設置,這些函數(shù)也要添加到函數(shù)庫中。以上庫文件包含了本次實驗所有要用到的函數(shù)使用功能。
5.04.4.3 自定義頭文件
?
我們已經(jīng)創(chuàng)建了兩個公共的文件,這兩個文件主要存放我們自定義的公共函數(shù)和全局變量,以方便以后每個功能模塊之間傳遞參數(shù)。
5.04.4.4 pbdata.h文件里的內容是
5.04.5 STM32系統(tǒng)時鐘配置SystemInit()
我們總在強調,每個工程都必須在開始時配置并啟動STM32系統(tǒng)時鐘,這次也不例外。
5.04.6 GPIO引腳時鐘使能
本節(jié)實驗用到了PA端口,所以要把PA端口的時鐘打開;串口1時鐘源是通過APB2預分頻器得到的,串口1時鐘初始化;因為要與外部芯片通訊,所以要打開功能復用時鐘。
5.04.7 GPIO管腳電平控制函數(shù)
在主程序中采用while(1)循環(huán)語句,等待外部中斷的到來后,主程序中讀取緩沖區(qū)的溫度值,并就打印輸出到屏幕。
5.04.8 stm32f10x_it.c文件里的內容是
在中斷處理stm32f10x_it.c文件里中僅串口1子函數(shù)非空,進入中斷處理函數(shù)后,只有串口1有參數(shù)輸出。
?
5.04.9 ds18b20.h文件里的內容是
函數(shù)ds18b20.h在這里是為了紅外程序自定義的功能函數(shù),ds18b20.h的內容如下:
?
5.04.10 ds18b20.c文件里的內容是
我們先詳細介紹DS18B20時序圖,然后再按照時序圖要求編寫程序。
5.04.10.1 DS18B20初始化時序
?
(1).數(shù)據(jù)線拉到低電平“0”。
(2).延時480微妙(該時間的時間范圍可以從480到960微妙)。
(3).數(shù)據(jù)線拉到高電平“1”。
(4).延時等待80微妙。如果初始化成功則在15到60微妙時間內產(chǎn)生一個由DS18B20所返回的低電平“0”.根據(jù)該狀態(tài)可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環(huán),所以要進行超時判斷。
(5).若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(3)步的時間算起)最少要480微妙。
5.04.10.2 DS18B20讀時序
(1).將數(shù)據(jù)線拉低“0”。
(2).延時4微妙。
(3).將數(shù)據(jù)線拉高“1”,釋放總線準備讀數(shù)據(jù)。
(4).延時10微妙。
(5).讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進行數(shù)據(jù)處理。
(6).延時45微妙。
(7).重復1~7步驟,直到讀完一個字節(jié)。
1).數(shù)據(jù)線先置低電平“0”
(2).延時15微妙。
(3).按從低位到高位的順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。
(4).延時60微妙。
(5).將數(shù)據(jù)線拉到高電平。
(6).重復1~5步驟,直到發(fā)送完整的字節(jié)。
(7).最后將數(shù)據(jù)線拉高。
圖5.04.4 DS18B20寫時序
自定義函數(shù)ds18b20.c的內容如下:
5.04.11 main.c文件里的內容是
?
5.04.12 程序下載
在這一章節(jié)中要掌握DS18B20的工作時序,了解常用的溫度傳感器功能和原理。
請根據(jù)下圖所指向的7個重點區(qū)域配置。其中(1)號區(qū)域根據(jù)自己機器的實際情況選擇,我的機器虛擬出來的串口號是COM3。(2)號區(qū)域請自己選擇程序代碼所在的文件夾。(7)號區(qū)域當程序下載完后,進度條會到達最右邊,并且提示一切正常。(4、5、6)號區(qū)域一定要按照上圖顯示的設置。當都設置好以后就可以直接點擊(3)號區(qū)域的開始編程按鈕下傳程序了。
?
本節(jié)實驗的源代碼在光盤中:(LY-STM32 光盤資料\1.課程\2,外設篇\模塊篇04.防水DS18B20溫度傳感器實驗\程序)
5.04.13 實驗效果圖
把防水溫度計放入盛溫水的燒杯中,如“圖5.04.13.1 防水DS18B20測試水溫實驗效果圖”,打開眾想科技多功能監(jiān)控軟件,然后打開串口,我們在接收區(qū)可以觀察到實測采集到的水溫數(shù)據(jù),水溫大約60攝氏度左右,說明我們防水型DS18B20工作正常,程序編寫的很成功。
[url=]
[/url]
|
|