智能溫室控制器的開(kāi)發(fā)
1 引言
現(xiàn)代大型溫室中,所有環(huán)境因子如室內(nèi)溫、光、氣、濕、熱、營(yíng)養(yǎng)液養(yǎng)分狀況與溫度、植物根部環(huán)境溫濕度等因子的監(jiān)測(cè)、傳感、調(diào)節(jié),都由計(jì)算機(jī)進(jìn)行綜合管理,實(shí)行自動(dòng)控制。但是目前我國(guó)設(shè)施農(nóng)業(yè)才剛剛起步,相當(dāng)一部分溫室生產(chǎn)效益低。溫室環(huán)境調(diào)控能力和調(diào)控水平、生產(chǎn)管理水平低,仍主要是依據(jù)管理者個(gè)人經(jīng)驗(yàn)和主觀感覺(jué)進(jìn)行決策的粗放式管理。溫室環(huán)境調(diào)控與生產(chǎn)管理設(shè)施未完善配套,較多溫室環(huán)境監(jiān)測(cè)與控制系統(tǒng)硬件與軟件依賴(lài)國(guó)外進(jìn)口。因此, 開(kāi)發(fā)出符合中國(guó)國(guó)情的自動(dòng)化溫室系統(tǒng), 才是解決問(wèn)題的關(guān)鍵。本課題的研究目標(biāo)是開(kāi)發(fā)一款基于485通訊的溫室控制器,能獨(dú)立對(duì)各個(gè)溫室模塊進(jìn)行控制。同時(shí)也可以和上位機(jī)進(jìn)行通信,接受上位機(jī)指令對(duì)各個(gè)模塊進(jìn)行控制,并把采集的數(shù)據(jù)傳給上位機(jī)。
2 設(shè)計(jì)方案
系統(tǒng)硬件以89C52為控制核心,按設(shè)計(jì)要求控制器應(yīng)具有以下功能:1)采集信息(如DI, AI, 網(wǎng)絡(luò)傳感器等);2 )控制(能夠?qū)O, DA, 網(wǎng)絡(luò)執(zhí)行機(jī)構(gòu)進(jìn)行操作);3) 根據(jù)被控對(duì)象能嵌入一定的算法;4 )具有LCD 顯示功能(點(diǎn)陣);5 )具有報(bào)警功能;6 )根據(jù)需要能存儲(chǔ)數(shù)據(jù);7 )有鍵盤(pán)操作功能;8)遵循RS-485 協(xié)議,能夠與其他測(cè)控模塊通訊。根據(jù)上述功能要求,本智能控制器的功能框圖如圖1 所示:
500)this.style.width=500;" border="0" />
控制器需要和485總線(xiàn)的各個(gè)模塊進(jìn)行通信,接受各種環(huán)境參數(shù),并通過(guò)這些模塊對(duì)溫室中的環(huán)境進(jìn)行控制。上位機(jī)需要從控制器中讀取環(huán)境參數(shù)的數(shù)據(jù)并對(duì)其發(fā)送參數(shù)設(shè)定值。與總線(xiàn)上模塊的通信模式和與上位機(jī)的通信模式分別如圖2,圖3所
500)this.style.width=500;" border="0" />
根據(jù)以上的功能要求,本智能控制器的電路原理框圖如圖4 所示。系統(tǒng)主要由下列幾個(gè)部分組成:
500)this.style.width=500;" border="0" />
3 硬件模塊設(shè)計(jì)
1、數(shù)據(jù)存儲(chǔ)模塊
數(shù)據(jù)存儲(chǔ)采用AT24C64型EEPROM ,擁有8K的數(shù)據(jù)存儲(chǔ)量。它的尋址范圍是0000H~1FFFH。存儲(chǔ)的數(shù)據(jù)有時(shí)間,溫度,光照強(qiáng)度,濕度等。時(shí)間包括年,月,日,時(shí),分,秒,它們是兩位數(shù),而溫度是兩位數(shù),光照強(qiáng)度是三位數(shù),濕度是兩位數(shù),PH值要有四位數(shù),CO2濃度也是四位數(shù)。由于數(shù)字要用ASC碼來(lái)存儲(chǔ),所以一位數(shù)就要占一個(gè)字節(jié),總共27個(gè)字節(jié)順序存儲(chǔ)。讀取時(shí),嚴(yán)格按照每個(gè)參數(shù)的位數(shù)進(jìn)行。要讀取指定參數(shù)的值,可通過(guò)計(jì)算它的存儲(chǔ)字節(jié)地址來(lái)讀取。
2、時(shí)鐘模塊
時(shí)鐘模塊采用DS1302,作為控制器的日歷時(shí)鐘。其主要特點(diǎn)是使用簡(jiǎn)單,接口容易,與計(jì)算機(jī)連線(xiàn)少,還可以對(duì)實(shí)時(shí)時(shí)鐘備份電池進(jìn)行慢速充電。DS1302內(nèi)部具有實(shí)時(shí)時(shí)鐘,日歷和用戶(hù)可用RAM。通過(guò)一個(gè)簡(jiǎn)單的串行口與微機(jī)通信,時(shí)鐘可由用戶(hù)決定是以24小時(shí)制式或12小時(shí)制式工作。
時(shí)鐘模塊控制采樣的時(shí)間,按照一定的時(shí)間間隔,命令采樣系統(tǒng)工作,并把采樣的時(shí)間和采樣的結(jié)果一同存入數(shù)據(jù)存儲(chǔ)器中,再由上位機(jī)讀出。
3、顯示與鍵盤(pán)
顯示采用LCM045,LCM045為4 位多功能通用型液晶顯示模塊,內(nèi)含看門(mén)狗(WDT)/時(shí)鐘發(fā)生器,2 種頻率的蜂鳴驅(qū)動(dòng)電路,內(nèi)置顯示RAM ,可顯示任意字段筆劃,3-4 線(xiàn)串行接口,可與任何單片機(jī)接口、IC 接口,低功耗特性;顯示狀態(tài)50μA(典型值), 省電模式<1μA ,工作電壓2.4~ 5.2V, 視角對(duì)比度可調(diào),顯示清晰,穩(wěn)定可靠,使用編程簡(jiǎn)單??刂破饕婚_(kāi)機(jī)就能顯示小時(shí)和分,這要靠讀取時(shí)鐘芯片的值。當(dāng)按下功能鍵就要開(kāi)始顯示各個(gè)環(huán)境參數(shù)的值,這些值要從數(shù)據(jù)存儲(chǔ)器當(dāng)中讀取,并用上下鍵來(lái)移動(dòng)數(shù)據(jù),查看記錄。
鍵盤(pán)采用獨(dú)立式按鍵,共有四個(gè)鍵,包括功能鍵,上、下鍵,復(fù)位建。當(dāng)按下功能鍵時(shí),進(jìn)入鍵盤(pán)中斷,對(duì)鍵盤(pán)命令進(jìn)行處理。功能鍵的作用是切換當(dāng)前顯示的環(huán)境參數(shù),決定顯示的是溫度,濕度,光照強(qiáng)度等。上、下鍵的作用是查看當(dāng)前顯示的環(huán)境參數(shù)的歷史紀(jì)錄。復(fù)位建就是使整個(gè)系統(tǒng)回到初始狀態(tài)。
4、串口擴(kuò)展
由于控制器要分別與上位機(jī)和下位機(jī)進(jìn)行通信,而89c52只有一個(gè)串口,所以必須再擴(kuò)展一個(gè)串口滿(mǎn)足需要。8251是一個(gè)將并口擴(kuò)展為串口的芯片,用其作為串口擴(kuò)展芯片可以實(shí)現(xiàn)與485的通信。
8251是把并口p0擴(kuò)展為串口,所以將p0口接在8251的D0-D7上。用74LS373作為地址鎖存器,可以對(duì)8251進(jìn)行尋址。由于接收器準(zhǔn)備好信號(hào)RXRDY高電平有效,所以為了產(chǎn)生中斷,接了一個(gè)非門(mén)芯片7404。波特率發(fā)生器是電路中極其重要的部分,CD4040芯片的最低分頻數(shù)為1,也就是說(shuō)可以把頻率分為1/2。晶振采用2.4576M有緣晶振。有緣晶振無(wú)需外圍電路,通電即可起振。把晶振產(chǎn)生的頻率輸入CD4040。將頻率分為1/2后接到工作時(shí)鐘CLK,分為1/27后變成19200hz作為輸入輸出時(shí)鐘。8251與89c52連接的硬件原理框圖如圖5所示:
500)this.style.width=500;" border="0" />
4 控制器軟件設(shè)計(jì)
在單片機(jī)軟件開(kāi)發(fā)過(guò)程中, 編制的程序要合理使用各種中斷機(jī)制。本系統(tǒng)就控制算法來(lái)說(shuō),有實(shí)時(shí)性要求, 任務(wù)復(fù)雜:有中斷、定時(shí)任務(wù)、循環(huán)執(zhí)行任務(wù)等, 并且人機(jī)交互操作還通常會(huì)動(dòng)態(tài)地改變程序的運(yùn)行模式, 尤其是人機(jī)界面——液晶的顯示輸出需要占用大量CPU 時(shí)間, 與此同時(shí)又不允許丟失重要的數(shù)據(jù)。還要隨時(shí)準(zhǔn)備向上位機(jī)發(fā)送數(shù)據(jù)。因此,需要綜合采用消息機(jī)制與狀態(tài)轉(zhuǎn)移法來(lái)統(tǒng)一地處理好CPU 的任務(wù)安排。
在中斷服務(wù)程序中, 向主程序的消息隊(duì)列添加相應(yīng)的消息, 來(lái)達(dá)到將中斷服務(wù)程序中的數(shù)據(jù)處理部分分離出來(lái)的目的。本系統(tǒng)主要有兩個(gè)中斷:上位機(jī)中斷和鍵盤(pán)中斷。中斷服務(wù)程序返回主程序后, 主控程序只處理消息循環(huán), 判斷并為消息處理對(duì)象發(fā)送所需處理的消息, 而接受消息的對(duì)象則以消息響應(yīng)函數(shù)的方式出現(xiàn), 當(dāng)接收到主程序發(fā)來(lái)的消息后, 消息響應(yīng)函數(shù)獲得控制權(quán), 做完相應(yīng)的處理后將控制權(quán)交還給主程序繼續(xù)消息循環(huán)的處理。用戶(hù)的輸入及對(duì)象的請(qǐng)求僅是向消息隊(duì)列中添加相應(yīng)的消息。
主控程序還需要查詢(xún)消息隊(duì)列也就是時(shí)間,根據(jù)時(shí)間的不同, 調(diào)用相應(yīng)的消息處理函數(shù), 在本系統(tǒng)中, 時(shí)間表現(xiàn)為一個(gè)變量, 通過(guò)給該變量置不同值來(lái)反映不同的消息。對(duì)于由中斷觸發(fā)的消息, 由于消息處理函數(shù)已經(jīng)脫離了中斷處理過(guò)程, 所以系統(tǒng)對(duì)消息處理不再象中斷服務(wù)程序那樣, 在時(shí)間上有十分苛刻的要求; 同時(shí), 在消息處理過(guò)程中, 用戶(hù)仍可通過(guò)鍵盤(pán)中斷來(lái)與系統(tǒng)進(jìn)行交互。
5 結(jié)束語(yǔ)
本項(xiàng)目是一個(gè)自動(dòng)化技術(shù)與農(nóng)業(yè)結(jié)合的課題, 以89c52 單片機(jī)為核心的嵌入式控制器,通過(guò)8251擴(kuò)展一個(gè)串口后和單片機(jī)原有的串口一起分別和上位機(jī)和下位機(jī)通訊,從下位機(jī)收集到的數(shù)據(jù)先存入數(shù)據(jù)存儲(chǔ)器,在接收到上位機(jī)的命令后再把數(shù)據(jù)傳到上位機(jī)進(jìn)行管理。并在控制器上加入鍵盤(pán)和顯示的功能,能控制器能直接控制下位機(jī)。該控制器結(jié)構(gòu)合理, 經(jīng)濟(jì)實(shí)用, 具有較高的推廣價(jià)值。