張仕寬,莫坤,羅旭,蘇婷,段明明
(興義民族師范學(xué)院,貴州黔西,562400)
風(fēng)扇是人們?cè)谙奶旖禍乇苁畹睦?,因其具有價(jià)格便宜和使用方便的優(yōu)點(diǎn)而深受人們的喜愛(ài)。但是由于傳統(tǒng)風(fēng)扇的控制是通過(guò)按鍵旋鈕控制這一特點(diǎn),所以出現(xiàn)當(dāng)人們?cè)谑焖臅r(shí)候,忘記關(guān)閉風(fēng)扇的現(xiàn)象,溫度降低之后風(fēng)扇還在轉(zhuǎn)動(dòng),導(dǎo)致人們因?yàn)榇碉L(fēng)扇而感冒和電能的浪費(fèi)。因此,針對(duì)上述的問(wèn)題,設(shè)計(jì)一款以溫度為控制信號(hào)的智能風(fēng)扇,該風(fēng)扇具有室內(nèi)溫度和擋位顯示、溫度可調(diào)和自動(dòng)開(kāi)啟功能。
硬件系統(tǒng)由6 部分組成,它們分別是單片機(jī)及其最小系統(tǒng)部分、電源部分、溫度采集部分、按鍵輸入部分、數(shù)據(jù)顯示部分和電機(jī)部分。系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
(1)單片機(jī)及其最小系統(tǒng)部分
本次設(shè)計(jì)使用的單片機(jī)為STC89C52R 單片機(jī)作為核心控制部件,通過(guò)其數(shù)據(jù)處理和IO口輸入輸出功能來(lái)實(shí)現(xiàn)智能風(fēng)扇的控制。單片機(jī)及其最小系統(tǒng)是保證單片機(jī)能夠正常工作的系統(tǒng)組成,它們分別是單片機(jī)供電電源、單片機(jī)、時(shí)鐘及其復(fù)位電路和程序下載口。
(2)電源部分
電源部分采用USB 轉(zhuǎn)TTL 電路供電,給電路系統(tǒng)提供所需的電能。
(3)溫度采集部分
溫度采集部分使用的傳感器是DS18B20,DS18B20 能夠精確地將外界的溫度進(jìn)行采集,能夠?qū)⒉杉臏囟饶M信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),方便單片機(jī)進(jìn)行數(shù)據(jù)處理。其溫度測(cè)試范圍為-55℃~+125℃,測(cè)溫誤差為1℃。
(4)按鍵輸入部分
按鍵輸入部分使用的是獨(dú)立按鍵。獨(dú)立按鍵具有按鍵恢復(fù)功能,當(dāng)按鍵按下時(shí),按鍵導(dǎo)通,當(dāng)按鍵松開(kāi)時(shí),按鍵斷開(kāi)。
(5)數(shù)據(jù)顯示部分
數(shù)據(jù)顯示部分使用的是LCD1602 液晶顯示器。LCD1602 能夠顯示32個(gè)字符,其內(nèi)部自帶有字符庫(kù),能夠顯示英文字母、阿拉伯?dāng)?shù)字、日文假名和一遍特殊符號(hào),通過(guò)編程可以控制其需要顯示的字符和字符顯示的位置。
(6)電機(jī)及其驅(qū)動(dòng)部分
電機(jī)的轉(zhuǎn)動(dòng)是通過(guò)單片機(jī)輸出的PWM 波進(jìn)行控制,由于單片機(jī)的輸出電流不能夠直接驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng),所以采用了PNP 提供驅(qū)動(dòng)電流來(lái)驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng)。
1.2.1 電路搭建
使用Proteus 軟件進(jìn)行電路搭建,電路原理圖如圖2所示。
圖2 電路原理
在圖2 中,晶振與電容C1、C2 給單片機(jī)提供了時(shí)鐘信號(hào),電阻R1 和電解電容C3 構(gòu)成了單片機(jī)的復(fù)位電路。
在 圖2 中,單 片 機(jī) 的P1.0 引 腳 與DS18B20的DQ 引腳進(jìn)行連接,用于數(shù)據(jù)傳輸,在DS18B20的VCC 上接入5V 電壓,并且在DQ 與VCC 之間接入一個(gè)大電阻作為上拉電阻使用。GVD端接地。
在圖2 中,單片機(jī)的P0.1~P0.7 引腳分別與LCD1602的D0~D7 引腳進(jìn)行連接,用于數(shù)據(jù)傳輸,在P0口和LCD1602的D口之間增加了一個(gè)排阻,因?yàn)閱纹瑱C(jī)的P0口內(nèi)部沒(méi)有接上拉電阻,所以外部接入了排阻作為上拉電阻使用,LCD1602的RS 引腳與單片機(jī)的P2.5 引腳進(jìn)行連接,用于LCD1602的寄存器選擇操作,LCD1602的RW 引腳與單片機(jī)的P2.6 引腳進(jìn)行連接,用于LCD1602的讀寫(xiě)操作,LCD1602的E 引腳與單片機(jī)的P2.7 引腳進(jìn)行連接,用于使能控制,LCD1602的VSS、VEE、VDD 接入一個(gè)滑動(dòng)變阻器,用于調(diào)節(jié)背光使用。
在圖2 中,獨(dú)立按鍵溫度設(shè)置鍵、溫度加鍵和溫度減鍵分別與單片機(jī)的P3.2、P3.3、P3.4 引腳進(jìn)行連接,另一端接低電平。
在圖2 中,電機(jī)通過(guò)一個(gè)限流電阻和NPN 管與單片機(jī)的P3.7 引腳進(jìn)行連接,通過(guò)P3.7端口控制電機(jī)工作狀態(tài),由于單片機(jī)的輸出電流不能夠直接驅(qū)動(dòng)電機(jī)進(jìn)行工作,所以外接了一個(gè)NPN 管作為驅(qū)動(dòng)管使用。
1.2.2 工作原理
使用獨(dú)立按鍵進(jìn)行鍵值輸入,設(shè)定自己所需的溫度閾值,可以通過(guò)LCD1602 看到當(dāng)前自己設(shè)置的溫度閾值。DS18B20 會(huì)對(duì)周?chē)鷾囟冗M(jìn)行采集,并將采集的溫度通過(guò)串口傳遞給單片機(jī),單片機(jī)在接收到DS18B20 采集的溫度之后,將接受到的溫度值進(jìn)行處理之后與溫度閾值進(jìn)行比較,控制電機(jī)的工作狀態(tài),選擇合適的擋位進(jìn)行轉(zhuǎn)動(dòng),并且控制LCD1602 顯示器顯示當(dāng)前的溫度和擋位。
2.1.1 初始化時(shí)序
初始化目的是為了讓單片機(jī)檢測(cè)總線上的DS18B20是否能夠正常通信,為通信做準(zhǔn)備。開(kāi)始時(shí),單片機(jī)將總線的電平拉低,持續(xù)時(shí)間為480μs,接著單片機(jī)釋放總線,由于上拉電阻的存在,會(huì)將總線電平拉高,持續(xù)時(shí)間是50~60μs,接著單片機(jī)檢測(cè)總線是否被DS18B20 拉低,持續(xù)時(shí)間60~240μs,初始化時(shí)序圖見(jiàn)圖3所示。
圖3 初始化時(shí)序圖
2.1.2 寫(xiě)時(shí)序
寫(xiě)時(shí)序是向DS18B20 內(nèi)部寫(xiě)入命令,寫(xiě)時(shí)序可分為寫(xiě)“0”時(shí)序和寫(xiě)“1”時(shí)序,不管是寫(xiě)“0”時(shí)序還是“1”時(shí)序,都需要維持至少60uS的時(shí)間,兩次寫(xiě)操作之間要間隔至少1μs的時(shí)間。在進(jìn)行寫(xiě)操作之前,單片機(jī)將總線拉低在15μs 內(nèi)必須釋放總線。寫(xiě)時(shí)序圖如圖4所示。
圖4 寫(xiě)時(shí)序圖
2.1.3 讀時(shí)序
讀時(shí)序是單片機(jī)在總線上讀取DS18B20 在總線上傳遞的命令,分為讀“0”時(shí)序和讀“1”時(shí)序。這兩個(gè)時(shí)序讀取的時(shí)間都要維持至少60μs的時(shí)間,其中包括1μs的恢復(fù)時(shí)間,在單片機(jī)拉低總線15μs 內(nèi)必須釋放總線。讀時(shí)序圖如圖5所示。
圖5 讀時(shí)序圖
2.1.4 操作順序
初始化——>寫(xiě)相應(yīng)的控制指令(用寫(xiě)數(shù)據(jù)函數(shù)完成)——>讀取DS18B20 所采集到的數(shù)據(jù)(用讀數(shù)據(jù)函數(shù)完成)— —>把采集的數(shù)據(jù)轉(zhuǎn)化成實(shí)際的溫度。
液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示LCD 此時(shí)不忙,這時(shí)才能寫(xiě)指令和數(shù)據(jù),否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址(寫(xiě)指令),也就是告訴模塊在,哪里顯示字符,然后再寫(xiě)入需要顯示的字符(寫(xiě)數(shù)據(jù)),才能夠正常顯示字符。
當(dāng)我們要寫(xiě)指令的時(shí)候,RS 置為低電平,RW 置為低電平,EN 置為低電平,然后將指令數(shù)據(jù)送到數(shù)據(jù)口D0~D7, 延 時(shí)tsp1, 讓1602準(zhǔn)備接收數(shù)據(jù),這時(shí)候?qū)N 拉高,產(chǎn)生一個(gè)上升沿,這時(shí)候指令就開(kāi)始寫(xiě)入LCD,延時(shí)一段時(shí)間,將EN 置低電平。
當(dāng)我們要寫(xiě)數(shù)據(jù)的時(shí)候,RS 置為高電平,RW 置為低電平,EN 置為低電平,然后將指令數(shù)據(jù)送到數(shù)據(jù)口D0~D7,延時(shí)tsp1,讓1602 準(zhǔn)備接收數(shù)據(jù),這時(shí)候?qū)N 拉高,產(chǎn)生一個(gè)上升沿,這時(shí)候數(shù)據(jù)就開(kāi)始寫(xiě)入LCD,延時(shí)一段時(shí)間,將EN置低電平。讀時(shí)序操作圖如圖6所示,寫(xiě)時(shí)序操作圖如圖7所示。
圖6 讀時(shí)序操作
圖7 寫(xiě)時(shí)序操作圖
首先進(jìn)行溫度讀取,將讀取的溫度通過(guò)顯示器顯示,然后再將讀取溫度與設(shè)置的溫度進(jìn)行比較,判斷是否開(kāi)啟風(fēng)扇。主程序流程圖如圖8所示。
圖8 主程序流程圖
根據(jù)圖8 主程序流程圖,使用Keil 軟件進(jìn)行程序編寫(xiě),將寫(xiě)好的程序生成HEX 文件。使用Proteus 軟件和Keil 軟件的聯(lián)合調(diào)試功能,進(jìn)行電路仿真。
如圖9所示,溫度傳感器DS18B20 采集的溫度為44℃,LCD1602 上顯示的溫度值也為44℃,說(shuō)明系統(tǒng)的溫度采集和溫度顯示沒(méi)有問(wèn)題;通過(guò)LCD1602 顯示屏我們可以清楚地看到TH的默認(rèn)值為40℃,而此時(shí)的采集溫度高于40℃,所以此時(shí)的擋位P 為2,設(shè)計(jì)概念符合,而TL的默認(rèn)值為10℃,如圖10所示,當(dāng)溫度低于40℃而高于或者等于10℃的時(shí)候,擋位P 為1,也符合設(shè)計(jì)的概念。接下來(lái)進(jìn)行按鍵設(shè)置測(cè)試。
圖9 TH 擋位測(cè)試圖
圖10 TL 擋位測(cè)試圖
如圖11所示,當(dāng)按下設(shè)置按鍵時(shí),LCD1602 顯示TH設(shè)置界面,通過(guò)加減按鍵可以進(jìn)行TH 值的設(shè)定,此時(shí)的TH 值為48℃。如圖12所示,當(dāng)再次按下設(shè)置按鍵時(shí),會(huì)進(jìn)入TL 值的設(shè)置界面,通過(guò)加減按鍵,可以進(jìn)行TL 值的設(shè)定,此時(shí)TL 值顯示為13℃。
圖12 TL 設(shè)置圖
如圖13所示,當(dāng)再次按下設(shè)置按鍵時(shí),就會(huì)退出設(shè)置界面,進(jìn)入顯示界面,此時(shí)的TH 為48℃,TL 為13℃,與設(shè)置界面設(shè)置的值相符合。
圖13 設(shè)置退出界面圖
利用溫度傳感器DS18C20 和單片機(jī)的控制技術(shù),可以實(shí)現(xiàn)風(fēng)扇的智能化設(shè)計(jì),其智能體現(xiàn)在能夠隨著外界的溫度變化自動(dòng)調(diào)節(jié)風(fēng)扇的啟動(dòng)。隨著科技的發(fā)展,家用電器的智能化將在我們生活中越來(lái)越常見(jiàn),基于物聯(lián)網(wǎng)的技術(shù)將會(huì)使得風(fēng)扇更加智能。