張東輝 劉春東
(河北建筑工程學(xué)院機(jī)械工程學(xué)院,河北 張家口 075000)
無論在實際生產(chǎn)還是人們?nèi)粘I钪?,都?jīng)常會遇到進(jìn)行溫濕度檢測的場合,比如:研究表明糧倉需要維持一定的溫濕度才能確保糧食的品質(zhì),室內(nèi)家居需要維持一定的溫濕度,人們才會感覺更舒適.由此可見,快速有效的對溫濕度進(jìn)行監(jiān)測對實際生產(chǎn)生活具有重要意義.因此,本文設(shè)計并開發(fā)了一款使用方便、價格合適的室內(nèi)溫濕度檢測儀.
該檢測儀要能夠采集實際環(huán)境的溫度和濕度,并能通過LCD1602液晶顯示屏進(jìn)行實時顯示.環(huán)境的溫度和濕度可以通過傳感器DHT11進(jìn)行采集,DHT11是全數(shù)字型溫濕度傳感器,DHT11攝氏溫度測量范圍:0~50 ℃,攝氏溫度測量精度:±1~±2 ℃,其濕度測量范圍在20%RH—95%RH[1],它可以滿足一般環(huán)境溫濕度監(jiān)測的需求.溫濕度的顯示采用LCD1602,該顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、超薄輕巧等優(yōu)點[2].DHT11傳感器是單總線器件,其數(shù)據(jù)不能直接送往LCD1602進(jìn)行顯示,需要通過單片機(jī)對傳感器送來的數(shù)據(jù)進(jìn)行計算處理,而且LCD1602的顯示也需要單片機(jī)進(jìn)行初始化、顯示控制等.因此,該檢測儀以單片機(jī)為核心,由于STC89C52RC單片機(jī)具有較高的性價比,所以采用STC89C52RC單片機(jī)作為溫濕度檢測儀的主控芯片,供電方式采用USB供電.具體所需要的所有元件見表1所示.
溫濕度檢測儀由STC89C52RC單片機(jī)及最小系統(tǒng)、溫濕度傳感器電路、顯示電路及供電電路等主要部分組成.溫濕度檢測采用DHT11傳感器,單片機(jī)在軟件程序控制下讀取DHT11的溫濕度數(shù)據(jù),并且對數(shù)據(jù)進(jìn)行計算處理得到實際溫度和濕度,送往LCD1602液晶屏進(jìn)行顯示.溫濕度檢測儀的系統(tǒng)整體框圖如圖1所示.
表1 溫濕度檢測儀所需元件清單
圖1 系統(tǒng)整體框圖
立創(chuàng)EDA是一個基于云端平臺的電路設(shè)計工具,聯(lián)網(wǎng)即用,2019年7月推出離線版,立創(chuàng)EDA的設(shè)計操作界面簡潔,操作步驟簡單[3].圖2為基于立創(chuàng)EDA設(shè)計的溫濕度檢測儀的電路原理圖.電路原理圖采用模塊化設(shè)計,包括八個模塊,分別用M1、M2、…M8表示,采用模塊化設(shè)計使得電路更簡潔,其中M1模塊為晶振電路,為單片機(jī)提供工作所需要的時鐘;M2模塊為復(fù)位電路,當(dāng)單片機(jī)上電瞬間,通過對電容充電在RST引腳上產(chǎn)生高電平使單片機(jī)復(fù)位,在單片機(jī)啟動之后可以通過按鍵K4對單片機(jī)進(jìn)行復(fù)位;M3模塊為主控芯片單片機(jī),STC89C52RC單片機(jī)共有40根引腳,其中電源引腳2根,分別為VCC和GND;控制引腳4根,使用片內(nèi)ROM,因此EA引腳接高電平;IO引腳共32根,用于單片機(jī)的輸入和輸出;;M4模塊LCD1602顯示模塊,LCD1602的引腳有16根,對溫濕度信息進(jìn)行顯示;M5為溫濕度傳感器模塊,DHT11有4根引腳,分別是VCC、GND、IO和NC,NC懸空即可,I/O需要外接5k的上拉電阻,M6為供電接口,SW1為電源開關(guān);M7為電源指示燈,接通電源即SW1按下時,LED1點亮,M8為單片機(jī)程序下載接口,通過下載器與J1端子相連,在STC-ISP軟件配合下,將Hex文件燒錄到單片機(jī).
圖2 溫濕度檢測儀電路原理圖
在已經(jīng)完成電路圖的基礎(chǔ)上,將電路圖轉(zhuǎn)PCB,在轉(zhuǎn)PCB之前需要進(jìn)行原理圖檢查,通過原理圖轉(zhuǎn)PCB會把元件導(dǎo)入到PCB中,然后調(diào)整元件位置,合理布局,最后進(jìn)行布線,立創(chuàng)EDA可以進(jìn)行手動布線,也可以進(jìn)行自動布線.該P(yáng)CB采用先自動布線再手動局部調(diào)整的方式布線,布線完成之后會出現(xiàn)一個布線完成對話框,顯示布線完成如圖3所示,布線失敗數(shù)為0,說明布線成功,自動布線之后LCD1602液晶顯示器與單片機(jī)引腳的連線間距過小,可以進(jìn)行手動調(diào)整,結(jié)果如圖4所示,接下來對VCC和GND網(wǎng)絡(luò)進(jìn)行敷銅.
圖3 布線完成對話框圖 圖4 PCB自動布線手動調(diào)整
立創(chuàng)EDA軟件支持PCB的2D預(yù)覽與3D模型預(yù)覽,設(shè)計完成PCB后,可以通過2D預(yù)覽查看PCB圖樣,通過3D模型直觀的觀察所設(shè)計產(chǎn)品的元件布局及外型,通過觀察其3D模型,可以發(fā)現(xiàn)PCB設(shè)計中存在的一些問題,比如元器件的布局是否合理等.
Gerber文件是一種符合EIA標(biāo)準(zhǔn)的,有GerberScientific公司定義為用于驅(qū)動光繪機(jī)的文件.PCB打樣廠用Gerber文件制作PCB.PCB設(shè)計好之后生成Gerber文件,即可交由工廠生產(chǎn)PCB電路板,可以在PCB板上加上自己的LOGO或標(biāo)注.
溫濕度檢測儀中的DHT11和LCD1602液晶顯示器是需要一定的時序才能進(jìn)行讀取溫濕度和顯示的,因此需要根據(jù)各器件的時序編寫其單片機(jī)程序,采用多文件的編程方式,包括主程序main.c、DHT11_LCD1602.c和頭文件DTH11_LCD1602.h,便于程序調(diào)試尋找錯誤和后期移植.在主程序main.c中,通過文件包含將所采用的單片機(jī)的頭文件和自定義頭文件包含進(jìn)來,定義LCD1602的顯示數(shù)組,LCD1602_Init()、LCD_Delay()、DHT11_delay_ms()、DHT11_Receive_All()、LCD1602_Display()為自定義函數(shù)調(diào)用,函數(shù)具體實現(xiàn)在DHT11_L CD1602.c中.主程序如下:
#include"reg52.h"
#include"DTH11_LCD1602.h"
unchar code LcdData[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
void main()
{
LCD1602_Init(); //初始化LCD
LCD_Delay(10);
while(1)
{
DHT11_delay_ms(1500); //DHT11上電后要等待1S以越過不穩(wěn)定狀態(tài)
DHT11_Receive_All();
LCD1602_Display();
}
}
程序采用C51語言進(jìn)行編寫程序,通過Keil進(jìn)行程序編寫及調(diào)試,然后生成單片機(jī)需要的Hex文件,如圖5所示,Keil編譯顯示0錯誤、生成hex文件.
圖5 Keil編譯無錯誤界面
首先進(jìn)行實物焊接,根據(jù)電路原理圖和元器件清單將元器件焊接在PCB電路板上,然后通過下載器和PCB板上的下載電路,將Keil生成的Hex文件下載到單片機(jī)里,觀察顯示結(jié)果.經(jīng)過反復(fù)調(diào)試和修改程序,最終得到正確的顯示效果,如圖6所示.LCD1602第一行顯示濕度,第二行顯示溫度.如果改變環(huán)境的溫濕度,LCD1602顯示也會隨著發(fā)生改變,進(jìn)行實時顯示.
圖6 溫濕度顯示
在調(diào)試過程中遇到兩個問題,一個是LCD不顯示,經(jīng)過改變可調(diào)電阻的值,使得液晶屏的亮度發(fā)生變化,從而能夠進(jìn)行顯示;另一個問題是只顯示第一行,通過調(diào)整程序當(dāng)中LCD1602的初始化過程,完美解決了在調(diào)試過程中出現(xiàn)的問題.
經(jīng)過方案設(shè)計、電路原理圖設(shè)計及PCB打板、焊接、編程等過程,開發(fā)出一款性價比較高的溫濕度檢測儀,能夠進(jìn)行常規(guī)的檢測,適用于一般需求,和市面上現(xiàn)有產(chǎn)品相比具有體積小、檢測方便等有點,但成本造價有些偏高.該檢測儀仍有以下需要改進(jìn)和完善的地方:(1)元件位置的布置和LCD162配套的可調(diào)電阻的位置如果不被LCD1602遮擋,那么調(diào)整LCD1602的亮度會方便;(2)單片機(jī)若是橫著擺放,會節(jié)省一定的空間,可以進(jìn)一步降低PCB的成本,同時產(chǎn)品體積更小.(3)不便于擴(kuò)展:該檢測儀沒有預(yù)留出接口,單片機(jī)的IO口還有多個空閑,在PCB設(shè)計的時候沒有引出來,對于后續(xù)擴(kuò)展帶來不便.