韋平安
(拉薩師范高等專(zhuān)科學(xué)校,西藏 拉薩 850007)
基于太陽(yáng)能電池供電的溫度檢測(cè)系統(tǒng)設(shè)計(jì)
韋平安
(拉薩師范高等專(zhuān)科學(xué)校,西藏 拉薩 850007)
針對(duì)在缺電少電環(huán)境下電路系統(tǒng)供電的需求,本設(shè)計(jì)提出一種利用太陽(yáng)能電池供電, 采用低功耗、高性能PIC單片機(jī)、單總線數(shù)字式測(cè)溫器件DS18B20 構(gòu)成的測(cè)溫系統(tǒng)。經(jīng)測(cè)試該系統(tǒng)易于維護(hù)、可靠性高、實(shí)用性強(qiáng)。
缺電;太陽(yáng)能電池;PIC單片機(jī);溫度檢測(cè)
溫度檢測(cè)被廣泛用于工農(nóng)業(yè)生產(chǎn)、科學(xué)研究和人們的日常生活等領(lǐng)域。傳統(tǒng)溫度檢測(cè)系統(tǒng)大多采用常規(guī)電源供電,但是在缺電少電環(huán)境下將無(wú)法滿足系統(tǒng)正常工作的供電需求,本系統(tǒng)的設(shè)計(jì)主要是針對(duì)特殊情況下溫度檢測(cè)系統(tǒng)的供電缺點(diǎn),嘗試設(shè)計(jì)一種基于太陽(yáng)能電池供電的溫度檢測(cè)系統(tǒng)。
溫度檢測(cè)系統(tǒng)的硬件部分組成如圖1所示。
圖1 硬件系統(tǒng)框圖
溫度采集系統(tǒng)主要由供電模塊、溫度信號(hào)采集模塊、PIC單片機(jī)控制模塊、顯示模塊組成。
2.1 供電模塊
晶體硅太陽(yáng)能電池包含單晶硅和多晶硅太陽(yáng)能電池。其中單晶硅太陽(yáng)能電池是目前發(fā)展最快的一類(lèi)太陽(yáng)能電池,其光電轉(zhuǎn)換效率為15%左右,質(zhì)量好的轉(zhuǎn)換效率接近20%。圖2中BAT1為單晶硅太陽(yáng)能電池板。太陽(yáng)能電池組件參數(shù)如下,額定功率:8.8 V,5 W,正常光照條件下實(shí)際測(cè)量出開(kāi)路電壓為:10.8 V左右,短路電流為:0.4 A左右。U3選擇線性三端穩(wěn)壓器LM7805,穩(wěn)壓5 V,最大輸出電流1 A[1]。C3、C4為濾波電容。D2為1N5819肖基特二極管,反向耐壓40 V,正向電壓0.3 V,額定正向電流1 A,還可以防止充電電池反向放電。BAT2是四節(jié)鎳氫充電電池,單節(jié)標(biāo)稱(chēng)電壓1.2 V,白天的時(shí)候?qū)⒍嘤嗟碾娏看鎯?chǔ)于電池中,當(dāng)無(wú)光照或者光照比較弱時(shí),太陽(yáng)能電池?zé)o輸出,由充電電池為系統(tǒng)供電。
圖2 太陽(yáng)能供電穩(wěn)壓電路
2.2 溫度信號(hào)采集模塊和PIC單片機(jī)控制模塊
溫度信號(hào)采集模塊和PIC單片機(jī)控制模塊硬件電路如圖3所示。系統(tǒng)中用到兩個(gè)重要的芯片:PIC16F877A單片機(jī)和DS18B20傳感器。PIC16F877A是Microchip公司產(chǎn)品的一款具有RISC結(jié)構(gòu)的高性能中檔單片機(jī),采用RISC結(jié)構(gòu),僅有35條單字指令,內(nèi)置8 kB的14位程序存儲(chǔ)器,并且具有Flash program 程序內(nèi)存功能,可以重復(fù)燒寫(xiě)程序,支持在線串行編程ICSP,非常適合于學(xué)校的實(shí)驗(yàn)教學(xué)、單片機(jī)愛(ài)好者自學(xué)、以及新產(chǎn)品的開(kāi)發(fā)與調(diào)試。DS18B20是美國(guó)DALLAS半導(dǎo)體公司的智能溫度傳感器產(chǎn)品,使用one-wire總線接口,封裝形式多樣,具有體積小,硬件開(kāi)銷(xiāo)低,抗干擾能力強(qiáng),精度高的特點(diǎn),適用于各種環(huán)境下的溫度檢測(cè),工作電壓3~5.5V,測(cè)量分辨率9~12位,轉(zhuǎn)換速度快,測(cè)溫范圍:-55 ℃~125 ℃。R13、R15為4.7 k的上拉電阻。單片機(jī)PIC16F877A的RD0~RD7各接一個(gè)100 Ω的限流電阻。另接有X1:4 MHz晶振和C1:22pF和C2:22pF構(gòu)成的外部振蕩電路[2],晶振和單片機(jī)之間的連線距離應(yīng)盡可能小。上拉電阻R13和微觸按鍵開(kāi)關(guān)組成單片機(jī)復(fù)位電路。溫度信號(hào)采集模塊主要由可編程單總線數(shù)字溫度傳感器DS18B20組成,DS18B20的DQ腳通過(guò)上拉電阻R15與VCC直連,微處理器通過(guò)RA0腳與傳感器DQ腳連接,通過(guò)單線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。
圖3 溫度采集及單片機(jī)控制電路
2.3 溫度顯示模塊
溫度數(shù)據(jù)顯示模塊的硬件電路如圖4所示。LED數(shù)碼管有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方式,在文中采用的是動(dòng)態(tài)顯示方式,即輪流點(diǎn)亮各位數(shù)碼管,每隔一定的時(shí)間點(diǎn)亮一次,相對(duì)靜態(tài)顯示方式來(lái)說(shuō),占用CPU資源較多。數(shù)碼管的亮度跟電流大小和通電時(shí)間關(guān)系密切。顯示用的4位數(shù)碼管為共陽(yáng)極,Q1~Q4為8550PNP三極管,R9~R12為10 k的電阻,分別與單片機(jī)的RA0~RA3連接,單片機(jī)控制三極管的通斷,實(shí)現(xiàn)顯示位選,控制顯示位亮或者暗,RA0~RA3分別對(duì)應(yīng)溫度數(shù)據(jù)顯示的十位、個(gè)位、小數(shù)十分位、小數(shù)百分位。數(shù)碼管的A~DP分別與單片機(jī)的RD0~RD7連接,用于接收單片機(jī)發(fā)送給數(shù)碼管的字形代碼,即段碼。R16~R19是在Proteus仿真中PNP三極管需要連接的下拉電阻(在制作實(shí)際硬件電路時(shí)不需要連接),如果不接,在仿真時(shí)會(huì)出現(xiàn)亂碼,NPN三極管無(wú)此現(xiàn)象。
2.4 程序設(shè)計(jì)
系統(tǒng)的程序設(shè)計(jì)部分主要由溫度數(shù)據(jù)采集處理和顯示兩大部分。程序流程如下:復(fù)位one-wire總線,啟動(dòng)采集程序并等待采集結(jié)束,讀取溫度數(shù)據(jù),溫度數(shù)據(jù)轉(zhuǎn)換并顯示結(jié)果。由于篇幅的關(guān)系,文中僅列出部分程序的C語(yǔ)言代碼及注釋。
//主函數(shù)
void main()
{
init(); //調(diào)用系統(tǒng)初始化函數(shù)
while(1)
{
get_temp(); //調(diào)用溫度轉(zhuǎn)換函數(shù)
display(); //調(diào)用結(jié)果顯示函數(shù)
PORTA=0x3f; //關(guān)閉所有數(shù)碼管
delayXms(100); //延時(shí)10s,以節(jié)約電量
}
}
圖4 溫度顯示模塊電路原理圖
2.4.1 溫度轉(zhuǎn)換函數(shù)
void get_temp() //啟動(dòng)溫度轉(zhuǎn)換函數(shù)
{
DQ_HIGH();
reset(); //復(fù)位等待從機(jī)應(yīng)答
write_byte(0XCC); //忽略ROM匹配,只有一個(gè)DS18B20
write_byte(0X44); //發(fā)送溫度轉(zhuǎn)化命令
delayXms(10); //延時(shí)1000ms,等待溫度轉(zhuǎn)換
reset(); //再次復(fù)位,等待從機(jī)應(yīng)答
write_byte(0XCC); //忽略ROM匹配
write_byte(0XBE); //發(fā)送讀溫度命令
TLV=read_byte(); //讀出溫度低8
THV=read_byte(); //讀出溫度高8位
DQ_HIGH(); //釋放總線
TZ=(TLV>>4)|(THV<<4)&0X3f; //溫度整數(shù)部分
TX=TLV<<4; //溫度小數(shù)部分
if(TZ>100) TZ/100; //不顯示百位
Tge=TZ%10;//個(gè)位 //溫度整數(shù)部分個(gè)位
Tshi=TZ/10;//十位 //溫度整數(shù)十位
wd=0;
if (TX & 0x80) wd=wd+5000;
if (TX & 0x40) wd=wd+2500;
//以上2條指令把小數(shù)部分轉(zhuǎn)換為BCD碼形式
Tshifen=wd/1000; //溫度數(shù)據(jù)十分位
Tbaifen=(wd%1000)/100; //溫度數(shù)據(jù)百分位
NOP();
}
reset(void) //復(fù)位DS18B20函數(shù)
{
charstate_DQ=1;
while(state_DQ)
{
DQ_LOW() ; //主機(jī)拉至低電平
__delay_us(500); //延時(shí)500us
DQ_HIGH(); //釋放總線等電阻拉高總線,并保持15~60us
__delay_us(50); //延時(shí)50us
if(DQ==1) state_DQ=1;
else state_DQ=0;//沒(méi)有接收到應(yīng)答信號(hào),繼續(xù)復(fù)位
__delay_us(430); //延時(shí)430us; }
}
在編寫(xiě)程序代碼時(shí)需要特別注意:首先要先讀懂DS18B20的時(shí)序,再編寫(xiě)相應(yīng)的程序代碼,對(duì)DS18B20的讀寫(xiě)操作必須嚴(yán)格按照其定義的時(shí)序來(lái)進(jìn)行,否則將無(wú)法讀取溫度數(shù)據(jù),最終導(dǎo)致溫度檢測(cè)失敗。編寫(xiě)程序的過(guò)程中還利用到了PICC軟件里自定義的延時(shí)函數(shù)__delay_ms( )、__delay_us( )[3],可以一定程度上減輕程序編寫(xiě)的負(fù)擔(dān),讓程序的編寫(xiě)變得更加輕松。
//延時(shí)時(shí)間較長(zhǎng)的延時(shí)函數(shù) 延時(shí)時(shí)間t=n*100ms
voiddelayXms(uch n)
{
while(n--) __delay_ms(100);
}
2.4.2 溫度轉(zhuǎn)換及顯示函數(shù)
void display() //溫度值顯示函數(shù):動(dòng)態(tài)掃描顯示
{
uchi=0;
for(i=0;i<10;i++) //循環(huán)動(dòng)態(tài)掃描顯示溫度10次
{
TRISA=0x00; //設(shè)置A口全為輸出
PORTA=0x3f; //關(guān)閉所有數(shù)碼管
PORTD=table[Tshi]; //發(fā)送整數(shù)十位并顯示
PORTA=0x3e;
__delay_ms(5);
PORTA=0x3f;
PORTD=table[Tge]&0X7F; //顯示整數(shù)個(gè)位,并點(diǎn)亮小數(shù)點(diǎn)
PORTA=0x3d;
__delay_ms(5);
PORTA=0x3f;
PORTD=table[Tshifen]; //顯示小數(shù)十分位
PORTA=0x3b;
__delay_ms(5);
PORTA=0x3f;
PORTD=table[Tbaifen]; //顯示小數(shù)百分位
PORTA=0x37;
__delay_ms(5);
PORTA=0x3f;//關(guān)閉所有數(shù)碼管
}
}
其中在每一個(gè)數(shù)據(jù)顯示之前加上PORTA=0x3f代碼,主要是防止在用Proteus仿真時(shí)數(shù)碼管出現(xiàn)亂碼[4]。在實(shí)際的硬件電路中這句代碼可以不需要。
西藏太陽(yáng)能資源非常豐富,本設(shè)計(jì)通過(guò)引入太陽(yáng)能電池,拓寬了測(cè)溫系統(tǒng)的應(yīng)用范圍,該溫度檢測(cè)系統(tǒng)通過(guò)了Proteus的軟件仿真,也在硬件電路板上測(cè)試通過(guò)。同時(shí)指出了在軟件仿真中要注意的一些細(xì)節(jié)問(wèn)題。系統(tǒng)中采用的線性穩(wěn)壓器件電源轉(zhuǎn)化效率低,沒(méi)有能夠充分利用大自然賦予我們的太陽(yáng)能,為了省電,在主程序中加入了一個(gè)較長(zhǎng)的延時(shí)程序,在延時(shí)期間不點(diǎn)亮數(shù)碼管。在今后,將嘗試使用轉(zhuǎn)換效率更高的電源穩(wěn)壓器件加以進(jìn)一步改進(jìn),使得整個(gè)電路更加高效精巧;另外還可以加入sd存儲(chǔ)卡模塊和無(wú)線發(fā)送接收模塊,溫度數(shù)據(jù)既可以存儲(chǔ)于本地也可以通過(guò)無(wú)線信號(hào)進(jìn)行數(shù)據(jù)傳送。
[1] 王昊.線性集成電源應(yīng)用電路設(shè)計(jì)[M].北京:清華大學(xué)出版社,2009.
[2] 張明峰.PIC單片機(jī)入門(mén)與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2004.
[3] 彭偉.單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例:基于PIC+Proteus仿真[M].第2版.北京:電子工業(yè)出版社,2015.
[4] 熊再榮,雷建龍,李漢玲.數(shù)碼管動(dòng)態(tài)顯示亂碼現(xiàn)象分析[J].液晶與顯示,2009,24(5):704-706.
Temperature Detection System Design Based on Solar Battery Power Supply
Wei Pingan
(LhasaNormalCollege,LhasaTibet850007,China)
Aiming at the demand of power supply in power system under the circumstance of less power and less electricity, the paper puts forward a temperature measuring system that composed of solar battery power supply, PIC MCU with low power consumption and high performance and the DS18B20 1-Wire bus digital thermometer. By testing, the system is easy to maintain, and with high reliablity, strong practicability.
lack of electricity; the solar cell; PIC MCU; temperature detection
2017-04-25
韋平安(1981- ),男,廣西賓陽(yáng)人,講師,研究方向:數(shù)字信號(hào)處理。
1674- 4578(2017)04- 0009- 04
TM914;TP274.5
A