摘 要:基于STC8G1K17單片機進行系統(tǒng)設(shè)計,采用SHT30溫濕度傳感器獲取溫濕度數(shù)據(jù),通過LCD1602液晶屏實時顯示當(dāng)前溫度、濕度以及工作狀態(tài)。該系統(tǒng)由硬件和軟件兩部分組成,硬件部分包括STC8G1K17單片機、SHT30、LCD1602等硬件電路,軟件部分主要包括單片機嵌入式程序設(shè)計。單片機通過溫濕度傳感器獲取數(shù)據(jù),液晶屏通過外部按鍵操作實現(xiàn)數(shù)據(jù)顯示及工作狀態(tài)的設(shè)置,系統(tǒng)可以實現(xiàn)溫濕度的自動控制。
關(guān)鍵詞:STC8G1K17;SHT30;溫濕度控制
中圖分類號:TP273文獻標(biāo)志碼:A文章編號:1671-5276(2024)03-0234-05
Temperature and Humidity Controller Based on STC8G1K17 Microcontroller
Abstract:This paper designs temperature and humidity system based on STC8G1K17 microcontroller. SHT30 is used to obtain temperature and humidity data, and the current temperature, humidity and working state are displayed in real time through LCD1602 screen.The designed system consists of hardware system and software system, the hardware being STC8G1K17 MCU, SHT30, LCD1602 and other hardware circuits, and the software mainly being MCU embedded program design.The single-chip microcomputer obtains data through the temperature and humidity sensor, and the LCD and external keys display the data and set the working state. The system can realize the automatic control of temperature and humidity.
Keywords:STC8G1K37; SHT30; temperature and humidity control
0 引言
隨著人們生活質(zhì)量的不斷提高及工業(yè)、農(nóng)業(yè)的不斷發(fā)展,溫濕度的變化早已成為一項重要的環(huán)境指標(biāo)[1-2]。工業(yè)生產(chǎn)中需要時刻保證生產(chǎn)設(shè)備、產(chǎn)品處于安全的工作環(huán)境,農(nóng)業(yè)生產(chǎn)中農(nóng)作物需要穩(wěn)定適宜的生長環(huán)境,這些環(huán)境都需要進行有效的溫濕度控制。因此,一套可靠的檢測控制裝置能夠保證生產(chǎn)的正常運行和植物的穩(wěn)定生長??煽康脑O(shè)備不僅可以節(jié)省人力檢測成本,還能夠及時報警,幫助提前做好預(yù)防,避免意外發(fā)生造成損失。本文針對多肉植物生長的小型溫室,設(shè)計了一種基于單片機的溫濕度自動控制器,并對設(shè)備進行精度、穩(wěn)定性的測試驗證,結(jié)果表明該設(shè)備能有效控制植物生長環(huán)境的溫濕度[3]。
1 系統(tǒng)總體方案設(shè)計
本設(shè)計硬件由STC8G1K17單片機電路、SHT30溫濕度傳感器電路、LCD1602液晶屏電路等組成,可實現(xiàn)溫濕度的檢測和控制。系統(tǒng)工作主要分為3部分:獲取傳感器值、設(shè)置工作狀態(tài)和顯示控制輸出。系統(tǒng)檢測當(dāng)前環(huán)境的溫濕度,通過按鍵設(shè)置不同模式,實現(xiàn)溫控功能,可適用于降溫、加熱場景,屏幕顯示設(shè)置和數(shù)據(jù)信息。通過設(shè)置報警閾值,可以在數(shù)據(jù)異常時通過蜂鳴器報警。系統(tǒng)工作組成框圖如圖1所示。
2 系統(tǒng)硬件設(shè)計
2.1 單片機主控模塊設(shè)計
設(shè)計采用的主控芯片為單片機STC8G1K17,相比傳統(tǒng)8051單片機處理速度約快12倍以上。內(nèi)部帶有高精度IRC,最大可調(diào)整高達36MHz,硬件電路上可無需外部晶振。設(shè)計使用TSSOP-20封裝的單片機,最大支持18個I/O口。
本系統(tǒng)方案中主控芯片通過IIC接口獲取溫濕度傳感器SHT30的數(shù)據(jù),經(jīng)過軟件處理轉(zhuǎn)換得到相應(yīng)精度溫濕度值。LCD1602液晶屏的4位數(shù)據(jù)端口與IO擴展芯片PCF8574相連接,主控芯片通過PCF8574的IIC總線地址進行讀寫操作,實現(xiàn)液晶屏的顯示控制。通過按鍵設(shè)置控制系統(tǒng)工作模式,輸出控制端驅(qū)動繼電器進行溫控及蜂鳴器報警等操作。單片機硬件電路如圖2所示。
2.2 溫濕度傳感器電路設(shè)計
系統(tǒng)溫濕度采集使用Sensirion的SHT30集成型傳感器,可以實現(xiàn)溫度、濕度的多數(shù)據(jù)測量,比上一代產(chǎn)品有著更穩(wěn)定更出色的水平[4]。其封裝小、精度高,適用于多種環(huán)境,溫度測量范圍為-40℃~125℃,濕度范圍為0%~100%RH,在0℃~60℃范圍內(nèi)測量精度可達±0.2℃,濕度精度可達±2%RH。
溫濕度傳感器電路如圖3所示,傳感器器件地址0X44,單片機通過IIC對該地址進行測量指令發(fā)送、數(shù)據(jù)讀取,程序設(shè)定溫濕度預(yù)警值后通過ALERT引腳進行中斷信號的輸出,nREST上拉保持芯片工作穩(wěn)定。
2.3 LCD1602液晶顯示電路設(shè)計
考慮到需要顯示的數(shù)據(jù)及設(shè)置信息,顯示部分選用LCD1602液晶屏[5] 。通信控制采用PCF8574作為單片機的I/O擴展, LCD1602的使能、數(shù)據(jù)等引腳均與PCF8574相連,單片機同樣通過IIC配置讀寫,其地址為0X20。設(shè)計增加三極管驅(qū)動背光源,實現(xiàn)程序可控。液晶屏偏壓管腳(VO)連接電位器,可調(diào)節(jié)顯示對比度,實際測量調(diào)整為0.3 V左右效果較好。LCD1602液晶顯示電路如圖4所示。
2.4 按鍵、開關(guān)控制電路設(shè)計
按鍵采用低電平有效的設(shè)計,4路獨立按鍵,分別接入單片機的P3口,通過單片機讀取I/O實現(xiàn)系統(tǒng)設(shè)置等操作。
系統(tǒng)開關(guān)控制電路由三極管作為開關(guān),單片機的S1、S2驅(qū)動信號控制,繼電器的線圈連接在三極管的集電極端,通過繼電器外接可以帶載大功率電器,一般適用于直流設(shè)備,交流設(shè)備需要外接交流接觸器[6]。按鍵、開關(guān)控制電路如圖5所示。
2.5 蜂鳴器報警電路設(shè)計
報警電路由蜂鳴器及其驅(qū)動電路組成,單片機的P1.2口連接控制驅(qū)動電路。增加反向續(xù)流二極管保證蜂鳴器穩(wěn)定工作。為了防止工作異常,由單片機給出報警驅(qū)動信號,為用戶提供告警。蜂鳴器報警電路如圖6所示。
3 系統(tǒng)軟件設(shè)計
3.1 系統(tǒng)主函數(shù)
系統(tǒng)上電后,程序首先完成對各模塊初始化工作,包括單片機系統(tǒng)的I/O初始化,LCD1602液晶、SHT30傳感器的初始化等。初始化完成后,系統(tǒng)獲取傳感器的溫濕度值在液晶屏幕上給予顯示。調(diào)用按鍵處理函數(shù),設(shè)置相應(yīng)的開啟、停止溫度值,判斷并執(zhí)行相應(yīng)功能,以改變系統(tǒng)的工作狀態(tài)及相關(guān)設(shè)置。系統(tǒng)主函數(shù)流程如圖7所示。
3.2 LCD1602液晶顯示函數(shù)
液晶函數(shù)主要功能是將數(shù)據(jù)信息顯示在屏幕上,本系統(tǒng)溫濕度數(shù)據(jù)及相關(guān)設(shè)置在LCD1602液晶屏上顯示。LCD1602液晶屏數(shù)據(jù)顯示示意圖如圖8所示。
電路設(shè)計中是通過PCF8574作為I/O擴展芯片控制液晶屏,LCD1602液晶屏硬件上有DB0-DB78位數(shù)據(jù)接口,可以設(shè)置8位和4位數(shù)據(jù)接口的工作模式,本系統(tǒng)設(shè)置LCD1602采用4位數(shù)據(jù)端口操作,開啟顯示并關(guān)閉光標(biāo)顯示。定義LCD寫命令函數(shù):voidLCD_Write(unsigned char mode, unsigned char cmd),函數(shù)內(nèi)部通過左移位賦值的方式將8位數(shù)據(jù)轉(zhuǎn)換為兩個高4位數(shù)據(jù)寫入LCD,實現(xiàn)4位數(shù)據(jù)控制的方法。在獲取溫濕度值后,將溫度數(shù)據(jù)通過字符串顯示,保留了2位整數(shù)和1位小數(shù)部分[7]。
3.3 SHT30溫濕度采集函數(shù)
溫濕度采集函數(shù)定義了兩個全局變量SHT30-Temperature、SHT30_Humidity,分別存放轉(zhuǎn)換的溫度和濕度的值。SHT30在收到單片機讀命令后,溫濕度數(shù)據(jù)是以16位的形式傳輸。為了節(jié)省系統(tǒng)資源,將16位的溫濕度數(shù)據(jù)轉(zhuǎn)換為10進制,保留一位小數(shù)[8-9]。對于SHT30傳感器,這些數(shù)據(jù)包含了線性化以及溫度和電源電壓的影響。因此,使用芯片手冊中的轉(zhuǎn)換公式可以直接得出相應(yīng)的溫濕度值。
3.4 按鍵、開關(guān)控制電路程序設(shè)計
在系統(tǒng)初始化中,將按鍵I/O口P3.5、P3.6和P3.7設(shè)置為上拉準(zhǔn)雙向口模式。主程序調(diào)用按鍵處理函數(shù)Key_Handle()來獲取按鍵值,由于機械按鍵按下的瞬間會存在抖動現(xiàn)象,所以在檢測中延時10ms左右的時間來實現(xiàn)消抖[10-11]。KEY_4為設(shè)置選定標(biāo)志,在開啟溫度與停止溫度之間切換。在選定需要調(diào)整的溫度后,通過KEY_2和KEY_3來實現(xiàn)啟動溫度和停止溫度的增加或者減少。
定義Set_Handle()的開關(guān)控制電路控制函數(shù),獲取按鍵值后進行參數(shù)設(shè)置,通過比較開啟溫度與停止溫度進行工作模式的自動選擇,系統(tǒng)默認(rèn)開啟溫度等于停止溫度時加熱、降溫功能關(guān)閉。當(dāng)設(shè)置開啟溫度大于停止溫度時,系統(tǒng)進入降溫工作模式。當(dāng)設(shè)置開啟溫度小于停止溫度時,系統(tǒng)進入加熱工作模式。輸出S1、S2信號控制相應(yīng)繼電器。開關(guān)控制函數(shù)流程如圖9所示。
4 系統(tǒng)穩(wěn)定性測試
系統(tǒng)硬件的調(diào)試中,通過程序初始化自檢,可檢測各項功能是否正常。為了檢驗溫濕度控制器的實用性,進行了相關(guān)實驗測試。首先作為溫濕度傳感器,測量需要準(zhǔn)確,測試使用其他兩款不同型號的傳感器進行對比,分別在室內(nèi)、室外環(huán)境中測量實時溫濕度,對比結(jié)果如表1所示。
通過對比,SHT30傳感器在溫度上與其他兩款誤差較小,但濕度相差較大,產(chǎn)生這樣的誤差一般是和每種傳感器的制造工藝及精度有關(guān)。如果需要更加精確的測量值,可以通過程序在標(biāo)準(zhǔn)環(huán)境下測量并進行溫濕度補償。
將本系統(tǒng)安裝并應(yīng)用于溫室植物大棚里,根據(jù)多肉植物的生長特點,尤其是在多肉葉插的生長中環(huán)境溫度尤其重要,需要維持在15℃~28℃之間。將室內(nèi)溫度設(shè)置并控制在20℃~25℃,20℃作為開啟溫度,25℃作為停止溫度,0時刻為環(huán)境溫度。通過該設(shè)置選取3種不同功率(10W、12W、15W)的加熱器分別做了實驗,將時間與溫度狀態(tài)記錄如表2所示。
通過表2數(shù)據(jù)繪制成時間與溫度的曲線圖如圖10所示,得出不同功率的加熱器加熱時溫升斜率基本保持穩(wěn)定,大功率的加熱器可能會導(dǎo)致加熱達到設(shè)定溫度后有殘余熱量釋放出。針對該現(xiàn)象可以根據(jù)實際情況調(diào)整相應(yīng)的溫度設(shè)置或啟停時間,同時可以看出溫度控制器的整體控制效果在設(shè)置的20℃~25℃范圍內(nèi)。
5 結(jié)語
基于STC8G1K17單片機設(shè)計的溫濕度控制器具有一定的實用價值,集溫濕度顯示、設(shè)置顯示和控制電路于一體,可以提高工業(yè)、農(nóng)業(yè)生產(chǎn)溫濕度采集的使用效率。整個系統(tǒng)設(shè)計簡單、方便、穩(wěn)定性高,具有自動升溫和降溫的功能,方便使用者進行參數(shù)查驗和設(shè)置。
參考文獻:
[1] 車宇,偉利國,李卓立. 溫濕度傳感器SHT21在安全儲糧監(jiān)測系統(tǒng)中的應(yīng)用[J]. 電子產(chǎn)品世界,2013,20(3):36-38,42.
[2] 陳定武,張思揚. STM32單片機的智能水產(chǎn)養(yǎng)殖監(jiān)測系統(tǒng)[J]. 單片機與嵌入式系統(tǒng)應(yīng)用,2018,18(8):76-81.
[3] 倪瑞,張萬達. 基于AT89S51單片機的溫濕度監(jiān)測與控制系統(tǒng)設(shè)計[J]. 自動化與儀表,2019,34(5):53-55.
[4] 蔣禮林. 基于單片機S3C2410的嵌入式溫度傳感器設(shè)計[J]. 現(xiàn)代電子技術(shù),2018,41(10):43-46.
[5] 趙亮. 跟我學(xué)51單片機(七)——LCD1602液晶顯示模塊[J]. 電子制作,2011(7):74-77.
[6] 曾麗麗,李瑞盈,朱齊媛. 基于51單片機的自動恒溫控制電路的設(shè)計[J]. 山東工業(yè)技術(shù),2015(6):36-37.
[7] 林嘉. 基于89S52的LCD1602程序設(shè)計[J]. 電腦知識與技術(shù),2012,8(26):6376-6378.
[8] 陳善為,梁美平,王遠,等. 基于SHT21傳感器的智能加濕器設(shè)計[J]. 輕工機械,2015,33(3):96-98,103.
[9] 鮑愛達,張慶志,郭濤,等. 基于FPGA和SHT21傳感器的溫濕度測量系統(tǒng)的設(shè)計[J]. 計算機測量與控制,2012,20(11):2885-2887.
[10] 周茜,馬軍平. 一種便攜式倉儲溫濕度檢測儀的設(shè)計[J]. 國外電子測量技術(shù),2013,32(11):45-48.
[11] 楊偉. 單片機按鍵消抖技術(shù)及其擴展應(yīng)用[J]. 電子測試,2016(3):96-97.