陽明霞
(柳州職業(yè)技術(shù)學(xué)院,廣西 柳州 545000)
平菇(Pleurotus ostreatus) 是我國常見的食用菌,其口感細(xì)膩嫩滑、營養(yǎng)物質(zhì)豐富,而且價格不高,深受人們的喜愛。平菇生長喜歡通風(fēng)好、溫度濕度變化較小的外部環(huán)境,是我國主要的食用菌栽培品種[1]。溫度過高過低都會導(dǎo)致平菇的生長變緩,最適合的溫度一般控制在20℃~30℃左右;而濕度也十分重要,平菇喜濕,在潮濕環(huán)境中才能快速生長,一般濕度控制在60%~80%左右。溫度濕度要隨著平菇的不同生長時期進行動態(tài)調(diào)整,在發(fā)菌、生長、出菇等不同時期適時調(diào)整溫濕度,能夠有效提高平菇的產(chǎn)量和品質(zhì)[2]。
溫度和濕度的控制一直是工業(yè)控制領(lǐng)域的重要研究內(nèi)容,人工控制溫濕度比較困難。近年來,智能預(yù)測溫濕度已經(jīng)成為了研究熱點[3],通過一定的硬件軟件設(shè)計,智能預(yù)測溫濕度變化并加以控制已成為可能。
傳感器可以感知平菇栽培室內(nèi)環(huán)境的溫濕度等信號,并轉(zhuǎn)化成電流或電壓信號供測量系統(tǒng)使用。由于溫度與濕度有一定的物理關(guān)系,濕度高則溫度低,而溫度高則濕度低,因此我們一般使用溫濕度一體式傳感器來同時傳送這2 種信號。根據(jù)平菇最適合的溫度在20℃~30℃左右,濕度在60%~80%左右的控制范圍,選用瑞士Sensiron 公司的SHT25 溫濕度傳感器模塊[4]。該傳感器具有極高的可靠性,能夠長期在潮濕環(huán)境中穩(wěn)定工作,其主要特點是體積小、響應(yīng)速度快,并且能耗較低,抗干擾能力強、溫濕一體,可以在平菇栽培室內(nèi)潮濕的工作環(huán)境中進行露點測量。其濕度調(diào)節(jié)范圍在10%~90%,誤差僅有±2%;溫度在0~60℃之間,誤差僅有±0.4℃。
溫濕度控制系統(tǒng)以FPGA 為核心,完成對平菇栽培室內(nèi)環(huán)境溫度和濕度信息的采集。芯片和模塊選型時基本遵循體積小、功耗低、操作簡單、工作穩(wěn)定等要求。
系統(tǒng)選用Xillinx 公司的XC3S200A 芯片是一種高速大規(guī)模數(shù)字電路芯片[5]。用于控制溫濕度傳感器完成A/D 采集、數(shù)據(jù)存儲和顯示等相關(guān)功能模塊。主要控制功能模塊有,電源模塊、顯示模塊、AD 轉(zhuǎn)換模塊、時鐘模塊、USB 控制模塊、存儲模塊及GPS 模塊等,各模塊的功能通過FPGA 編程算法來實現(xiàn)對溫濕度的智能預(yù)測控制。
由于系統(tǒng)所要采集的溫濕度均采用的是集成模塊,本身已集成有AD 轉(zhuǎn)換功能,因此,需要轉(zhuǎn)換的模擬量為經(jīng)過電荷放大后的的加速度信號,綜合考慮選用ADS8364 六通道16 位AD 轉(zhuǎn)換芯片,該芯片具有采集精度高、轉(zhuǎn)換時間快、功耗低等優(yōu)點。
數(shù)據(jù)存儲器選用SAMSUNG 公司的NAND 型Flash 內(nèi)存;程序存儲器采用與XC3S200A 相匹配的PROM 芯片XCF01S[6]。
溫濕度控制系統(tǒng)采用USB2.0 接口,實現(xiàn)本地設(shè)備與PC 機數(shù)據(jù)的交流。通過USB2.0 接口將本地設(shè)備的數(shù)據(jù)存儲器中的數(shù)據(jù)上傳到計算機進行數(shù)據(jù)分析和處理。采用Cypress 公司的56-pin SSOP 封裝CY7C68013 芯片,實現(xiàn)主機與FPGA 之間的數(shù)據(jù)傳輸。
溫濕度控制系統(tǒng)的傳感器模塊SHT25 的精度可達1.8%RH,數(shù)字輸出,I2C 接口,低功耗,具有長時間采集的穩(wěn)定性。
由于SHT25 已經(jīng)將濾波,AD 轉(zhuǎn)換等電路封裝在了模塊內(nèi)部。因此輸出的是FPGA 可以接受的數(shù)字量。故可以與FPGA 直接相連,由FPGA 來控制它對溫濕度的測量。SCL 為雙向時鐘信號,具體方向通過對SHT25 設(shè)置得到。SDA 為雙向數(shù)據(jù)位,具體傳輸方向與SCL 有關(guān)。NC 為未定義端。VDD 選擇與FPGA 相同的+3.3V 電源。
SHT25 與FPGA 模塊的傳輸過程如下。
第一,啟動傳感器。將傳感器接到3.3V 電源,在傳感器得電后需要等待最多15 ms,SCL 進入高電平時,進入空閑狀態(tài)。主機也就是FPGA 發(fā)送命令。此過程的最大功耗是350 μA。
第二,啟動序列。首先SDA 由高電平變?yōu)榈碗娖?,之后SCL 由高電平跳變?yōu)榈碗娖健_@段時序過程我們定義為啟動序列S。SCL 由低電平跳變?yōu)楦唠娖胶螅琒DA 從低電平跳變?yōu)楦唠娖?。這段時序我們定義為停止序列P。當(dāng)啟動序列完成后,認(rèn)為總線處于忙碌狀態(tài)。
第三,發(fā)送地址及寫命令。在啟動序列S 后,是7 位地址數(shù)據(jù)1000000 和一位SDA 讀寫控制位。1 表示讀取,0 表示寫入。因此該段數(shù)據(jù)應(yīng)該為10000000。發(fā)送完地址后傳感器將SDA 置低,該動作定義為ACK。
第四,發(fā)送讀地址及命令。讀取溫度或濕度數(shù)據(jù)采集命令。命令與代碼的對照表如表1 所示。
表1 SHT25 命令代碼對照表Tab.1 SHT25 command code table
當(dāng)主機傳送完地址后,檢測到ACK 后則開始傳輸溫度或濕度數(shù)據(jù)采集命令。本系統(tǒng)中對溫濕度的采集都采用鎖定主機模式。當(dāng)發(fā)送完數(shù)據(jù)采集命令后,傳感器同樣會執(zhí)行一個ACK。
第五,運行啟動序列S。發(fā)送讀取數(shù)據(jù)命令。當(dāng)發(fā)送完傳感器溫濕度數(shù)據(jù)采集命令,檢測到ACK后主機開始發(fā)送讀取數(shù)據(jù)命令。傳感器開始溫度或濕度轉(zhuǎn)換,傳感器完成數(shù)據(jù)轉(zhuǎn)換后釋放SCL 信號線。
第六,接收數(shù)據(jù)。在發(fā)送完讀取數(shù)據(jù)命令后,主機等待最多85 ms 后開始讀取高8 數(shù)據(jù)。當(dāng)讀完高8 位后,主機送一個ACK 到SDA 總線。傳感器檢測到ACK 后開始發(fā)送低6 位數(shù)據(jù)及兩位溫濕度標(biāo)志數(shù)據(jù)。其中溫濕度標(biāo)志數(shù)據(jù)第0 位未分配,第1位是“0”則為溫度數(shù)據(jù);是“1”則為濕度數(shù)據(jù)。
第七,停止。主機接收完低6 位數(shù)據(jù)及兩位溫濕度標(biāo)志數(shù)據(jù)后,向SDA 上送一個高電平后執(zhí)行停止序列。
由于溫度模塊輸出的是16 位二進制原始數(shù)據(jù),因此需要對該數(shù)據(jù)進行處理,溫度T(℃) 的計算公式為:
式中:T0為溫度模塊輸出的16 位二進制原始溫度。
由于采集溫度是字符串類型的數(shù)據(jù),因此存儲這個字符串至少要用6 個字節(jié),占用計算機存儲空間過大,因此對該字符串進行轉(zhuǎn)換以節(jié)省存儲空間。轉(zhuǎn)換公式為:
式中:T為采集溫度數(shù)據(jù)(℃),Td為轉(zhuǎn)換后的溫度存儲數(shù)據(jù)。
取3 位有效數(shù)字,取值范圍為 [-399≤Td≤499]。+499 的二進制數(shù)為:0111110100,最高位為符號位,共10 位二進制數(shù)。然而存儲器是以字節(jié)為單位進行存儲的,因此需要占用兩個字節(jié),也就是16 位,因此相對于字符串存儲節(jié)省了4B 存儲空間。然而使用的16 位空間中的6 位存儲空間就會浪費掉。如果這6 位也能充分利用的話,相對字符串存儲方法就可節(jié)省38 位的存儲空間。
濕度模塊輸出的原始數(shù)據(jù)是16 位二進制數(shù),假設(shè)該數(shù)值為RH0,則相對濕度RH(%) 計算公式為:
式中:RH0為濕度原始數(shù)據(jù)(%)。
由于相對濕度極限值為0 和100,而溫濕度一體式傳感器測定的精度值為1.8,因此只需要將濕度使用0 到100 之間的整數(shù)來表示即可。100 的二進制數(shù)值為1100100,沒有符號位。因此,直接存儲相對濕度的數(shù)據(jù)值則需要占用7 位的存儲空間。轉(zhuǎn)換公式為:
對取整,RHd的取值范圍為 [-50≤Td≤50]。-50 的二進制數(shù)位1110010,最高位為符號位,它也占用了7 位存儲空間,故這兩種存儲方式均可,本系統(tǒng)采用第一種存儲方式。然而存儲器是以字節(jié)為單位進行儲存的,因此它需要占用一個字節(jié)來存儲,浪費了1 位存儲空間。假如能將這一位也充分利用的話,8 個RH數(shù)據(jù)就可以節(jié)省1B 的存儲空間。
由于平菇生長環(huán)境中溫濕度信息變化相對平緩,因此我們對溫濕度數(shù)據(jù)采集的頻率要求不是很高,可以在同一進程中先后采集溫濕度數(shù)據(jù)。具體FPGA算法程序流程為如下。
第一,首先發(fā)送啟動序列S,即將SDA 與SCL先后由高電平置為低電平。第二,發(fā)送地址及寫命令。該命令數(shù)據(jù)為“10000000”。第三,發(fā)送數(shù)據(jù)采集命令。FPGA 檢測到ACK 信號后,發(fā)送溫度數(shù)據(jù)采集命“11100011”。第四,發(fā)送地址及讀取命令。FPGA 檢測到ACK 信號后,首先進行一個啟動序列S,之后發(fā)送命令數(shù)據(jù)“10000001”。第五,讀取溫度數(shù)據(jù)。在等待約85ms 后,開始讀取溫度數(shù)據(jù)高8位。讀完數(shù)據(jù)后主機發(fā)送一個ACK。傳感器在接收到ACK 后,發(fā)送低8 位數(shù)據(jù)。接收完成后主機發(fā)送一個ACK。第六,溫度數(shù)據(jù)校驗。當(dāng)傳感器接收到ACK 后,發(fā)送8 位校驗碼。在接收完成后執(zhí)行NACK。之后進行停止序列。第七,讀取濕度數(shù)據(jù)。重復(fù)第1 步到第6 步。只是傳遞的命令數(shù)據(jù)依次為,第二步“10000000”,第三步“11100101”,第四步“10000001”,第5 步的中濕度數(shù)據(jù)讀取的等待時間約22 ms。
平菇栽培室內(nèi)的環(huán)境溫濕度控制是一個系統(tǒng)工程,涉及到多種硬件的選型和設(shè)計。目前針對溫濕度控制的采集設(shè)備比較多,但大部分功能都比較單一,而且笨重,無法滿足長時間、有限空間內(nèi)的溫濕度數(shù)據(jù)采集記錄。本文中設(shè)計的溫濕度控制系統(tǒng),以FPGA 為核心完成了溫濕度數(shù)據(jù)的采集、存儲等操作,并詳細(xì)討論了系統(tǒng)主要模塊的功能和數(shù)據(jù)存儲方式,基于FPGA 設(shè)計了溫濕度預(yù)測算法。后期還需要對溫濕度控制的通信、電壓轉(zhuǎn)換芯片和顯示器件等進行設(shè)計,形成完整的溫濕度數(shù)據(jù)采集、存儲、顯示和分析系統(tǒng),實現(xiàn)平菇栽培室內(nèi)的環(huán)境溫濕度的精準(zhǔn)控制。