溫度監控設計管理論文

時間:2022-07-16 04:11:00

導語:溫度監控設計管理論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

溫度監控設計管理論文

隨著"信息時代"的到來,作為獲取信息的手段--傳感器技術得到了顯著的進步,其應用領域越來越廣泛,對其要求越來越高,需求越來越迫切。傳感器技術已成為衡量一個國家科學技術發展水平的重要標志之一。因此,了解并掌握各類傳感器的基本結構、工作原理及特性是非常重要的。

由于傳感器能將各種物理量、化學量和生物量等信號轉變為電信號,使得人們可以利用計算機實現自動測量、信息處理和自動控制,但是它們都不同程度地存在溫漂和非線性等影響因素。傳感器主要用于測量和控制系統,它的性能好壞直接影響系統的性能。因此,不僅必須掌握各類傳感器的結構、原理及其性能指標,還必須懂得傳感器經過適當的接口電路調整才能滿足信號的處理、顯示和控制的要求,而且只有通過對傳感器應用實例的原理和智能傳感器實例的分析了解,才能將傳感器和信息通信和信息處理結合起來,適應傳感器的生產、研制、開發和應用。另一方面,傳感器的被測信號來自于各個應用領域,每個領域都為了改革生產力、提高工效和時效,各自都在開發研制適合應用的傳感器,于是種類繁多的新型傳感器及傳感器系統不斷涌現。溫度傳感器是其中重要的一類傳感器。其發展速度之快,以及其應用之廣,并且還有很大潛力。

為了提高對傳感器的認識和了解,尤其是對溫度傳感器的深入研究以及其用法與用途,基于實用、廣泛和典型的原則而設計了本系統。本文利用單片機結合傳感器技術而開發設計了這一溫度監控系統。文中傳感器理論單片機實際應用有機結合,詳細地講述了利用熱敏電阻作為熱敏傳感器探測環境溫度的過程,以及實現熱電轉換的原理過程。

本設計應用性比較強,設計系統可以作為生物培養液溫度監控系統,如果稍微改裝可以做熱水器溫度調節系統、實驗室溫度監控系統等等。課題主要任務是完成環境溫度檢測,利用單片機實現溫度調節并通過計算機實施溫度監控。設計后的系統具有操作方便,控制靈活等優點。

本設計系統包括溫度傳感器,A/D轉換模塊,輸出控制模塊,數據傳輸模塊,溫度顯示模塊和溫度調節驅動電路六個部分。文中對每個部分功能、實現過程作了詳細介紹。整個系統的核心是進行溫度監控,完成了課題所有要求。

設計要求

控制要求

(1)生物繁殖培養液的溫度要保證在適于細胞繁殖的溫度內,這主要在控制程序設計中考慮。溫度控制范圍為15~25,升溫、降溫階段的溫度控制精度要求為0.5度,保溫階段溫度控制精度為0.5度。

(2)微機自動調節正常情況下,系統投入自動。

(3)模擬手動操作當系統發生異常,投入手動操作。

(4)微機監控功能顯示當前被控量的設定值、實際值,控制量的輸出。

受控對象的數學模型

生物繁殖的培養液主要用于生物的繁殖研究,而溫度是影響生物繁殖的重要因素。本系統要求長時間監視培養液的溫度,并對當前的溫度進行控制。本控制對象為生物繁殖用培養液,采用繼電器進行控制。

系統的硬件配置

單片機和系統總線

單片機:PIC16F877A(PIC16F877A為美國MICORCHIP公司生產的帶A/D轉換的8位單片機)。

顯示系統:商用計算機。

用戶內存:256MRAM。

系統總線:RS-232-C接口(又稱EIARS-232-C)RS232C有25條線,,分為5個功能組,包括4條數據線,11條控制線,3條定時線,7條備用線和未定義線。

操作系統:Windows2000。

硬件電路板的制作

本設計中需要有2個繼電器控制外圍溫度調節系統,2個LED用來提示串口數據指示,還有一個PIC16F877A單片機,一個Max232電平轉換器,一個有源晶體振蕩器及其外圍電阻電容等。在確定電路的正確性,可行性之后,開始使用Protel對它進行布圖。

Protel是一個很好用的電子制作工具,它還可以進行仿真。在畫原理圖的過程中,原理圖中的元件庫中可能找不到自己要找的元件,如PIC16F877A等,所以要自己畫元件。在畫原理圖后,選擇將元件自動編號,然后根據需要更改部分元件的編號。在定好元件編號后,使用TOOLS中的ERC進行檢查,它會提示是否有編號相同的元件等錯誤。在ERC檢查無誤后,便可以開始封裝了。同樣,部分元件的封裝在PCB庫中找不到或者是有出入,如按鍵開關,2位撥碼開關在PCB庫中找不到,所以需要自己根據元件的實際大小和相應的原理圖中引腳編號,做出正確的封裝。

附錄1

(1)本設計使用的部分單片機程序如下:

#include<pic.h>

//*************************

voidINIT()

{

ADCON1=0X07;

TRISC=0X80;

TRISB=0X00;

TRISD=0X00;

RD1=0;

RD0=0;

TRISA=0X0f;

TRISE=0X00;

}

//*************************

#include<pic.h>

#include"init.h"

#include"proc.h"

//*************************

unsignedchari;

unsignedintdelay;

externunsignedchara;

externunsignedchartemph;

externunsignedchartempl;

//***************************

voidmain()

{

//初始化

INIT();

for(delay=65536;delay>0;delay--)asm("clrwdt");

temph=0x35;

templ=0x30;

do

{

asm("clrwdt");

PROCDIANPIN();

RC0=0;

RC1=0;

}while(1);

}

#include<pic.h>

#include"tranpc.h"

//*********************

unionadres

{

inty1;

unsignedcharadre[2];

}adresult;

externunsignedintdelay;

unsignedinttemp;

unsignedinty;

unsignedcharreceive;

unsignedchara;

externunsignedcharrxbuf[];

unsignedchartemph;

unsignedchartempl;

externunsignedchari;

//******************************

voidPROCDIANPIN()

{

ADCON0=0X89;

ADCON1=0X84;

ADIF=0;

ADGO=1;

for(delay=0x8ff;delay>0;delay--)asm("nop");

while(ADIF==0)

{

asm("clrwdt");

}

asm("clrwdt");

ADIF=0;

adresult.adre[0]=ADRESL;

adresult.adre[1]=ADRESH;

if((adresult.y1<=0x204)&&(adresult.y1>=0xD9))

{

temp=0x10;

for(

y=0x204;adresult.y1<=y;adresult.y1=adresult.y1+0x07)

{

temp++;

if(temp==0x1a)temp=0x20;

if(temp==0x2a)temp=0x30;

if(temp==0x3a)temp=0x40;

if(temp==0x4a)temp=0x50;

if(temp==0x5a)temp=0x60;

if(temp==0x6a)temp=0x70;

if(temp==0x7a)temp=0x80;

if(temp==0x8a)temp=0x90;

if(temp==0x9a)temp=0x100;

}

}

TXPC(temp);

RC0=1;

RXDATAS();

if(rxbuf[0]!=0)

{

if((rxbuf[0]==0x10)&&(rxbuf[1]==0xff))receive=0xff;

elseif(rxbuf[0]==0x20)

{

templ=rxbuf[1];

temph=rxbuf[2];