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