











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