在一些倉儲管ç†ã€ç”Ÿç”¢åˆ¶é€ ã€æ°£è±¡è§€æ¸¬ã€ç§‘å¸ç ”ç©¶ä»¥åŠæ—¥å¸¸ç”Ÿæ´»ä¸ï¼Œå°æº«æ¿•åº¦çš„è¦æ±‚æ™®éå˜åœ¨ï¼Œå¦‚ã€Šæª”æ¡ˆåº«æˆ¿æŠ€è¡“ç®¡ç†æš«è¡Œè¦å®šã€‹ä¸å°±æ˜Žç¢ºæŒ‡å‡ºï¼šæª”案庫房(å«è† 片庫ã€ç£å¸¶åº«ï¼‰çš„æº«åº¦æ‡‰æŽ§åˆ¶åœ¨14~24℃,有è¨å‚™çš„庫房日變化幅度ä¸è¶…éŽÂ±2â„ƒï¼›ç›¸å°æ¿•度應控制在45%~60%,有è¨å‚™çš„庫房日變化幅度ä¸è¶…éŽÂ±5%。本文利用新型的C8051F020單片機和I2C總線數å—弿º«æ¿•度傳感器SHT11è¨è¨ˆäº†ä¸€å¥—滿足æ¤è¦æ±‚的自動化è¨å‚™ã€‚
系統硬件è¨è¨ˆ
基于C8051F020的檔案庫溫濕度控制器,主器件為8051F020,從器件為I2Cç¸½ç·šæ•¸å—æº«æ¿•度傳感器SHT11。
SHT11是瑞士Sennsirionå…¬å¸ç”Ÿç”¢çš„具有I2C總線接å£çš„å–®ç‰‡å…¨æ ¡æº–æ•¸å—å¼ç›¸å°æ¿•åº¦å’Œæº«åº¦å‚³æ„Ÿå™¨ã€‚å‚³çµ±çš„æ¨¡æ“¬å¼æ¿•度傳感器一般都è¦è¨è¨ˆä¿¡è™Ÿèª¿ç†é›»è·¯å¹¶ç¶“éŽå¾©é›œçš„æ ¡æº–和標定éŽç¨‹ï¼Œå› æ¤æ¸¬é‡ç²¾åº¦é›£ä»¥ä¿è‰ï¼Œä¸”在線性度ã€é‡å¾©æ€§ã€äº’æ›æ€§ã€ä¸€è‡´æ€§ç‰æ–¹é¢å¾€å¾€ä¸ç›¡äººæ„。SHT11是瑞士Sennsirionå…¬å¸æŽ¨å‡ºçš„åŸºäºŽCMOSensTM技術(將溫濕度傳感器ã€ä¿¡è™Ÿæ”¾å¤§èª¿ç†ã€A/D轉æ›ã€I2C總線全部集æˆåœ¨ä¸€å€‹èŠ¯ç‰‡ä¸Šï¼‰çš„æ–°åž‹æº«æ¿•åº¦å‚³æ„Ÿå™¨ï¼Œè©²å‚³æ„Ÿå™¨çš„æ¿•åº¦å€¼è¼¸å‡ºåˆ†è¾¨çŽ‡ç‚º14ä½ï¼Œæº«åº¦å€¼è¼¸å‡ºåˆ†è¾¨çŽ‡ç‚º12ä½ï¼Œå¹¶å¯ç·¨ç¨‹ç‚º12ä½å’Œ8ä½ã€‚
C8051F020單片機是集æˆåœ¨1塊芯片上的混åˆä¿¡è™Ÿç³»çµ±ç´šå–®ç‰‡æ©Ÿï¼Œå…·æœ‰èˆ‡MCS8051å…§æ ¸åŠæŒ‡ä»¤å®Œå…¨å…¼å®¹çš„微控制器。除了具有標準8051機的數å—外è¨éƒ¨ä»¶å¤–,片內還集æˆäº†æ•¸æ“šé‡‡é›†èˆ‡æŽ§åˆ¶ç³»çµ±ä¸å¸¸ç”¨çš„æ¨¡æ“¬éƒ¨ä»¶å’Œå…¶ä»–數å—外è¨åŠåŠŸèƒ½éƒ¨ä»¶ï¼Œå…§éƒ¨é‚„å…·æœ‰JTAG和調試電路,通éŽJATG接å£å¯ä»¥ä½¿ç”¨å®‰è£åœ¨æœ€çµ‚應用系統產å“上的單片機進行éžä¾µå…¥ã€å…¨é€ŸåŠåœ¨ç·šç³»çµ±èª¿è©¦ã€‚
由二者組æˆçš„æº«æ¿•度控制器的硬件連接如圖1所示。

圖1 C8051F020與SHT11的接線圖
利用I/O端å£åˆå§‹åŒ–程åºå•Ÿå‹•優先權交å‰é–‹é—œè¯ç¢¼å™¨æŠŠP0.0ã€P0.1引腳分別é…ç½®æˆSDA (串行數據)ã€SCL(串行時é˜ï¼‰ï¼Œç„¶åŽåˆ†åˆ¥æŽ¥SHT11çš„DATAå’ŒSCK,在時é˜çš„æŽ§åˆ¶ä¸‹ä¾†å®Œæˆå°SHT11采集并進行A/D轉æ›åŽçš„æº«æ¿•度數據的讀å–,P0.2ã€P0.3被é…ç½®æˆåŸºæœ¬è¼¸å…¥è¼¸å‡ºï¼Œæ ¹æ“šè®€å–的溫濕度值的高低來控制兩個繼電器,進而é”到控制溫濕度調節器的目的。在串行通信éŽç¨‹ä¸ä¸»å™¨ä»¶ç‚º8051F020,從器件為SHT11。
軟件è¨è¨ˆ
1 Bangï¼Bang控制
在檔案室溫濕度控制ä¸ï¼Œå°æº«æ¿•åº¦çš„è¦æ±‚䏿˜¯ä¸€å€‹å®šå€¼ï¼Œè€Œæ˜¯ä¸€å€‹èŒƒåœã€‚åŸ·è¡Œæ©Ÿåªæœ‰å…©ç¨®ç‹€æ…‹ï¼šon,é‹è½‰ï¼›off,ä¸é‹è½‰ã€‚å°äºŽé€™ç¨®åŸ·è¡Œæ©Ÿï¼Œé‡‡ç”¨å…¸åž‹çš„æ•¸å—控制算法為Bangï¼Bang控制算法。這樣需è¦å…©å€‹æº«åº¦è¨ç½®é»žï¼šTHIGHå’ŒTLOW,兩個濕度è¨ç½®é»žHHIGHå’ŒHLOW。溫度控制和濕度控制一樣,所以åªä»‹ç´¹æº«åº¦çš„æŽ§åˆ¶ã€‚如果溫度高于THIGH,則控制器關閉電æºï¼ˆç¹¼é›»å™¨é‡‹æ”¾ï¼‰ï¼Œå¦‚果溫度低于TLOW,則控制器打開電æºï¼ˆç¹¼é›»å™¨å¸åˆï¼‰ã€‚THIGH與TLOW之差稱為滯åŽã€‚使用滯åŽå»¶é•·äº†ç¹¼é›»å™¨çš„ä½¿ç”¨å£½å‘½ï¼Œå› ç‚ºå®ƒæ¸›å°‘äº†ç¹¼é›»å™¨é–‹é—œæ¬¡æ•¸ã€‚
2 程åºè¨è¨ˆ
該程åºåŒ…括:
◠系統復ä½å程åºï¼ˆReset_Init):完æˆå°å…§éƒ¨æŒ¯è•©å™¨çš„è¨ç½®ï¼Œå°XBR0å’ŒXBR2çš„è¨ç½®å°‡SMB連到通用的I/O引腳;
â— SMBusåˆå§‹åŒ–å程åºï¼ˆSMBus_Init):é…置并使能SMBus,è¨ç½®SMBus時é˜é€ŸçŽ‡ï¼Œç‚ºç¬¬ä¸€æ¬¡å‚³è¼¸æ¸…é™¤SM_BUSY標志;
â— A/D轉æ›å’Œè®€å–è½‰æ›æ•¸æ“šå¾—å程åºï¼ˆADCRead);Bangï¼Bang控制算法å程åºï¼ˆBangï¼Bang);
◠輸出控制å程åºï¼ˆOUTcontrolï¼‰ã€‚ç¾æŠŠä¸»è¦çš„啟動A/D轉æ›åŠè®€å–數據å程åºçµ¦å‡ºã€‚
ADCRead:
WRITE EQU 00H
//SMBus寫命令
READ EQU 01H
//SMBus寫命令
CHIP-A EQU 00H
//SHT11從地å€
MEAMURE_TEMP EQU 03H
//SHT11æ¸¬é‡æº«åº¦å‘½ä»¤
MEARURE_HUMI EQU 05H
//SHT11æ¸¬é‡æ¿•度命令
CLR RW
//寫從地å€
MOV A,#CHIP_A
ORL A,#WRITE
MOV WRIT_ADC, A
SETB SM_BUSY
SETB STA
JB SM_BUSY, $
//寫溫度測é‡å‘½ä»¤
CLR RW
MOV A,# MEAMURE_TEMP
ORL A,#WRITE
MOV WRIT_ADC, A
SETB SM_BUSY
SETB STA
JB SM_BUSY, $
//讀測得的溫度
SETB RW
MOV A, # CHIP_A
ORL A,#READ
MOV READ_ADC, A
SETB SM_BUSY
SETB STA
ACALL DELAY
MOV TEMPR, RECEIVE_BYTE
————————
——————————
//寫濕度測é‡å‘½ä»¤
——————————————————
//讀測得的濕度值
由于濕度測é‡å’Œæº«åº¦æ¸¬é‡ç¨‹åºç›¸åŒï¼Œæ‰€ä»¥æ²’有給出,測é‡åŽçš„æº«åº¦æ•¸æ“šå’Œæ¿•度數據分別放在TEMPRå’ŒHUMIR兩個寄å˜å™¨ä¸ï¼Œç„¶åŽç¶“éŽç·šæ€§ä¿®æ£ç¨‹åºå’Œæ£’棒算法程åºåŽæŽ§åˆ¶ç¹¼é›»å™¨çš„å‹•ä½œã€‚
çµæŸèªž
本文è¨è¨ˆæº«æ¿•度調節系統,主器件為8051F020,從器件為I2Cç¸½ç·šæ•¸å—æº«æ¿•度傳感器SHT11,接å£é›»è·¯ç”¨I/O端å£åˆå§‹åŒ–程åºå•Ÿå‹•優先權交å‰é–‹é—œè¯ç¢¼å™¨æŠŠå¼•腳分別é…ç½®æˆä¸²è¡Œæ•¸æ“šåŠä¸²è¡Œæ™‚é˜ï¼Œå¹¶é…置基本輸入輸出。軟件è¨è¨ˆå‰‡é‡‡ç”¨Bang-Bang控制算法,需高低兩個溫度è¨ç½®é»žï¼Œæº«åº¦é«˜äºŽé«˜é»žå‰‡é—œé–‰é›»æºï¼Œä½ŽäºŽä½Žé»žå‰‡æ‰“é–‹é›»æºã€‚控制程åºå«ç³»çµ±å¾©ä½ã€åˆå§‹åŒ–ã€A/D轉æ›å’Œè®€å–數據轉æ›ã€Bang-Bang控制算法åŠè¼¸å‡ºæŽ§åˆ¶å程åºã€‚