王 向 玲
(1. 呂梁學(xué)院 礦業(yè)工程系, 山西 呂梁 033000;2. 中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室, 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室, 太原 030051)
單片機(jī)原理是一門(mén)工程實(shí)踐性極強(qiáng)但理論知識(shí)抽象的課程,學(xué)習(xí)過(guò)程應(yīng)注重“邊學(xué)邊做”即理論與實(shí)踐的高度融合。針對(duì)應(yīng)用型本科院校的人才培養(yǎng)要求,結(jié)合自身教學(xué)經(jīng)驗(yàn),在課堂引入Proteus軟件,學(xué)生自帶計(jì)算機(jī),課堂上自行設(shè)計(jì)電路、編寫(xiě)程序聯(lián)合Keil調(diào)試,真正實(shí)現(xiàn)了時(shí)間、空間上的學(xué)做融合,將抽象的理論知識(shí)直觀化、形象化,增加課堂趣味性、調(diào)動(dòng)學(xué)生積極性的同時(shí)加深了對(duì)理論知識(shí)的鞏固[1-5]。
在單片機(jī)I/O口使用、中斷、定時(shí)器、串口通信、AD/DA轉(zhuǎn)換、LCD液晶顯示、傳感器等基礎(chǔ)知識(shí)實(shí)踐的基礎(chǔ)上,為了提高學(xué)生綜合運(yùn)用知識(shí)的能力和設(shè)計(jì)能力,列出了幾個(gè)綜合性、設(shè)計(jì)性實(shí)驗(yàn),具體以分組形式進(jìn)行。以其中一組學(xué)生設(shè)計(jì)的“溫室溫濕度控制系統(tǒng)”為例,講述總體思路及關(guān)鍵的硬件電路、軟件設(shè)計(jì)。
溫室溫濕度控制在農(nóng)作物生長(zhǎng)的適宜范圍非常關(guān)鍵。溫濕度控制系統(tǒng)采用DHT11溫濕度傳感器采集數(shù)據(jù)且實(shí)時(shí)準(zhǔn)確地通過(guò)LCD1602顯示,為了滿足不同農(nóng)作物的生長(zhǎng),系統(tǒng)溫濕度上下限可通過(guò)按鍵設(shè)置。當(dāng)測(cè)量值不在范圍內(nèi),對(duì)應(yīng)的LED燈點(diǎn)亮、蜂鳴器報(bào)警,同時(shí)啟動(dòng)控制模塊進(jìn)行溫濕度調(diào)節(jié)直至正常[6-7]。
整個(gè)系統(tǒng)由主控、溫濕度采集、按鍵設(shè)置、報(bào)警、控制以及顯示等模塊組成,整體框圖如圖1所示。
圖1 系統(tǒng)整體框圖
主控模塊作為整個(gè)系統(tǒng)的核心,采用AT89C52單片機(jī),其片內(nèi)帶有8 KB、支持擦寫(xiě)的Flash存儲(chǔ)器,與AT89C51相比,中斷源和存儲(chǔ)空間多,便于后期增加其他環(huán)境參數(shù)的測(cè)量[8-9]。
主控模塊與各模塊連接關(guān)系如下:P0.0~P0.7、P2.0~P2.2口與顯示模塊相連,P2.3口與溫濕度采集模塊相連,P2.4~P2.7口與控制模塊相連,P1.0~P1.3口與報(bào)警模塊相連,P1.4~P1.7口與按鍵設(shè)置模塊相連。該模塊中P3口空閑,后續(xù)可用于溫室其他環(huán)境參數(shù)如光照強(qiáng)度、CO2等的控制。
主控模塊實(shí)現(xiàn)如下功能:① 接收溫濕度傳感器的數(shù)據(jù)并將其發(fā)送給顯示模塊;② 接收按鍵設(shè)置模塊指令并進(jìn)行溫濕度上下限的調(diào)節(jié);③ 溫濕度不正常時(shí)給出報(bào)警指令并啟動(dòng)相應(yīng)控制模塊進(jìn)行溫濕度的調(diào)節(jié)。
該模塊采用出產(chǎn)前精度已校準(zhǔn)的DHT11數(shù)字溫濕度傳感器,供電電壓范圍3.3~5.5 V,溫濕度測(cè)量范圍分別為0~500 ℃、20%~90%RH。其內(nèi)部包含一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件,單線制串行接口,僅需一個(gè)I/O口直接與單片機(jī)相連。體積小、功耗低、響應(yīng)快、抗干擾能力強(qiáng)等特點(diǎn)使其成為采集溫濕度的理想選擇[10-11]。
該模塊主要供用戶設(shè)置溫濕度上下限,主要由4個(gè)按鍵組成,依次為功能選擇鍵、加1鍵、減1鍵、保存鍵。功能選擇鍵用于對(duì)溫濕度上下限的選擇,加1鍵、減1鍵分別對(duì)各項(xiàng)參數(shù)進(jìn)行加1、減1操作,保存鍵用于保存已設(shè)置好的溫濕度參數(shù)。
具體操作步驟如下:首先按下功能選擇鍵進(jìn)行預(yù)設(shè)參數(shù)的選擇。當(dāng)?shù)?次按下該鍵時(shí)對(duì)溫度上限WDH設(shè)置,當(dāng)?shù)?次按下該鍵時(shí)對(duì)溫度下限WDL設(shè)置,以此類推當(dāng)?shù)?、4次按下該鍵時(shí)分別對(duì)濕度上限SDH、下限SDL設(shè)置。選中預(yù)設(shè)置參數(shù)后再通過(guò)加1、減1鍵調(diào)整WDH、WDL、SDH、SDL,最后按下保存鍵保存閾值。
控制模塊主要由驅(qū)動(dòng)芯片ULN2004A、加熱器、風(fēng)扇、加濕器、除濕器、三極管、繼電器組成,Proteus仿真中加熱器、風(fēng)扇、加濕器、除濕器均用直流電機(jī)替代,當(dāng)電機(jī)轉(zhuǎn)動(dòng)時(shí)代表對(duì)應(yīng)控制模塊啟動(dòng)工作,以其中一路加濕器為例,控制模塊原理圖如圖2所示。
圖2 系統(tǒng)控制模塊原理圖
當(dāng)DHT11檢測(cè)到溫濕度不在預(yù)先設(shè)定范圍內(nèi)時(shí)便啟動(dòng)控制模塊進(jìn)行調(diào)節(jié)。當(dāng)溫度低于預(yù)設(shè)溫度下限時(shí)加熱器開(kāi)始工作,溫度高于溫度上限時(shí)風(fēng)扇開(kāi)始工作,濕度高于濕度上限時(shí)除濕器開(kāi)始工作,濕度低于濕度下限時(shí)加濕器開(kāi)始工作。
4個(gè)直流電動(dòng)機(jī)與單片機(jī)P2.4~P2.7口連接時(shí)需設(shè)計(jì)驅(qū)動(dòng)電路,驅(qū)動(dòng)芯片選用輸出電流可達(dá)500mA的ULN2004A,其內(nèi)部包含7路反向器電路,即當(dāng)輸入端為高電平時(shí)輸出端為低電平,反之亦然[12]。ULN2004A輸入端適合于CMOS、PMOS器件,本設(shè)計(jì)中單片機(jī)輸出的TTL電平先通過(guò)連接2 kΩ的上拉電阻轉(zhuǎn)換為CMOS電平再接至ULN2004A輸入端;ULN2004A輸出端電流先通過(guò)三極管放大再通過(guò)繼電器控制電動(dòng)機(jī)是否轉(zhuǎn)動(dòng)。
依據(jù)模塊化編程思想,建立多文件工程,具體包括:主程序、DHT11驅(qū)動(dòng)程序、LCD顯示程序。子程序包括定時(shí)器中斷函數(shù)和按鍵掃描子程序。
主程序流程圖如圖3所示。
(1) 初始化DHT11、LCD1602并預(yù)先在程序中設(shè)置溫濕度上下限;
(2) 啟動(dòng)DHT11進(jìn)行溫濕度的采集;
(3) 將采集數(shù)據(jù)及上下限通過(guò)LCD顯示;
(4) 檢測(cè)溫濕度是否超閾值。若超出閾值則LED燈亮、蜂鳴器報(bào)警,同時(shí)啟動(dòng)對(duì)應(yīng)的控制模塊進(jìn)行調(diào)節(jié),而后返回(2)循環(huán)執(zhí)行上述過(guò)程直至溫濕度調(diào)至設(shè)置范圍內(nèi);若沒(méi)超閾值則進(jìn)行(5)。
(5) 掃描是否有按鍵按下。若有按鍵按下則進(jìn)行上下限的調(diào)節(jié)并返回(2)進(jìn)行數(shù)據(jù)的采集及顯示;若無(wú)按鍵按下則結(jié)束。
圖3 主程序流程圖
由于DHT11采用單線制串行接口,故驅(qū)動(dòng)程序(初始化、讀取溫濕度數(shù)據(jù))需按照嚴(yán)格的時(shí)序圖編寫(xiě),時(shí)序圖如圖4所示。
圖4 DHT11時(shí)序圖
總線空閑時(shí)為高電平,開(kāi)始工作時(shí)單片機(jī)拉低總線至少18 ms,然后拉高總線約20~40 μs等待DHT11響應(yīng)。DHT11接收到單片機(jī)發(fā)送的開(kāi)始信號(hào)且等開(kāi)始信號(hào)結(jié)束后,輸出80 μs的低電平作為響應(yīng),接著輸出80 μs高電平進(jìn)入數(shù)據(jù)發(fā)送階段。每一位數(shù)據(jù)都是以50 μs的低電平開(kāi)始,緊跟其后的高電平時(shí)間決定數(shù)據(jù)為1或0。若高電平時(shí)間為26~28 μs則為0,若高電平時(shí)間為70 μs則為1[13-15]。
DHT11的DATA引腳用于和單片機(jī)之間的通信,一次傳送40 bit數(shù)據(jù)且高位先出,數(shù)據(jù)格式為:8 bit濕度整數(shù)數(shù)據(jù)+8 bit濕度小數(shù)數(shù)據(jù)+8 bit溫度整數(shù)數(shù)據(jù)+8 bit溫度小數(shù)數(shù)據(jù)+8 bit校驗(yàn)位,其中溫濕度小數(shù)部分均為0。待40 bit數(shù)據(jù)傳輸完畢后,若校驗(yàn)位等于前4 Byte數(shù)據(jù)相加取其低8 bit,則接收的數(shù)據(jù)正確。反之接收的數(shù)據(jù)有誤,重新接收[16]。
首先在Proteus軟件中繪制系統(tǒng)硬件電路圖,然后采用Keil軟件編寫(xiě)程序并編譯、鏈接,最后將生成的Hex文件加載到單片機(jī)中進(jìn)行仿真。
圖5為溫濕度不超閾值的仿真結(jié)果圖,WD為溫度,SD為濕度。程序中溫濕度預(yù)設(shè)范圍分別為20~30 ℃、60%~85%RH,測(cè)得的溫濕度分別為27 ℃、80%RH,均在預(yù)設(shè)范圍內(nèi),故報(bào)警模塊4個(gè)LED均不亮,直流電動(dòng)機(jī)均不轉(zhuǎn)動(dòng)。
針對(duì)某一農(nóng)作物,溫濕度預(yù)設(shè)范圍調(diào)整為28~30 ℃、66%~75%RH,通過(guò)按下功能選擇鍵、加1、減1鍵設(shè)置溫濕度上下限,設(shè)置后按下保存鍵保存閾值,仿真結(jié)果如圖6所示,實(shí)測(cè)溫度27 ℃低于下限,濕度80%RH高于上限,則對(duì)應(yīng)的低溫、高濕LED燈亮,且控制模塊中加熱器、除濕器開(kāi)始工作進(jìn)行溫濕度的調(diào)節(jié)。
圖5 溫濕度不超閾值的仿真結(jié)果圖
圖6 溫濕度超閾值的仿真結(jié)果圖
通過(guò)課堂引入Proteus仿真軟件聯(lián)合Keil調(diào)試,設(shè)計(jì)了主要由DHT11數(shù)字溫濕度傳感器和AT89C52組成的溫室溫濕度控制系統(tǒng),實(shí)現(xiàn)了預(yù)設(shè)范圍內(nèi)的溫濕度自動(dòng)控制;做到了教學(xué)與實(shí)驗(yàn)的同步,增強(qiáng)了學(xué)生的綜合知識(shí)應(yīng)用能力和單片機(jī)開(kāi)發(fā)能力,激發(fā)了學(xué)習(xí)興趣,為后續(xù)制作實(shí)物奠定基礎(chǔ)。
另外,該系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、價(jià)格低廉、易操作等優(yōu)點(diǎn),結(jié)合全球移動(dòng)通信系統(tǒng)(Global System for Mobile Communication,GSM)、ZigBee等無(wú)線通信技術(shù),在溫室大棚的遠(yuǎn)程監(jiān)測(cè)中具有良好的應(yīng)用前景。