|
題 目 基于51單片機(jī)的智能溫控電扇設(shè)計(jì)
學(xué)生姓名
學(xué) 號(hào) 院 系 專 業(yè) 指導(dǎo)教師
年 月 日
目 錄
1
1 引言 ........................................................... 1
2 方案設(shè)計(jì) ....................................................... 2
2.1 系統(tǒng)整體設(shè)計(jì) ................................................ 2
2.2 方案論證 .................................................... 2
2.2.1 溫度傳感器的選擇 ....................................... 2
2.2.2 紅外探測(cè)的選擇 ......................................... 3
2.2.3 控制核心的選擇 ......................................... 3
2.2.4 顯示器件的選擇 ......................................... 3
2.2.5 調(diào)速方式的選擇 ......................................... 4
2.2.6 驅(qū)動(dòng)方式選擇 ........................................... 4
3 硬件設(shè)計(jì) ....................................................... 4
3.1系統(tǒng)各器件簡(jiǎn)介 .............................................. 5
3.1.1 單線程數(shù)字溫度傳感器DS18B20 ........................... 5
3.1.2 AT89S51單片機(jī)簡(jiǎn)介 ..................................... 5
3.1.3 橋式驅(qū)動(dòng)電路L298N簡(jiǎn)介 ................................. 6
3.1.4 LCD1602簡(jiǎn)介 ........................................... 7
3.1.5對(duì)射式光電開(kāi)關(guān)簡(jiǎn)介 ..................................... 7
3.2 各部分電路設(shè)計(jì) .............................................. 8
3.2.1 開(kāi)關(guān)復(fù)位與晶振電路 ..................................... 8
3.2.2 獨(dú)立控制鍵盤(pán)電路 ....................................... 8
3.2.3 LCD顯示電路 ........................................... 9
3.2.4 紅外探測(cè)電路 ........................................... 9 2
3.2.5 溫度采集電路 .......................................... 103.2.6 風(fēng)扇驅(qū)動(dòng)電路
.......................................... 10
4 軟件設(shè)計(jì) ...................................................... 11
4.1 主程序流程圖 ............................................... 11
4.2 液晶顯示子程序 ............................................. 13
4.3 DS18B20溫度傳感器子程序 ................................... 14
4.3.1 溫度讀取程序 .......................................... 14
4.3.2 溫度處理程序 .......................................... 174.4 鍵盤(pán)掃描子程序
............................................. 18
4.5 溫度比較處理子程序 ......................................... 19
4.6 電機(jī)控制程序(包含紅外探測(cè)) ............................... 21
4.7 軟件設(shè)計(jì)中的問(wèn)題與分析 ..................................... 23
4.7.1 LCD顯示程序的問(wèn)題 .................................... 23
4.7.2 DS18B20的顯示程序問(wèn)題 ................................ 23
5 硬件調(diào)試 ...................................................... 235.1 按鍵電路的調(diào)試
............................................. 24
5.2 溫度傳感器電路的調(diào)試 ....................................... 24
5.3 電機(jī)電路的調(diào)試 ............................................. 24
5.4 紅外感應(yīng)電路的調(diào)試 ......................................... 24
5.5 硬件調(diào)試遇到的問(wèn)題 ......................................... 24
6 結(jié)論 .......................................................... 24
參考文獻(xiàn): ...................................................... 26 3
4
基于51單片機(jī)的智能溫控電扇設(shè)計(jì)摘要:風(fēng)扇是人們?nèi)粘I钪斜夭豢扇钡墓ぞ,尤其是在夏天,作為一種使用頻率很高的電器,備受人們喜愛(ài)。本文將以AT89S51為主控芯片,輔以DS18B20溫度傳感器,結(jié)合紅外探測(cè)裝置,來(lái)實(shí)現(xiàn)一種智能溫控電扇的設(shè)計(jì)。此風(fēng)扇通過(guò)液晶顯示器來(lái)顯示溫度和風(fēng)速,配備2個(gè)溫度設(shè)定按鍵,由DS18B20讀取外界溫度,紅外探頭探測(cè)是否有人,通過(guò)設(shè)定的溫度配合程序來(lái)調(diào)節(jié)風(fēng)速,最后通過(guò)L298N來(lái)驅(qū)動(dòng)電機(jī)。經(jīng)過(guò)調(diào)試,風(fēng)扇可以按照溫度智能變速,無(wú)人自動(dòng)關(guān)閉,實(shí)現(xiàn)了智能溫
控的目標(biāo)。
關(guān)鍵詞:DS18B20;AT89S51;紅外探頭;液晶顯示器1602;L298N
1 引言
電扇是人們?nèi)粘I钪谐S玫慕禍毓ぞ,從開(kāi)始的吊扇到現(xiàn)在的USB風(fēng)扇,無(wú)處不見(jiàn)電扇的蹤跡。雖然如今空調(diào)已經(jīng)走進(jìn)千家萬(wàn)戶,但是電扇的低位還是無(wú)可取代,作為一種節(jié)能環(huán)保,并且廉價(jià)簡(jiǎn)單的降溫工具,電扇還在很多人家發(fā)揮著自己獨(dú)特的作用。順應(yīng)時(shí)代潮流,各種多功能的風(fēng)扇逐漸在取代傳統(tǒng)風(fēng)扇。單片機(jī)作為一種智能化程度高,控制精度高,操作簡(jiǎn)單,廉價(jià)易得,抗干擾能力強(qiáng)等特點(diǎn),越來(lái)越多的應(yīng)用于智能化產(chǎn)品之中。
市場(chǎng)上智能風(fēng)扇產(chǎn)品相繼問(wèn)世,制作方法也多種多樣,功能也逐漸完善,普遍都具有了手動(dòng)變速和定時(shí)關(guān)閉等功能,相對(duì)而言,具備人性化,智能化的風(fēng)扇還是很少,使用也并不廣泛,而且在電子工藝高度發(fā)展的今天,智能化的步伐也越來(lái)越快,尤其是中國(guó)這個(gè)高速發(fā)展的國(guó)家,電扇的智能化也該向前邁進(jìn)一個(gè)步伐。在中國(guó)市場(chǎng)上風(fēng)扇還是有一定的市場(chǎng)份額的,幾乎每個(gè)家庭都有風(fēng)扇,具備價(jià)格便宜,擺放輕便,體積靈巧等特點(diǎn),使得風(fēng)扇在中小城市以及鄉(xiāng)村將來(lái)一段時(shí)間內(nèi)仍然會(huì)占有市場(chǎng)的大部分份額,為提高風(fēng)扇的市場(chǎng)競(jìng)爭(zhēng)力,使之在技術(shù)含量上有所提高,滿足智能化的要求,智能風(fēng)扇很具競(jìng)爭(zhēng)力。大學(xué)四年即將結(jié)束,為了檢驗(yàn)自己的學(xué)習(xí)情況,我決定使用之前所學(xué)習(xí)到的硬件只是結(jié)合相關(guān)的軟件基礎(chǔ)來(lái)制作一個(gè)基于單片機(jī)的智能溫控風(fēng)扇。
基于對(duì)人性化與智能化相結(jié)合的考慮,同時(shí)基于對(duì)價(jià)格的考慮,本設(shè)計(jì)決定制作一個(gè)基于51單片機(jī)的智能溫控風(fēng)扇,該風(fēng)扇具有隨溫度自動(dòng)調(diào)節(jié)風(fēng)速的功能,并且在無(wú)人時(shí)可以自動(dòng)關(guān)閉,而且可以根據(jù)每個(gè)人的不同情況來(lái)設(shè)定基準(zhǔn)溫度,從而實(shí)現(xiàn)了人性化與智能化的雙重目標(biāo)。
1
2 方案設(shè)計(jì)
2.1 系統(tǒng)整體設(shè)計(jì)本設(shè)計(jì)的整體思路是:利用溫度傳感器DS18B20來(lái)檢測(cè)環(huán)境溫度,并直
接輸出數(shù)字溫度給51單片機(jī)進(jìn)行處理,并將實(shí)時(shí)溫度、設(shè)置溫度、風(fēng)速顯示在液晶1602上。設(shè)置溫度輔以2個(gè)可調(diào)按鍵,一個(gè)提高設(shè)置溫度,一個(gè)降低設(shè)置溫度,設(shè)置溫度只能是整數(shù)型式,檢測(cè)到的環(huán)境溫度可以精確到小數(shù)點(diǎn)后一位。本系統(tǒng)還配備一個(gè)紅外探頭,探測(cè)出風(fēng)范圍內(nèi)是否有人,若無(wú)人則自動(dòng)關(guān)閉風(fēng)扇。同時(shí)采用單片機(jī)模擬PWM脈寬調(diào)制方式來(lái)改變直流電扇電機(jī)的轉(zhuǎn)速。系統(tǒng)整體結(jié)構(gòu)框圖1所示:
圖1 整體系統(tǒng)結(jié)構(gòu)圖
2.2 方案論證本設(shè)計(jì)要求實(shí)現(xiàn)在溫度變化的情況下風(fēng)扇直流電機(jī)轉(zhuǎn)速隨之改變,并且
能夠在無(wú)人的情況和溫度低于設(shè)定溫度的時(shí)候自行停止,需要比較高的溫度分辨率和穩(wěn)定的探測(cè)工具以及可靠的電機(jī)控制部件。
2.2.1 溫度傳感器的選擇
在本設(shè)計(jì)中,溫度傳感器的方案有以下兩種:
方案一:采用熱敏電阻。熱敏電阻的特性就是阻值可以隨溫度的變化而變化,采用熱敏電阻作為檢測(cè)溫度的核心部件,然后通過(guò)放大電路放大信號(hào),經(jīng)過(guò)AD0809數(shù)模轉(zhuǎn)換講放大的微弱電壓變化信號(hào)轉(zhuǎn)化了數(shù)字信號(hào)輸入單片機(jī)處理。方案二:?jiǎn)慰偩數(shù)字溫度計(jì)DS18B20。作為一款優(yōu)秀的數(shù)字集成溫度
傳感器,DS18B20可以直接檢測(cè)并輸出數(shù)字信號(hào)給單片機(jī)進(jìn)行處理。
對(duì)于方案一,如若采用熱敏電阻作為溫度檢測(cè)元件,則價(jià)格方面比較便宜,元件易得,但是熱敏電阻的缺點(diǎn)顯而易見(jiàn),對(duì)于溫度細(xì)微變化反應(yīng)不敏感,而且在后續(xù)的放大和轉(zhuǎn)換電路中還會(huì)造成失真和誤差,
[圖片]
2并且熱敏電阻的變化曲線非線性,每個(gè)熱敏電阻都不同,還需要單獨(dú)測(cè)試描繪出曲線,雖然可以通過(guò)軟件來(lái)實(shí)現(xiàn)
誤差的修正,但是這會(huì)使得電路的復(fù)雜性增加,并且在人體所在實(shí)際環(huán)境中難以檢測(cè)到小的溫度變化。所以這個(gè)方案在本設(shè)計(jì)中難以勝任。
對(duì)于方案二,DS18B20測(cè)量范圍從-55℃到+125℃,增量值為0.5℃,人體所處的環(huán)境溫度包括其中,分辨率較高,所獲取的溫度誤差小,并且對(duì)溫度變化反應(yīng)靈敏。DS18B20最具優(yōu)勢(shì)的是其溫度值在器件內(nèi)部直接轉(zhuǎn)化成數(shù)字信號(hào)輸出,簡(jiǎn)化了系統(tǒng)設(shè)計(jì),又由于該溫度傳感器采用了單總線技術(shù),使得其接口與單片機(jī)接口變得非常簡(jiǎn)潔,抗干擾能力也得到了提高,所以本系統(tǒng)采用這個(gè)方案。
2.2.2 紅外探測(cè)的選擇
方案一:熱釋電紅外探測(cè)模塊。作為一款應(yīng)用很廣的紅外探測(cè)模塊,具有靈敏度高,可靠性高,低電壓工作模式等特點(diǎn),被廣泛的應(yīng)用與各種場(chǎng)合中。但是與本設(shè)計(jì)卻有一個(gè)沖突,該模塊使用環(huán)境應(yīng)盡量避免流動(dòng)的風(fēng),流動(dòng)的風(fēng)也會(huì)對(duì)感應(yīng)器造成干擾。所以方案一不適用。
方案二:對(duì)射式光電開(kāi)關(guān)。對(duì)射式光電開(kāi)關(guān)是一款有紅外線發(fā)射管跟紅外線接收管配對(duì)使用的光電開(kāi)關(guān)。對(duì)射式光電開(kāi)關(guān)在電路中起到了通過(guò)光來(lái)傳播電路,當(dāng)有物體阻擋著紅外線發(fā)射管跟接受管時(shí),電路會(huì)停止工作。使用這個(gè)特性,我們就能判斷是否有人,外界干擾就沒(méi)有了,非常適合這個(gè)系統(tǒng),所以就采用這種方案。2.2.3 控制核心的選擇
本設(shè)計(jì)采用AT89S51單片機(jī)作為控制核心,通過(guò)軟件編程的方法進(jìn)行溫度的實(shí)時(shí)檢測(cè)與判斷,并在I/O口上輸出控制信號(hào),控制電機(jī)工作。AT89S51具有較大的存儲(chǔ)空間,工作電壓低,性能高,片內(nèi)含4K字節(jié)的只讀程序存儲(chǔ)器ROM和128字節(jié)的隨即數(shù)據(jù)存儲(chǔ)器RAM,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),價(jià)格便宜,與本系統(tǒng)的設(shè)計(jì)相符合。
2.2.4 顯示器件的選擇
方案一:LED共陰極數(shù)碼顯示管。
方案二:LCD液晶顯示屏1602。對(duì)于方案一,成本相對(duì)低廉,功耗也低,在黑暗空間也可以看的清楚,可
視距離較遠(yuǎn),同時(shí)顯示溫度的程序也相對(duì)而言簡(jiǎn)單,所以這種顯示方式也得到了廣泛應(yīng)用。但是它采用的顯示方式是動(dòng)態(tài)掃描,各個(gè)LED逐個(gè)點(diǎn)亮,會(huì)產(chǎn)生閃爍,在這個(gè)溫度實(shí)時(shí)變化的環(huán)境中閃爍可能太快,數(shù)據(jù)可能不能很好的展示出來(lái),故此方案不采用。
對(duì)于方案二,液晶顯示屏顯示字符清晰,自帶背光,還能顯示符號(hào),并且不會(huì)不斷閃爍,顯示性能一流,并且考慮到此設(shè)計(jì)不只是要顯示溫度,還要顯示電機(jī)和紅外的狀態(tài),所以從設(shè)計(jì)完善的角度來(lái)考慮,選擇此方案更有優(yōu)勢(shì)。
3
2.2.5 調(diào)速方式的選擇方案一:采用數(shù)模轉(zhuǎn)化芯片DAC
0832來(lái)控制,有單片機(jī)根據(jù)當(dāng)前環(huán)境溫度輸出數(shù)值到DAC0832中,再由DAC0832產(chǎn)生相應(yīng)的模擬信號(hào)控制晶閘管的導(dǎo)通腳,從而采用無(wú)級(jí)調(diào)速電路實(shí)現(xiàn)電扇電機(jī)轉(zhuǎn)速的調(diào)節(jié)。方案二:采用單片機(jī)軟件模擬PWM調(diào)速的方法。PWM是一種按照一定的規(guī)律改變脈沖序列的脈沖寬度,以調(diào)節(jié)輸出量和波形的一種調(diào)節(jié)方式,在PWM驅(qū)動(dòng)控制的調(diào)節(jié)系統(tǒng)中,最常用的是矩形波PWM信號(hào),在控制時(shí)調(diào)節(jié)PWM波的占空比。占空比是指高電平在一個(gè)周期時(shí)間內(nèi)的百分比。在控制電機(jī)的轉(zhuǎn)速時(shí),占空比越大,轉(zhuǎn)速就越快,若全為高電平時(shí)占空比為100%,此時(shí)轉(zhuǎn)速達(dá)到最大。用單片機(jī)的I/O口輸出PWM信號(hào)時(shí),有如下三種方
法:
(1)利用軟件延時(shí)。當(dāng)高電平延時(shí)時(shí)間到時(shí),對(duì)I/O口電平取反,使其變成低電平,再延時(shí)一定時(shí)間,反之在低電平延時(shí)到時(shí),對(duì)I/O口電平取反,如此循環(huán)即可得到PWM信號(hào)。本設(shè)計(jì)就是采用了這種方法。
(2)利用定時(shí)器。控制方法與(1)相同,只是在該方法中利用單片機(jī)的定時(shí)器來(lái)進(jìn)行高低電平的轉(zhuǎn)變,而不是利用軟件的延時(shí)。應(yīng)用此方法時(shí)編程相對(duì)復(fù)雜,故不予以采用。
(3)利用單片機(jī)自帶的PWM控制器。STC系列單片機(jī)自帶PWM控制器,但本系統(tǒng)使用的AT89系列單片機(jī)沒(méi)有此功能,所以不能使用。
對(duì)于方案一,該方案能實(shí)現(xiàn)對(duì)直流電機(jī)的無(wú)級(jí)調(diào)速,速度變化靈敏,但是D/A轉(zhuǎn)換芯片價(jià)格較高,性價(jià)比不高,不采用。
對(duì)于方案二,相對(duì)于其他方案來(lái)說(shuō),采用軟件模擬PWM實(shí)現(xiàn)調(diào)速的過(guò)程,具有個(gè)高的性價(jià)比與靈活性,充分的發(fā)揮了單片機(jī)自身的性能,對(duì)本系統(tǒng)的實(shí)現(xiàn)又提供了一條有效的途徑。所以綜合考慮還是選擇方案二的第一種。
2.2.6 驅(qū)動(dòng)方式選擇
方案一:達(dá)林頓反向驅(qū)動(dòng)器ULN2803。
方案二:電橋驅(qū)動(dòng)電路L298N。對(duì)于方案一,作為一款反向驅(qū)動(dòng)
器,ULN2803應(yīng)用廣泛,驅(qū)動(dòng)效果也很好,與TTL信號(hào)兼容性很好,但是在后續(xù)的硬件電路中表現(xiàn)不佳,風(fēng)扇轉(zhuǎn)速改變不明顯,而且在最高檔出現(xiàn)斷檔的情況,風(fēng)扇不轉(zhuǎn),在修改硬件電路,修改程序后依舊效果不佳,驅(qū)動(dòng)力明顯不足,故方案一中途停用。
對(duì)于方案二,由于之前已經(jīng)有使用過(guò),對(duì)L298N這個(gè)橋式驅(qū)動(dòng)模塊的應(yīng)用上手快速,驅(qū)動(dòng)能力也比ULN2803好很多,驅(qū)動(dòng)風(fēng)扇5檔變速的實(shí)際效果明顯,故采用方案二。
3 硬件設(shè)計(jì)系統(tǒng)主要器件包括溫度傳感器DS18B20、AT89S51單片機(jī)、液晶顯示屏LCD1602、橋式驅(qū)動(dòng)模塊L298N、
4
對(duì)射式光電開(kāi)關(guān)開(kāi)關(guān)和風(fēng)扇。輔助元件包括電容電阻、晶振、電源、按鍵、變壓器等。
3.1系統(tǒng)各器件簡(jiǎn)介
3.1.1 單線程數(shù)字溫度傳感器DS18B20此溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后推出的一種改進(jìn)型智能溫度傳感器DS18B20。作為新一帶數(shù)字檢測(cè)元件,DS1820是世界上第一片支持 "一線總線"接口的溫度傳感器,在其內(nèi)部使用了在板(ON-BOARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。一線總線獨(dú)特而且經(jīng)濟(jì)
的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。現(xiàn)在,新一代的DS18B20體積更小、更經(jīng)濟(jì)、更靈活。使你可以充分發(fā)揮“一線總線”的優(yōu)點(diǎn)。DS18B20可以程序設(shè)定9~12位的分辨率,精度為±0.5°C。可選更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。測(cè)溫范圍為-55~125℃,最大分辨率可達(dá)0.0625℃。DS18B20減少了外部的硬件電路,直接輸出數(shù)字信號(hào),具有低成本和易使用的特點(diǎn)。圖2 溫度傳感器DS18B20
3.1.2 AT89S51單片機(jī)簡(jiǎn)介AT89S51是一個(gè)低功耗,高性能COMS 8位單片機(jī),片內(nèi)含4Kbytes
ISP的反復(fù)可讀寫(xiě)1000次的Flash只讀程序儲(chǔ)存器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了8位中央處理器和IPS Flash存儲(chǔ)單元,AT89S51在眾多嵌入式系統(tǒng)中得到了廣泛的應(yīng)用。
AT89S51具有完整的輸入輸出和控制端口、以及內(nèi)部程序存儲(chǔ)空間。與我們通常意義上的微機(jī)原理類似,可以通過(guò)外接A/D,D/A轉(zhuǎn)換電路及運(yùn)放芯片實(shí)現(xiàn)對(duì)傳感器傳送信息的采集,且能夠提供以點(diǎn)陣或LCD液晶及外接按鍵實(shí)現(xiàn)人機(jī)交互,能對(duì)內(nèi)部眾多I/O端口連接步進(jìn)電機(jī)對(duì)外圍設(shè)備進(jìn)行精確操控,具有強(qiáng)大的工控能力。
AT89S51系列單片機(jī)編寫(xiě)程序簡(jiǎn)單。其語(yǔ)法結(jié)構(gòu)與我們常用的計(jì)算機(jī)C語(yǔ)言基本相同,不同之處在于增加了控制具體引腳工作的語(yǔ)句和命令,相對(duì)于計(jì)算機(jī)C語(yǔ)言,單片機(jī)C語(yǔ)言更簡(jiǎn)練和明確,可以控制每個(gè)引腳的輸入輸出狀態(tài)。其主要語(yǔ)句集中在例如:“ifelse”、“while”、“for”等循環(huán)與判斷語(yǔ)句上,相比計(jì)算機(jī)C語(yǔ)言更簡(jiǎn)單。
使用AT89S51系列單片機(jī)編程,可以在沒(méi)有實(shí)物單片機(jī)的情況下在普通電腦上進(jìn)行程序編寫(xiě)甚至是調(diào) 5試工作。一般工作中使用Keil公司開(kāi)發(fā)的51單片機(jī)編程軟件進(jìn)行編程,它采用目前流行的開(kāi)發(fā)環(huán)境,集編輯,
編譯和仿真于一體。在該軟件上用戶可以編寫(xiě)匯編語(yǔ)言或C語(yǔ)言源程序,并利用該軟件生成單片機(jī)能運(yùn)行的程序。AT89S51價(jià)格便宜,適合對(duì)大批量的計(jì)量?jī)x器進(jìn)行規(guī);脑欤鋯纹蹆r(jià)不超過(guò)5元。
[圖片]
圖3 AT89S51引腳圖 DIP封裝
3.1.3 橋式驅(qū)動(dòng)電路L298N簡(jiǎn)介
本系統(tǒng)要用單片機(jī)控制風(fēng)扇直流電機(jī),需要加驅(qū)動(dòng)電路,為直流電機(jī)提供足夠大的驅(qū)動(dòng)電流,并能在模擬PWM波的情況下實(shí)現(xiàn)風(fēng)扇轉(zhuǎn)速的改變。在本系統(tǒng)驅(qū)動(dòng)電路中,選用橋式驅(qū)動(dòng)電路L298N來(lái)驅(qū)動(dòng)風(fēng)扇直流電機(jī)。L298N在使用時(shí)接口簡(jiǎn)單,操作方便,可為電機(jī)提供穩(wěn)定的驅(qū)動(dòng)電流,可以同時(shí)驅(qū)動(dòng)兩臺(tái)直流電機(jī),可以在模擬PWM波的情況下很好的輸出信號(hào),實(shí)現(xiàn)風(fēng)扇轉(zhuǎn)速的平滑改變。L298N是專用驅(qū)動(dòng)集成電路,屬于H橋集成電路,與L293D的差別是其輸出電流增大,功率增強(qiáng)。其輸出電
流為2A,最高電流4A,最高工作電壓50V,可以驅(qū)動(dòng)感性負(fù)載,如大功率直流電機(jī),(二相、三相、四相)步進(jìn)電機(jī),伺服電機(jī),電磁閥等,特別是其輸入端可以與單片機(jī)直接相聯(lián),從而很方便地受單片機(jī)控制。當(dāng)驅(qū)動(dòng)直流電機(jī)時(shí),可以直接控制兩路電機(jī),并可以實(shí)現(xiàn)電機(jī)正轉(zhuǎn)與反轉(zhuǎn),實(shí)現(xiàn)此功能只需改變輸入端的邏輯電平。
模塊接口說(shuō)明:
+5V:芯片電壓+5V。
VCC:電機(jī)電壓,最大可接50V。
GND:共地接法。
EN1、EN2:高電平有效,EN1、EN2分別為 IN1和IN2、IN3和IN4的使能端。IN1~I(xiàn)N4:輸入端,輸入端電平和輸出端電平是對(duì)應(yīng)的。
[圖片]
圖4 L298N模塊
6
3.1.4 LCD1602簡(jiǎn)介字符型液晶顯示模塊是一種專門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式
LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。一般1602字符型液晶顯示器實(shí)物如圖:
[圖片]
圖5 LCD1602
LCD1602主要技術(shù)參數(shù):
顯示容量:16×2個(gè)字符
芯片工作電壓:4.5—5.5V
工作電流:2.0mA(5.0V)
模塊最佳工作電壓:5.0V
字符尺寸:2.95×4.35(W×H)mm
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。
第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電
平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。
第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
第15腳:背光源正極。
第16腳:背光源負(fù)極。
3.1.5對(duì)射式光電開(kāi)關(guān)簡(jiǎn)介
[圖片]
圖6 對(duì)射式光電開(kāi)關(guān)
光電開(kāi)關(guān)E18的技術(shù)參數(shù):
7
1、輸出電流 DC/SCR/繼電器 Control output:100mA/5V供電
2、消耗電流DC<25mA
3、響應(yīng)時(shí)間 <2ms
4、指向角:≤15°,有效距離3-50CM可調(diào)
5、檢測(cè)物體:透明或不透明體
6、工作環(huán)境溫度:-25℃~+55℃
7、標(biāo)準(zhǔn)檢測(cè)物體:太陽(yáng)光10000LX以下 白熾燈3000LX以下
8、外殼材料:塑料
電氣特性:
U:5VDC
I:100mA
Sn:3-50CM
3.2 各部分電路設(shè)計(jì)
3.2.1 開(kāi)關(guān)復(fù)位與晶振電路
單片機(jī)系統(tǒng)中,有兩個(gè)非常重要的電路,一個(gè)是開(kāi)關(guān)復(fù)位電路,用來(lái)對(duì)單片機(jī)本身和其外部擴(kuò)展I/O接口電路進(jìn)行復(fù)位,還有一個(gè)是晶振電路,用于產(chǎn)生諧振,使單片機(jī)得以工作。電路圖如圖7
[圖片]
所示:
圖7 晶振電路與復(fù)位電路
單片機(jī)的XTAL1和XTAL2用來(lái)外界石英晶體和微調(diào)電容,連接單片機(jī)內(nèi)OSC的定時(shí)反饋電路。如圖所示,當(dāng)按下按鍵開(kāi)關(guān)是,系統(tǒng)復(fù)位一次。其中電容C1、C2為20pF,C3為10uF,電阻R1為10k,晶振為12MHz。
3.2.2 獨(dú)立控制鍵盤(pán)電路
本設(shè)計(jì)還有兩個(gè)獨(dú)立按鍵,分別連接單片機(jī)的P3.2口和P3.3口,如圖8所示:
8
圖8 按鍵電路
獨(dú)立按鍵S1和S2一端與單片機(jī)相連,另一端接地,當(dāng)按下時(shí),P3口讀取低電平有效。系統(tǒng)上電進(jìn)入工作后,掃描按鍵子程序,此時(shí)可以設(shè)定溫度。其中S1為加按鍵,S2為減按鍵,每按下一次后,都會(huì)使對(duì)應(yīng)的預(yù)設(shè)值加一或者減一。
3.2.3 LCD顯示電路
本設(shè)計(jì)采用的是LCD1602A作為顯示模塊,它與單片機(jī)的連接如圖9所示。其中第一行顯示溫度與紅外探測(cè)結(jié)果,溫度顯示到小數(shù)點(diǎn)后2位。第二行顯示設(shè)定溫度與風(fēng)扇的風(fēng)力等級(jí)。
[圖片]
圖9 LCD連接電路
3.2.4 紅外探測(cè)電路紅外光電開(kāi)關(guān)一共有三個(gè)接口,一個(gè)接+5V,一個(gè)接地,還有一端與單片機(jī)相連,輸出高電平或者低電平信號(hào),
在電路中直接用按鍵開(kāi)關(guān)代替了,就是按鍵電路中的開(kāi)關(guān)S3。
[圖片]
9
3.2.5 溫度采集電路DS18B20數(shù)字溫度傳感器通過(guò)其內(nèi)部計(jì)數(shù)時(shí)鐘周期來(lái)的作用,實(shí)現(xiàn)了特有的溫度測(cè)量功能。低溫系數(shù)振蕩器輸出的時(shí)鐘信號(hào)通過(guò)由高溫度系數(shù)振蕩器產(chǎn)生的門(mén)周期而被計(jì)數(shù),計(jì)數(shù)器
預(yù)先置有與-55℃相對(duì)應(yīng)的一個(gè)基權(quán)值。如果計(jì)數(shù)器計(jì)數(shù)到0時(shí),高溫度系數(shù)振蕩周期還未結(jié)束,則表示測(cè)量的溫度值高于-55℃,被預(yù)置在-55℃的溫度寄存器中的值就增加1℃,然后這個(gè)過(guò)程不斷重復(fù),直到高溫度系數(shù)振蕩周期結(jié)束為止。此時(shí)溫度寄存器中的值即為被測(cè)溫度值,這個(gè)值以16位二進(jìn)制形式存放在存儲(chǔ)器中,通過(guò)主機(jī)發(fā)送存儲(chǔ)器讀命令可讀出此溫度值,讀取時(shí)低位在前,高位在后,依次進(jìn)行。由于溫度振蕩器的拋物線特性的影響,其內(nèi)用斜率累加器進(jìn)行補(bǔ)償。DS18B20由于直接可以輸出數(shù)字信號(hào),所以可以直接輸出給單片機(jī),但是需要在輸出口上接一個(gè)上拉電阻來(lái)確保工作,連接圖如圖10所示:
[圖片]
圖10 DS18B20連接電路
3.2.6 風(fēng)扇驅(qū)動(dòng)電路
本設(shè)計(jì)采用單片機(jī)模擬PWM波的方式通過(guò)I/O口輸出TTL信號(hào),再通過(guò)一個(gè)電機(jī)驅(qū)動(dòng)模塊L298N來(lái)驅(qū)動(dòng)12V直流無(wú)刷電機(jī)工作,從而實(shí)現(xiàn)電扇轉(zhuǎn)速的調(diào)節(jié)。紅外探測(cè)控制電機(jī)開(kāi)關(guān),鍵盤(pán)改變?cè)O(shè)置的溫度,然后和預(yù)設(shè)的溫度進(jìn)行比較,通過(guò)軟件判斷后由單片機(jī)的P3.4口輸出脈沖信號(hào),經(jīng)由L298N驅(qū)動(dòng)風(fēng)
扇直流電機(jī)電路,實(shí)現(xiàn)電機(jī)的啟動(dòng)和轉(zhuǎn)速的改變。當(dāng)環(huán)境溫度改變時(shí),電機(jī)的轉(zhuǎn)速會(huì)按照設(shè)定的程序相對(duì)進(jìn)行改變,溫度升高轉(zhuǎn)速變快,溫度降低,轉(zhuǎn)速變慢,溫度過(guò)低時(shí)自動(dòng)停止,無(wú)人狀態(tài)下也會(huì)自動(dòng)停止。當(dāng)有人出現(xiàn)后,并且溫度高于預(yù)設(shè)溫度,電機(jī)重新開(kāi)始工作。如圖12所示:
[圖片]
圖11 L298N驅(qū)動(dòng)電路
10
圖12 直流電機(jī)連接電路
4 軟件設(shè)計(jì)
軟件編寫(xiě)有C語(yǔ)言和匯編語(yǔ)言兩種,這兩種語(yǔ)言我都有所了解,兩種語(yǔ)言各有特點(diǎn)。
C語(yǔ)言具有編寫(xiě)簡(jiǎn)單,容易上手的特點(diǎn),而且看起來(lái)?xiàng)l理清晰,便于修改,能夠快速準(zhǔn)確的找到錯(cuò)誤并進(jìn)行改正。相對(duì)于匯編語(yǔ)言,作為一種低級(jí)的機(jī)器語(yǔ)言,讀程序相對(duì)繁瑣,但程序?qū)懞煤笠馑济髁耍室惨哂贑語(yǔ)言編寫(xiě)的程序,具有很好的開(kāi)發(fā)功能。
結(jié)合自身實(shí)際,我還是選擇了C語(yǔ)言,容易上手,可以更好的調(diào)試與編譯程序。
4.1 主程序流程圖
[圖片]
圖13 主程序流程圖 主程序如下:
11
[圖片]
void main(void) {
uint ltemp; dianji=0;
int1=0; int2=0; init();
read_temp(); // delay(1000);
while(1)
{ delay(2);
ltemp=read_temp();write_com(0x80+2);
write_data(0x30+ltemp%10000/1000); write_data(0x30+ltemp%1000/100); write_data(0x2e); write_data(0x30+ltemp%100/10); write_data(0x30+ltemp%10); write_data(0xdf);
keyscan();
delay(2);
write_com(0x80+0x40+4);
write_data(0x30+set%100/10); write_data(0x30+set%10); write_data(0xdf);
deal(ltemp/100);
dianjik();
write_com(0x80+0x40+15);
write_data(0x30+h);
write_com(0x80+15);
write_data(0x30+r); }
//初始化 //初始化溫度 //初始化電機(jī)
//初始化液晶顯示屏
讀取測(cè)溫子程序,讀取溫度數(shù)值 //延時(shí) //循環(huán)開(kāi)始
//溫度賦值
//將溫度顯示到液晶屏
//讀取鍵盤(pán)子程序
//將設(shè)定溫度顯示到液晶屏
//運(yùn)行溫度判斷子程序
//運(yùn)行電機(jī)控制子程序 //將風(fēng)扇轉(zhuǎn)速顯示到液晶屏
//將紅外探測(cè)結(jié)果顯示到液晶屏12
}
4.2 液晶顯示子程序
液晶LCD1602的子程序要按照說(shuō)明上的時(shí)序圖來(lái)完成。要想讓LCD顯示的話,首先要對(duì)LCD進(jìn)行初始化。在完成LCD的初始化后,還需要定義字符的位置,并且定義寫(xiě)數(shù)據(jù)的函數(shù)。其第一行的地址是40H~4FH,第二行的地址是從80H~8FH,然后才能根據(jù)要顯示字符的ASCⅡ碼對(duì)該字
符進(jìn)行顯示。
其流程圖14所示:
[圖片]
圖14 液晶顯示程序流程圖
子程序如下:
//*******初始化函數(shù)***************
void init(void)
{ uint i;
E=0;
RW=0;
RS=0;
delay(10); //延時(shí)10ms
write_com(0x01); //清屏
delay(5);
write_com(0x38); //設(shè)顯示模式
delay(5);
write_com(0x0c); //開(kāi)顯示不顯光標(biāo) 光標(biāo)不閃
delay(5);
write_com(0x06); //地址自動(dòng)加一 光標(biāo)自動(dòng)加一
delay(5);
write_com(0x80);
for(i=0;i<16;i++)
write_data(table2[i]);
write_com(0x80+0x40);
for(i=0;i<16;i++)
write_data(table1[i]);
13
}
//********寫(xiě)指令函數(shù)************
void write_com(uchar command)
{
}
//********寫(xiě)數(shù)據(jù)函數(shù)*************
void write_data(uchar dat)
{
}RS=1; P0=dat; delay(5); E=1; //允許 //數(shù)據(jù) RS=0; RW=0; P0=command; delay(5); E=1; //允許 //指令 //寫(xiě)入 delay(10); E=0; delay(10); E=0;
4.3 DS18B20溫度傳感器子程序
4.3.1 溫度讀取程序
DS18B20溫度讀取程序負(fù)責(zé)把DS18B20測(cè)得的外界數(shù)據(jù)經(jīng)過(guò)AD轉(zhuǎn)化為數(shù)字,然后將數(shù)據(jù)存入寄存器中,供溫度處理程序進(jìn)行下一步操作。
其流程圖15所示:
14圖15 DS18B20程序流程圖 子
程序如下:
//**********延時(shí)函數(shù)**************
void delayus(uint z)
{
}
//**********將DS18B20傳感器初始化,讀取應(yīng)答信號(hào)*************
uchar clean_ds18b20()
{
uchar k; //儲(chǔ)存DS18B20是否存在的標(biāo)志,k=0,表示存在;k=1,表 uchar i; for(i=0;i<z;i++); 示不存在
dq=1; //先將數(shù)據(jù)線拉高 //延時(shí) //再將數(shù)據(jù)線從高拉低,要求保持480~960us //略微延時(shí),以向DS18B20發(fā)出一持續(xù)480~960us的低電delayus(5); dq=0; delayus(30);
平復(fù)位脈沖
脈沖)
dq=1; //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) //延時(shí)(釋放總線后需等待15~60us讓DS18B20輸出存在delayus(3); k=dq; //讓單片機(jī)檢測(cè)是否輸出了存在脈沖(dq=0表示存在) //延時(shí)足夠長(zhǎng)時(shí)間,等待存在脈沖輸出完畢
[圖片]
15 delayus(25);
}
return k; //返回檢測(cè)成功標(biāo)志//**********從DS18B20讀取一
個(gè)字節(jié)數(shù)據(jù)*************
uchar read_ds18b20_date()
{
for(i=0;i<8;i++) { dq=1;
_nop_(); //先將數(shù)據(jù)線拉高 //等待一個(gè)機(jī)器周期 //讀8位 uchar value,i; //儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù)
時(shí)序
作準(zhǔn)備} } dq=0; //單片機(jī)從DS18B20讀書(shū)據(jù)時(shí),將數(shù)據(jù)線從高拉低即啟動(dòng)讀value>>=1; dq=1; //將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測(cè)DS18B20的輸出電平 if(dq) //如
果讀到的數(shù)據(jù)是1,則將1存入value value|=0x80; delayus(6); if(!dq) //如果讀到的數(shù)據(jù)是0,則將0存入value value|=0x00; delayus(6); return value; //返回讀出的十進(jìn)制數(shù)據(jù)
//***********向DS18B20寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)*************
void write_ds18b20_date(uchar date)
{
uchar num; for(num=0;num<8;num++) { dq=1; //先將數(shù)據(jù)線拉高 16_nop_(); //等待一個(gè)機(jī)器周期 dq=0; //將數(shù)據(jù)線從高拉低時(shí)
即啟動(dòng)寫(xiě)時(shí)序 //利用與運(yùn)算取出要寫(xiě)的某位二進(jìn)制數(shù)據(jù),并將其送到數(shù)據(jù)dq=date&0x01;
線上等待DS18B20采樣
}
4.3.2 溫度處理程序
溫度處理程序?qū)⑸弦话巡僮髦凶x取的溫度值進(jìn)行轉(zhuǎn)換,將二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),然后輸出數(shù)字,直接交給顯示程序顯示。
其流程圖16所示:圖16 溫度處理子程序流程圖 } date>>=1; delayus(4); dq=1; //4us //釋放數(shù)據(jù)線 delayus(4); //稍作延時(shí),給硬件一點(diǎn)反應(yīng)時(shí)間 其子
程序如下:
//**************做好讀溫度的準(zhǔn)備**************
uint read_temp()
{
[圖片]17
uint g,d,m;
uint c;
m=1;
m=clean_ds18b20(); //初始化完成m=0
while(m); //等待初始化完成
write_ds18b20_date(0xcc); //跳過(guò)rom
write_ds18b20_date(0x44); //啟動(dòng)溫度測(cè)量
delayus(100);
m=clean_ds18b20();
while(m); //等待轉(zhuǎn)化完成
write_ds18b20_date(0xcc); //跳過(guò)rom
write_ds18b20_date(0xbe); //讀數(shù)據(jù)命令
d=read_ds18b20_date(); //讀低8位數(shù)據(jù)
g=read_ds18b20_date(); //讀高3位數(shù)據(jù)
g<<=4;
g=g+(d>>4); //整數(shù)部分
g=g*100;
d=(d&0x0f)*0.0625*100;
c=g+d;
return c;
}
4.4 鍵盤(pán)掃描子程序
本設(shè)計(jì)配備兩個(gè)輸入按鍵,分別可以對(duì)設(shè)定溫度進(jìn)行加減,此子程序用來(lái)檢測(cè)按鍵輸入。流程圖17所示:
圖17 鍵盤(pán)掃描流程圖
[圖片]
18
子程序如下:
//****************鍵盤(pán)輸入********************
void keyscan(void)
{
} if(key1==0) { } if(key2==0) //延時(shí)判斷key2是否按下 //判斷key2是否按下 //延時(shí)判斷key1是否按下 //判斷key1是否按下 delay(10); if(key1==0) { } set++; //設(shè)定溫度加1 if(key1==100) set=18; while(!key1); { } delay(10); if(key2==0) { } set--; if(set==0) set=18; //設(shè)定溫度減1 while(!key2);
4.5 溫度比較處理子程序溫控風(fēng)扇設(shè)定5個(gè)檔位,根據(jù)溫度
的變化來(lái)變化風(fēng)扇的轉(zhuǎn)速。輸出的型式采用高地電平的交替變換,檔位越高,輸出高電平的次數(shù)越多,相應(yīng)的輸出低點(diǎn)平的次數(shù)變少,反之,檔位越低,輸出的高電平次數(shù)越少,相應(yīng)的輸出的高電平的次數(shù)變多。低于設(shè)定溫度時(shí),風(fēng)扇不轉(zhuǎn),大于最大擋位時(shí)滿負(fù)荷運(yùn)轉(zhuǎn)。
流程如圖18所示:
19
圖18 溫度比較處理流程圖
子程序如下:
//*************溫度處理函數(shù)****************void deal(uint temp) //溫
度處理
{
if(temp<=set)
{ //溫度低于設(shè)置值
h=0;
l=5;
}
else if((temp>set)&&(temp<=(set+1))) //溫度低于設(shè)定值+1
{
h=1;
l=4;
}
else if((temp>(set+1))&&(temp<=(set+3))) //溫度高于設(shè)定值+1,小于設(shè)定值+3
[圖片]20
} { } else if((temp>(set+3))&&(temp<=(set+5))) { } else if((temp>(set+5))&&(temp<=(set+7))) { } else if(temp>(set+7)) { h=5; l=0; } //溫度高于設(shè)定值+7 h=4; l=1; //溫度值高于設(shè)定值+5,小于設(shè)定值+7 h=3; l=2; //溫度高于設(shè)定值+3,小于設(shè)定值+5 h=2; l=3;
4.6 電機(jī)控制程序(包含紅外探測(cè))本設(shè)計(jì)最終驅(qū)動(dòng)電機(jī)的子程序,包含了紅外檢測(cè)。首先進(jìn)行紅外檢測(cè)判斷,若沒(méi)有人,電機(jī)不轉(zhuǎn),若有人,承接上函數(shù)設(shè)定的檔位,模擬PWM波輸
出,一次輸出5個(gè)電平,1檔就輸出一個(gè)高電平,四個(gè)低電平,2檔輸出兩個(gè)高電平,三個(gè)低電平,依次類推。
流程圖如圖
[圖片]
圖19 紅外探測(cè)電機(jī)輸出流程圖
21
子程序如下:
//*************電機(jī)模擬PWM控制程序*********************
void dianjik()
{
uchar q;
{
for(q=0;q<l&red==0;q++)
{
dianji=0;
int1=0;
int2=0;
r=1;
delay(100); }
for(q=0;q<h&&red==0;q++)
{
dianji=1;
int1=1;
int2=0;
r=1;
delay(100);
}
for(q=0;q<l&red==1;q++)
{
dianji=0;
int1=0;
int2=0;
r=0;delay(10);
}
for(q=0;q<h&&red==1;q++)
{
dianji=1;
int1=0;
int2=0;
r=0;
//紅外感應(yīng)有人,輸出設(shè)定的低電平次數(shù) //紅外感應(yīng)有人,輸出設(shè)定的高電平次數(shù)//紅外感應(yīng)沒(méi)人,不輸出 //紅外感應(yīng)沒(méi)人,不輸出 22
}
} } delay(10);
4.7 軟件設(shè)計(jì)中的問(wèn)題與分析
4.7.1 LCD顯示程序的問(wèn)題
由于LCD要顯示的數(shù)據(jù)有四個(gè),溫度、檔位、紅外探測(cè)、設(shè)定溫度,所以如何合理的安排輸出順序很重要,合理的輸出順序才能對(duì)應(yīng)外部正確的表現(xiàn)。每個(gè)數(shù)據(jù)在輸出后都要有一定的延時(shí),這樣才能清楚的顯示在LCD屏幕上。由于本程序是基于溫度的,所以第一個(gè)輸出的就是溫度值;然后本程序要執(zhí)行的是溫度的比較,所以第二個(gè)輸出的必然是設(shè)定溫度,設(shè)定溫度還要同時(shí)讀取鍵盤(pán)程序,實(shí)時(shí)跟隨鍵盤(pán)輸入的改變而改變;第三個(gè)輸出的就是比較溫度后的設(shè)定風(fēng)速了,顯示的風(fēng)速就是檔位數(shù);最后輸出的就是紅外探測(cè)的結(jié)果,以0和1來(lái)表示,1為有人,處于工作狀態(tài),0為無(wú)人,處于待機(jī)狀態(tài)。剛開(kāi)始調(diào)試程序的時(shí)候,數(shù)值沒(méi)在LCD上顯示,后來(lái)發(fā)現(xiàn)是主函數(shù)忘記了調(diào)用子函數(shù),使得數(shù)據(jù)沒(méi)有輸入,后來(lái)經(jīng)過(guò)修改和調(diào)整,終于在LCD上正常顯示出來(lái)了。合理的程序使得程序顯示狀態(tài)井然有序。
4.7.2 DS18B20的顯示程序問(wèn)題在本設(shè)計(jì)中,DS18B20的顯示是最核心的數(shù)據(jù),所有其他數(shù)據(jù)都與之相對(duì)應(yīng)改變,電機(jī)的轉(zhuǎn)速也與之相關(guān),但是在程序調(diào)試過(guò)程中,發(fā)現(xiàn)了一個(gè)問(wèn)題,每次給單片機(jī)上電之后,總有那么不到一秒鐘的時(shí)間,溫度顯示的值是85℃,不斷電的情況下復(fù)位沒(méi)有出現(xiàn)這種情況,只有每次啟動(dòng)的時(shí)候出現(xiàn)。
當(dāng)顯示85后,其他的數(shù)據(jù)也隨之變?yōu)閷?duì)應(yīng)值,風(fēng)扇也有一個(gè)短暫的轉(zhuǎn)動(dòng),這對(duì)于這個(gè)設(shè)計(jì)來(lái)說(shuō)無(wú)疑是一個(gè)很致命的缺陷。開(kāi)始查找原因,從DS18B20的數(shù)據(jù)手冊(cè)中發(fā)現(xiàn),每次上電后,DS18B20的暫存器中存儲(chǔ)的數(shù)據(jù)就是85,在讀取數(shù)據(jù)后,內(nèi)部的AD要使用750ms的時(shí)間來(lái)進(jìn)行數(shù)據(jù)的轉(zhuǎn)換然后重新寫(xiě)入新的數(shù)據(jù),所以在這段時(shí)間中,顯示的數(shù)值就是85了,看來(lái)這是硬件上不可避免的過(guò)程,但是硬件上不能改變的話,我可以使用軟件的方法來(lái)進(jìn)行變動(dòng),我最后采取的方法是在循環(huán)程序開(kāi)始之前,先讀取一次DS18B20的數(shù)值,然后給與一個(gè)1s的延時(shí),使得AD轉(zhuǎn)換完成,然后在開(kāi)始循環(huán),這樣,這個(gè)問(wèn)題終于得以解決了。
5 硬件調(diào)試
硬件電路的調(diào)試相對(duì)來(lái)說(shuō)比較簡(jiǎn)單。調(diào)試的功能包括按鍵電路,DS18B20,電機(jī)電路和紅外傳感電路。 23
5.1 按鍵電路的調(diào)試
按鍵電路實(shí)現(xiàn)的功能是在按鍵按下后能執(zhí)行設(shè)定溫度的改變,這項(xiàng)采用實(shí)物調(diào)試,按鍵按下之后,溫度隨之改變。
5.2 溫度傳感器電路的調(diào)試
溫度傳感器DS18B20的調(diào)試在實(shí)物上進(jìn)行,當(dāng)用手指去加熱溫度傳感器DS18B20的時(shí)候,LCD示數(shù)開(kāi)始隨溫度的上升而改變,變化明顯而且刷新頻率適中,可以清晰的看到所顯示的溫度。
5.3 電機(jī)電路的調(diào)試
電機(jī)電路進(jìn)行調(diào)試,不斷的將設(shè)定溫度降低,觀察電機(jī)轉(zhuǎn)速的變化。電機(jī)隨設(shè)定溫度與實(shí)際溫度差值的改變而改變,轉(zhuǎn)速變化較為平滑,達(dá)到了預(yù)期的效果。
5.4 紅外感應(yīng)電路的調(diào)試
紅外感應(yīng)電路直接測(cè)試,在前方無(wú)人時(shí),系統(tǒng)處于待機(jī)狀態(tài),電機(jī)不轉(zhuǎn)動(dòng)。當(dāng)前方有人時(shí),電機(jī)開(kāi)始轉(zhuǎn)動(dòng)(在溫度高于預(yù)設(shè)溫度的時(shí)候)。
5.5 硬件調(diào)試遇到的問(wèn)題本次設(shè)計(jì)中遇到的最困難的問(wèn)題就是出在了電機(jī)的驅(qū)動(dòng)上,剛開(kāi)始的設(shè)計(jì)使用的達(dá)林頓ULN2803反向驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)電機(jī),可是在軟件無(wú)誤,硬件
連接無(wú)誤的情況下,電機(jī)轉(zhuǎn)動(dòng)表現(xiàn)出來(lái)的是變速效果不明顯,最高檔時(shí)停轉(zhuǎn)現(xiàn)象的發(fā)生。再不斷的修改軟件和硬件電路無(wú)果的情況下,放棄了這個(gè)驅(qū)動(dòng),改用橋式驅(qū)動(dòng)電路L298N,所有的問(wèn)題迎刃而解,反向驅(qū)動(dòng)的驅(qū)動(dòng)力不連續(xù),而且驅(qū)動(dòng)力在小電流的輸入輸出時(shí)不足,使得電機(jī)驅(qū)動(dòng)產(chǎn)生了非常不理想的效果。
6 結(jié)論
此次的設(shè)計(jì)遇到的每個(gè)問(wèn)題對(duì)我來(lái)說(shuō)都是一個(gè)很大的挑戰(zhàn),在老師的幫助和自己的探索中,我完成了“基于51單片機(jī)的智能溫控電扇設(shè)計(jì)”,設(shè)計(jì)了硬件電路,獨(dú)立完成了軟件編寫(xiě)。在設(shè)計(jì)中,實(shí)現(xiàn)了預(yù)期的功能,成
功設(shè)計(jì)出了LCD顯示模塊、DS18B20測(cè)溫模塊、溫控變速模塊,紅外探測(cè)模塊,以及進(jìn)行了系統(tǒng)的仿真,從實(shí)踐中鞏固了所學(xué)的知識(shí),并且在探索中學(xué)習(xí)到了新的知識(shí)。
通過(guò)這次設(shè)計(jì),我又對(duì)單片機(jī)的知識(shí)有了一定的拓展,對(duì)處理問(wèn)題的能力有了一定的提高,這次設(shè)計(jì)中的電機(jī)驅(qū)動(dòng)就是一個(gè)很好的挑戰(zhàn),雖然一開(kāi)始走了彎路,沒(méi)有能夠很好的處理好這個(gè)變速的問(wèn)題,但是 24
經(jīng)過(guò)一番的反復(fù)實(shí)踐,終于獲得了一種最好的電路,很好的完成了這個(gè)設(shè)計(jì)。
這次的設(shè)計(jì)對(duì)我而言不僅僅是一個(gè)畢業(yè)設(shè)計(jì),更是對(duì)我大學(xué)四年學(xué)習(xí)的一個(gè)檢驗(yàn),給了我一次實(shí)踐的機(jī)會(huì),運(yùn)用自己的所學(xué)來(lái)完成這個(gè)設(shè)計(jì)。從設(shè)計(jì)中,我學(xué)習(xí)到了很多東西,提高了自己獨(dú)立學(xué)習(xí)和思考能力,不管對(duì)于硬件電路還是軟件設(shè)計(jì),都有了很多自己的體會(huì)和認(rèn)識(shí),懂得了如何在實(shí)際中靈活運(yùn)用所學(xué)的知識(shí),是一次難得的鍛煉機(jī)會(huì),為我以后無(wú)論是學(xué)習(xí)還是工作打下了堅(jiān)實(shí)的基礎(chǔ)。
25
參考文獻(xiàn): [1] 李學(xué)龍.使用單片機(jī)控制的智能遙控電風(fēng)扇控制器[J].電子電路制作.2003.9:13—15.
[2] 郭天祥.新概念51單片機(jī)C語(yǔ)言教程[M].北京:電子工業(yè)出版社.2009.342—344.
[3] 藍(lán)厚榮.單片機(jī)的PWM控制技術(shù)[J].工業(yè)控制計(jì)算機(jī).2010.23(3):97—98.
[4] 胡漢才.單片機(jī)原理及其接口技術(shù)[M](第2版).北京:清華大學(xué)出版社.2004.49—77.
[5] 胡全.51單片機(jī)的數(shù)碼管動(dòng)態(tài)顯示技術(shù)[J] .信息技術(shù).2009.13:25—26.
[6] 李鋼,趙彥峰.1-Wire總線數(shù)字溫度傳感器DSI8B20原理及應(yīng)用[J].現(xiàn)代電子技術(shù).2005.28(21):
77—79.
[7] 馬云峰.單片機(jī)與數(shù)字溫度傳感器DS18B20的接口設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制.2007.10(4):
278—280.
[8] 王會(huì)明,侯加林.智能電風(fēng)扇控制器的研制[J].電子與自動(dòng)化.1998.5(4):25—26.
[9] 譚浩強(qiáng).C程序設(shè)計(jì)[M](第三版).北京:清華大學(xué)出版社.2005.37—65.
[10] 孫號(hào).Proteus軟件在設(shè)計(jì)電子電路中的應(yīng)用[J].儀表技術(shù).2009.8:74—75.
[11] 樓俊軍.基于Proteus和Keil的單片機(jī)演奏樂(lè)曲的實(shí)現(xiàn)[J].科技信息.2010.23:50.
[12] 王文海,周歡喜.用Proteus實(shí)現(xiàn)51單片機(jī)的動(dòng)態(tài)仿真調(diào)試[J].IT技術(shù).2006,20:10—11.
[13] 丁建軍,陳定方,周?chē)?guó)柱.基于AT89C51的智能電風(fēng)扇控制系統(tǒng)[J].湖北工學(xué)院學(xué)報(bào).2003,18(2):
60—63.
[14] 王會(huì)明,侯加林.智能電風(fēng)扇控制器的研制[J].電子與自動(dòng)化.1998,5(4):25—26.
[15] 劉進(jìn)山.基于MCS-51電風(fēng)扇智能調(diào)速器的設(shè)計(jì)[J].廣州:電子質(zhì)量.2004,10(10):71.
|
|