導航:首頁 > 操作系統 > 測溫單片機系統

測溫單片機系統

發布時間:2025-07-28 09:16:17

❶ 基於單片機的溫度控制系統設計

第一章 緒論 1. 1 選題背景 防潮、防霉、防腐、防爆是倉庫日常工作的重要內容,是衡量倉庫管理質量的重要指標。它直接影響到儲備物資的使用壽命和工作可靠性。為保證日常工作的順利進行,首要問題是加強倉庫內溫度與濕度的監測工作。但傳統的方法是用與濕度表、毛發濕度表、雙金屬式測量計和濕度試紙等測試器材,通過人工進行檢測,對不符合溫度和濕度要求的庫房進行通風、去濕和降溫等工作。這種人工測試方法費時費力、效率低,且測試的溫度及濕度誤差大,隨機性大。因此我們需要一種造價低廉、使用方便且測量准確的溫濕度測量儀。1.2 設計過程及工藝要求 一、基本功能~ 檢測溫度、濕度~ 顯示溫度、濕度~ 過限報警 二、主要技術參數 ~ 溫度檢測范圍 : -30℃-+50℃~ 測量精度 : 0.5℃~ 濕度檢測范圍 : 10%-100%RH~ 檢測精度 : 1%RH~ 顯示方式 : 溫度:四位顯示 濕度:四位顯示~ 報警方式 : 三極體驅動的蜂鳴音報警 第二章 方案的比較和論證 當將單片機用作測控系統時,系統總要有被測信號懂得輸入通道,由計算機拾取必要的輸入信息。對於測量系統而言,如何准確獲得被測信號是其核心任務;而對測控系統來講,對被控對象狀態的測試和對控制條件的監察也是不可缺少的環節。感測器是實現測量與控制的首要環節,是測控系統的關鍵部件,如果沒有感測器對原始被測信號進行准確可靠的捕捉和轉換,一切准確的測量和控制都將無法實現。工業生產過程的自動化測量和控制,幾乎主要依靠各種感測器來檢測和控制生產過程中的各種參量,使設備和系統正常運行在最佳狀態,從而保證生產的高效率和高質量。2. 1溫度感測器的選擇 方案一:採用熱電阻溫度感測器。熱電阻是利用導體的電阻隨溫度變化的特性製成的測溫元件。現應用較多的有鉑、銅、鎳等熱電阻。其主要的特點為精度高、測量范圍大、便於遠距離測量。鉑的物理、化學性能極穩定,耐氧化能力強,易提純,復制性好,工業性好,電阻率較高,因此,鉑電阻用於工業檢測中高精密測溫和溫度標准。缺點是價格貴,溫度系數小,受到磁場影響大,在還原介質中易被玷污變脆。按IEC標准測溫范圍-200~650℃,網路電阻比W(100)=1.3850時,R0為100Ω和10Ω,其允許的測量誤差A級為±(0.15℃+0.002 |t|),B級為±(0.3℃+0.005 |t|)。銅電阻的溫度系數比鉑電阻大,價格低,也易於提純和加工;但其電阻率小,在腐蝕性介質中使用穩定性差。在工業中用於-50~180℃測溫。 方案二:採用AD590,它的測溫范圍在-55℃~+150℃之間,而且精度高。M檔在測溫范圍內非線形誤差為±0.3℃。AD590可以承受44V正向電壓和20V反向電壓,因而器件反接也不會損壞。使用可靠。它只需直流電源就能工作,而且,無需進行線性校正,所以使用也非常方便,借口也很簡單。作為電流輸出型感測器的一個特點是,和電壓輸出型相比,它有很強的抗外界干擾能力。AD590的測量信號可遠傳百餘米。綜合比較方案一與方案二,方案二更為適合於本設計系統對於溫度感測器的選擇。 2. 2 濕度感測器的選擇 測量空氣濕度的方式很多,其原理是根據某種物質從其周圍的空氣吸收水分後引起的物理或化學性質的變化,間接地獲得該物質的吸水量及周圍空氣的濕度。電容式、電阻式和濕漲式濕敏原件分別是根據其高分子材料吸濕後的介電常數、電阻率和體積隨之發生變化而進行濕度測量的。方案一:採用HOS-201濕敏感測器。HOS-201濕敏感測器為高濕度開關感測器,它的工作電壓為交流1V以下,頻率為50HZ~1KHZ,測量濕度范圍為0~100%RH,工作溫度范圍為0~50℃,阻抗在75%RH(25℃)時為1MΩ。這種感測器原是用於開關的感測器,不能在寬頻帶范圍內檢測濕度,因此,主要用於判斷規定值以上或以下的濕度電平。然而,這種感測器只限於一定范圍內使用時具有良好的線性,可有效地利用其線性特性。方案二:採用HS1100/HS1101濕度感測器。HS1100/HS1101電容感測器,在電路構成中等效於一個電容器件,其電容量隨著所測空氣濕度的增大而增大。不需校準的完全互換性,高可靠性和長期穩定性,快速響應時間,專利設計的固態聚合物結構,由頂端接觸(HS1100)和側面接觸(HS1101)兩種封裝產品,適用於線性電壓輸出和頻率輸出兩種電路,適宜於製造流水線上的自動插件和自動裝配過程等。相對濕度在1%---100%RH范圍內;電容量由16pF變到200pF,其誤差不大於±2%RH;響應時間小於5S;溫度系數為0.04 pF/℃。可見精度是較高的。綜合比較方案一與方案二,方案一雖然滿足精度及測量濕度范圍的要求,但其只限於一定范圍內使用時具有良好的線性,可有效地利用其線性特性。而且還不具備在本設計系統中對溫度-30~50℃的要求,因此,我們選擇方案二來作為本設計的濕度感測器。2. 3 信號採集通道的選擇 在本設計系統中,溫度輸入信號為8路的模擬信號,這就需要多通道結構。方案一、採用多路並行模擬量輸入通道。這種結構的模擬量通道特點為:(1) 可以根據各輸入量測量的餓要求選擇不同性能檔次的器件。總體成本可以作得較低。(2) 硬體復雜,故障率高。(3) 軟體簡單,各通道可以獨立編程。方案二、採用多路分時的模擬量輸入通道。 這種結構的模擬量通道特點為:(1) 對ADC、S/H要求高。(2) 處理速度慢。(3) 硬體簡單,成本低。(4) 軟體比較復雜。綜合比較方案一與方案二,方案二更為適合於本設計系統對於模擬量輸入的要求,比較其框圖,方案二更具備硬體簡單的突出優點,所以選擇方案二作為信號的輸入通道。本文來源於: http://www.waibaowang.net/dianzi/

❷ 用單片機做溫度檢測系統 論文,

用DS18B20做的電子溫度計,非常簡單。

#include <reg51.h>
#include\"AscLed.h\"
#include <intrins.h>
#include <stdio.h>
//********************************************************
#define Seck (500/TK) //1秒中的主程序的系數
#define OffLed (Seck*5*60) //自動關機的時間5分鍾!
//********************************************************
#if (FHz==0)
#define NOP_2uS_nop_()
#else
#define NOP_2uS_nop_();_nop_()
#endif
//**************************************
#define SkipK 0xcc //跳過命令
#define ConvertK 0x44 //轉化命令
#define RdDs18b20K 0xbe //讀溫度命令
//*******************************************
extern LedOut(void);
//*************************************************
sbit PNP1=P3^4;
sbit PNP2=P3^5;
sbit BEEP=P3^2;
//***********************************
#defineDQ PNP2 //原來的PNP2 BEEP
//***********************************
static unsigned char Power=0;
//************************************
union{
unsigned char Temp[2]; //單位元組溫度
unsigned int Tt; //2位元組溫度
}T;
//***********************************************
typedef struct{
unsigned char Flag; //正數標志 0;1==》負數
unsigned char WenDu; //溫度整數
unsigned int WenDuDot; //溫度小數放大了10000

}WENDU;
//***********************************************
WENDU WenDu;
unsigned char LedBuf[3];
//----------------------------------
//功能:10us 級別延時
// n=1===> 6Mhz=14uS 12MHz=7uS
//----------------------------------
void Delay10us(unsigned char n){

do{
#if (FHz==1)
NOP_2uS;NOP_2uS;
#endif
}while(--n);
}
//-----------------------------------
//功能:寫18B20
//-----------------------------------
void Write_18B20(unsigned char n){
unsigned char i;
for(i=0;i<8;i++){
DQ=0;
Delay10us(1);//延時13us 左右
DQ=n & 0x01;
n=n>>1;
Delay10us(5);//延時50us 以上
DQ=1;
}
}
//------------------------------------
//功能:讀取18B20
//------------------------------------
unsigned char Read_18B20(void){
unsigned char i;
unsigned char temp;
for(i=0;i<8;i++){
temp=temp>>1;
DQ=0;
NOP_2uS;//延時1us
DQ=1;
NOP_2uS;NOP_2uS;//延時5us
if(DQ==0){
temp=temp&0x7F;
}else{
temp=temp|0x80;
}
Delay10us(5);//延時40us
DQ=1;
}
return temp;
}
//-----------------------------------
void Init (void){
DQ=0;
Delay10us(45);//延時500us
DQ=1;
Delay10us(9);//延時90us
if(DQ){ //0001 1111b=1f
Power =0; //失敗0
}else{
Power++;
DQ=1;
}
}
//----------------------------------
void Skip(void){
Write_18B20(SkipK);
Power++;
}
//----------------------------------
void Convert (void){
Write_18B20(ConvertK);
Power++;
}
//______________________________________
void Get_Ds18b20L (void){
T.Temp[1]=Read_18B20(); //讀低位
Power++;
}
//______________________________________
void Get_Ds18b20H (void){
T.Temp[0]=Read_18B20(); //讀高位
Power++;
}
//------------------------------------
//規范化成浮點數
// sssss111;11110000
// sssss111;1111(0.5,0.25,0.125,0.0625)
//------------------------------------
void ReadTemp (void){
unsigned char i;
unsigned intF1=0;
char j=1;
code int Code_F[]={6250,1250,2500,5000};

WenDu.Flag=0;

if (T.Temp[0] >0x80){ //負溫度
T.Tt =~T.Tt+1; //取反+1=源嗎 +符號S
WenDu.Flag=-1;
}
T.Tt <<= 4; //左移4位
WenDu.WenDu=T.Temp[0]; // 溫度整數
//**************************************************
T.Temp[1]>>=4;
//---------------------------
for (i=0;i<4;i++){ //計算小數位
F1 +=(T.Temp[1] & 0x01)*Code_F;
T.Temp[1]>>=1;
}
WenDu.WenDuDot=F1; //溫度的小數
Power=0;
}
//----------------------------------
void Delay1S (void){
static unsigned int i=0;

if (++i==Seck) {i=0ower++;}
}
//----------------------------------
void ReadDo (void){
Write_18B20(RdDs18b20K);
Power++;
}
/**********************************
函數指針定義
***********************************/
code void (code *SubTemp[])()={
Init,Skip,Convert,Delay1S,Init,Skip,ReadDo,Get_Ds18b20L,
Get_Ds18b20H,ReadTemp
};
//**************************************
void GetTemp(void){
(*SubTemp[Power])();
}
//---------------------------------------------------
//將溫度顯示,小數點放大了10000.
void GetBcd(void){
LedBuf[0]=WenDu.WenDu / 10;
LedBuf[1]=WenDu.WenDu % 10 +DotK;
LedBuf[2]=(WenDu.WenDuDot/1000)%10;

if(LedBuf[0]==0)LedBuf[0]=Black;

if(WenDu.Flag==0) return;
if(LedBuf[0] !=Black){
LedBuf[2]=LedBuf[1];
LedBuf[1]=LedBuf[0];
LedBuf[0]=Led_Pol; //'-'
}else{
LedBuf[0]=Led_Pol; //'-'
}
}
/*
//---------------------------------------------------
void JbDelay (void){
static long i;
if (++i>=OffLed){
P1=0xff;
P2=0xff;
PCON=0x02;
}
}
*/
/*****************************************************
主程序開始
1:2002_10_1 設計,採用DS18B20測量
2:採用函數數組讀取DS18B20.LED數碼管顯示正常!
3:改變FHz可以用6,12MHz工作!
******************************************************/
code unsigned char Stop[3] _at_ 0x3b;
void main (void){
P1=0xff;
WenDu.WenDu=0;
while (1){
GetTemp();
GetBcd();
// JbDelay();
LedOut();
}
}
復制代碼
20091012_[1].jpg (12 KB)

2009-10-21 23:21 上傳
下載次數:0

❸ 用51單片機和18b20做一個溫度計,求一個完整程序,要求用12864顯示。

這個是用數碼顯示的 你自己改改顯示就ok了 12864 有帶字型檔的那種,只要輸入ASCII碼就行了 程序有點亂,你注意換行就行

1.DS18B20基本知識
DS18B20數字溫度計是DALLAS公司生產的1-Wire,即單匯流排器件,具有線路簡單,體積小的特點。因此用它來組成一個測溫系統,具有線路簡單,在一根通信線,可以掛很多這樣的數字溫度計,十分方便。
1、DS18B20產品的特點
(1)、只要求一個埠即可實現通信。
(2)、在DS18B20中的每個器件上都有獨一無二的序列號。
(3)、實際應用中不需要外部任何元器件即可實現測溫。
(4)、測量溫度范圍在-55。C到+125。C之間。
(5)、數字溫度計的解析度用戶可以從9位到12位選擇。
(6)、內部有溫度上、下限告警設置。
2、DS18B20的引腳介紹
TO-92封裝的DS18B20的引腳排列見圖1,其引腳功能描述見表1。
(底視圖)圖1

表1 DS18B20詳細引腳功能描述
序號 名稱 引腳功能描述
1 GND 地信號
2 DQ 數據輸入/輸出引腳。開漏單匯流排介面引腳。當被用著在寄生電源下,也可以向器件提供電源。
3 VDD 可選擇的VDD引腳。當工作於寄生電源時,此引腳必須接地。
3. DS18B20的使用方法
由於DS18B20採用的是1-Wire匯流排協議方式,即在一根數據線實現數據的雙向傳輸,而對AT89S51單片機來說,硬體上並不支持單匯流排協議,因此,我們必須採用軟體的方法來模擬單匯流排的協議時序來完成對DS18B20晶元的訪問。
由於DS18B20是在一根I/O線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單匯流排器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單匯流排器件回送數據,在進行寫命令後,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。
DS18B20的復位時序

DS18B20的讀時序
對於DS18B20的讀時序分為讀0時序和讀1時序兩個過程。
對於DS18B20的讀時隙是從主機把單匯流排拉低之後,在15秒之內就得釋放單匯流排,以讓DS18B20把數據傳輸到單匯流排上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。

DS18B20的寫時序
對於DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。
對於DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單匯流排要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO匯流排上的「0」電平,當要寫1時序時,單匯流排被拉低之後,在15us之內就得釋放單匯流排。

4. 實驗任務
用一片DS18B20構成測溫系統,測量的溫度精度達到0.1度,測量的溫度的范圍在-20度到+100度之間,用8位數碼管顯示出來。
5. 電路原理圖

6. 系統板上硬體連線
(1). 把「單片機系統」區域中的P0.0-P0.7用8芯排線連接到「動態數碼顯示」區域中的ABCDEFGH端子上。
(2). 把「單片機系統」區域中的P2.0-P2.7用8芯排線連接到「動態數碼顯示」區域中的S1S2S3S4S5S6S7S8端子上。
(3). 把DS18B20晶元插入「四路單匯流排」區域中的任一個插座中,注意電源與地信號不要接反。
(4). 把「四路單匯流排」區域中的對應的DQ端子連接到「單片機系統」區域中的P3.7/RD端子上。
C語言源程序#include <AT89X52.H>#include <INTRINS.h> unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,25,28,31,34,38,41,44,48,50,53,56,59,63,66,69,72,75,78,81,84,88,91,94,97};unsigned char displaycount;unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};unsigned char timecount;unsigned char readdata[8]; sbit DQ=P3^7;bit sflag; bit resetpulse(void){unsigned char i; DQ=0;for(i=255;i>0;i--);DQ=1;for(i=60;i>0;i--);return(DQ);for(i=200;i>0;i--);} void writecommandtods18b20(unsigned char command){unsigned char i;unsigned char j; for(i=0;i<8;i++){if((command & 0x01)==0){DQ=0;for(j=35;j>0;j--);DQ=1;}else{DQ=0;for(j=2;j>0;j--);DQ=1;for(j=33;j>0;j--);}command=_cror_(command,1);}} unsigned char readdatafromds18b20(void){unsigned char i;unsigned char j;unsigned char temp; temp=0;for(i=0;i<8;i++){temp=_cror_(temp,1);DQ=0;_nop_();_nop_();DQ=1;for(j=10;j>0;j--);if(DQ==1){temp=temp | 0x80;}else{temp=temp | 0x00;}for(j=200;j>0;j--);}return(temp);} void main(void){TMOD=0x01;TH0=(65536-4000)/256;TL0=(65536-4000)%256;ET0=1;EA=1; while(resetpulse());writecommandtods18b20(0xcc);writecommandtods18b20(0x44);TR0=1;while(1){;}} void t0(void) interrupt 1 using 0{unsigned char x;unsigned int result; TH0=(65536-4000)/256;TL0=(65536-4000)%256;if(displaycount==2){P0=displaycode[displaybuf[displaycount]] | 0x80;}else{P0=displaycode[displaybuf[displaycount]];}P2=displaybit[displaycount];displaycount++;if(displaycount==8){displaycount=0;} timecount++;if(timecount==150){timecount=0;while(resetpulse());writecommandtods18b20(0xcc);writecommandtods18b20(0xbe);readdata[0]=readdatafromds18b20();readdata[1]=readdatafromds18b20();for(x=0;x<8;x++){displaybuf[x]=16;}sflag=0;if((readdata[1] & 0xf8)!=0x00){sflag=1;readdata[1]=~readdata[1];readdata[0]=~readdata[0];result=readdata[0]+1;readdata[0]=result;if(result>255){readdata[1]++;}}readdata[1]=readdata[1]<<4;readdata[1]=readdata[1] & 0x70;x=readdata[0];x=x>>4;x=x & 0x0f;readdata[1]=readdata[1] | x;x=2;result=readdata[1];while(result/10){displaybuf[x]=result%10;result=result/10;x++;}displaybuf[x]=result;if(sflag==1){displaybuf[x+1]=17;}x=readdata[0] & 0x0f;x=x<<1;displaybuf[0]=(dotcode[x])%10;displaybuf[1]=(dotcode[x])/10;while(resetpulse());writecommandtods18b20(0xcc);writecommandtods18b20(0x44);}}

❹ 求助單片機溫度控制系統畢業開題報告!!謝謝

原文:摘要本文介紹了以AT89S51單片機為核心的溫度控制系統的工作原理和設計方法。溫度信號由溫度晶元DS18B20採集,並以數字信號的方式傳送給單片機。文中介紹了該控制系統的硬體部分,包括:溫度檢測電路、溫度控制電路、PC機與單片機串口通訊電路和一些介面電路 。單片機通過對信號進行相應處理,從而實現溫度控制的目的。文中還著重介紹了軟體設計部分,在這里採用模塊化結構,主要模塊有:數碼管顯示程序、鍵盤掃描及按鍵處理程序、溫度信號處理程序、繼電器控製程序、單片機與PC機串口通訊程序。關鍵字:單片機 DS18B20溫度晶元 溫度控制 串口通訊一、 方案設計與論證 1、 測量部分方案一:採用熱敏電阻,可滿足40攝氏度至90攝氏度測量范圍,但熱敏電阻精度、重復性、可靠性較差,對於檢測1攝氏度的信號是不適用的。而且使用熱敏電阻,需要用到十分復雜的演算法,一定程度上增加了軟體實現的難度。 方案二:採用溫度晶元DS18B20測量溫度。該晶元的物理化學性很穩定,它能用做工業測溫元件,且此元件線形較好。在0—100攝氏度時,最大線形偏差小於1攝氏度。該晶元直接向單片機傳輸數字信號,便於單片機處理及控制。本製作的最大特點之一就是直接採用溫度晶元對溫度進行測量,使數據傳輸和處理簡單化。採用溫度晶元DS18B20測量溫度,體現了作品晶元化這個趨勢。部分功能電路的集成,使總體電路更簡潔,搭建電路和焊接電路時更快。而且,集成塊的使用,有效地避免外界的干擾,提高測量電路的精確度。所以晶元的使用將成為電路發展的一種趨勢。本方案應用這一溫度晶元,也是順應這一趨勢。2、 主控制部分方案一:此方案採用AT89C51八位單片機實現。單片機軟體編程的自由度大,可通過編程實現各種各樣的算術演算法和邏輯控制。但是,AT89C51單片機需要用模擬器來實現軟硬體的合成在線調試,較為繁瑣,很不簡便。而且AT89C51的地位已經漸漸的被AT89S51所取代。逐漸成為歷史。事實也證明了AT89S51在工業控制上有著廣泛的應用。方案二:此方案採用AT89S51八位單片機實現。它除了89C51所具有的優點外,還具有可在線編程,可在線模擬的功能,這讓調試變得方便。當與凌陽十六位單片機相比時,AT89S51八位單片機的價格便宜,再編程方便。而且AT89S51在工業控制中有廣泛的應用,編程技術及外圍功能電路的配合使用都很成熟。這對於在網上查找相關資料和在圖書館查找相關資料時非常方便的。

❺ 做了一個單片機NTC溫度檢測系統,NTC部分電路圖如下,為什麼焊接完成後電阻值總是兩個電阻的並聯值

這是正常現象,因為你測量的R1或R4兩端的電阻實際上是者並聯後的結果。
不能以獨立出來的測的結果來衡量,電路當中的多個器件根據不同情況有並有串。
必須以電路理論分析來計算結果。

❻ 求《單片機溫度測量系統設計》的相關資料!

要:本文介紹了一種基於MSP430 單片機的溫度測控裝置。該裝置可實現對溫度的測量,並能根據設定值對環境溫度進行調節,實現控溫的目的。控制演算法基於數字PID演算法。

0 引言
溫度是工業控制中主要的被控參數之一,特別是在冶金、化工、建材、食品、機械、石油等工業中,具有舉足重輕的作用。隨著電子技術和微型計算機的迅速發展,微機測量和控制技術得到了迅速的發展和廣泛的應用[1]。單片機具有處理能強、運行速度快、功耗低等優點,應用在溫度測量與控制方面,控制簡單方便,測量范圍廣,精度較高。
本文設計了一種基於MSP430單片機的溫度測量和控制裝置,能對環境溫度進行測量,並能根據溫度給定值給出調節量,控制執行機構,實現調節環境溫度的目的。

1 整體方案設計
單片機溫度控制系統是以MSP430單片機為控制核心。整個系統硬體部分包括溫度檢測系統、信號放大系統、A/D轉換、單片機、I/O設備、控制執行系統等。
單片機溫度控制系統控制框圖如下所示:

溫度感測器將溫度信息變換為模擬電壓信號後,將電壓信號放大到單片機可以處理的范圍內,經過低通濾波,濾掉干擾信號送入單片機。在單片機中對信號進行采樣,為進一步提高測量精度,采樣後對信號再進行數字濾波。單片機將檢測到的溫度信息與設定值進行比較,如果不相符,數字調節程序根據給定值與測得值的差值按PID控制演算法設計控制量,觸發程序根據控制量控制執行單元。如果檢測值高於設定值,則啟動製冷系統,降低環境溫度;如果檢測值低於設定值,則啟動加熱系統,提高環境溫度,達到控制溫度的目的。

2 溫度信號檢測
本系統中對檢測精度要求不是很高,室溫下即可,所以選用高精度熱敏電阻作為溫度感測器。熱敏電阻具有靈敏度較高、穩定性強、互換精度高的特點。可使放大器電路極為簡單, 又免去了互換補償的麻煩。
熱敏電阻具有負的電阻溫度特性,當溫度升高時,電阻值減小,它的阻值—溫度特性曲線是一條指數曲線,非線性度較大。而對於本設計,因為溫度要求不高,是在室溫環境下,熱敏電阻的阻值與環境溫度基本呈線性關系[2],這樣可以通過電阻分壓簡單地將溫度值轉化為電壓值。
給熱敏電阻通以恆定的電流,可得到電阻兩端的電壓,根據與熱敏電阻特性有關的溫度參數T0 以及特性系數k,可得下式
T=T0-kV(t) (1)
式中T為被測溫度。
根據上式,可以把電阻值隨溫度的變化關系轉化為電壓值隨溫度變化的關系,由於熱敏電阻的電信號一般都是毫伏級,必須經過放大,將熱敏電阻測量到的電信號轉化為0~3.6之間,才能在單片機中使用。
下圖為放大電路原理圖。穩壓管的穩壓值為1.5V。

由於感測器輸出微弱的模擬信號,當信號中存在環境干擾時,干擾信號也被同時放大,影響檢測的精度,需用濾波電路對先對模擬信號進行處理,以提高信號的抗干擾能力。本系統採用巴特沃斯二階有源低通濾波電路。選取該巴特沃斯二階有源低通濾波電路的截止頻率
fH=10 kHz 。

3 控制系統設計
3.0 軟體設計
單片機溫度控制器控制溫度范圍100℃到400℃,採用通斷控制,通過改變給定控制周期內加熱和製冷設備的導通和關斷時間,來提高和降低溫度,以達到調節溫度的目的。
軟體設計中選取控制周期TC 為200(T1×C) ,導通時間取Pn ×T1×C ,其中Pn 為輸出的控制量,Pn值介於0~200之間, T1 為定時器定時的時間,C為常數。由上兩式可看出,通過改變T1 定時時間或常數C,就可改變控制周期TC 的大小。溫度控制器控制的最高溫度為400℃,當給定溫度超過400℃時以400℃計算。
圖3為采樣中斷流程圖。

數模轉換部分使用單片機自帶的12位A/D轉換器,能同時實現數模轉換和控制,免去使用專用的轉換晶元,使系統處理速度更快,精度更高,使電路簡化。采樣周期為500 μs ,當採集完16個點的數據以後,設置標志「nADCFlag =1」,通知主程序採集完16個點的數據,主程序從全局緩沖區里讀出數據。
為進一步減小隨機信號對系統精度的影響,A/D轉換後,用平均值法對采樣值進行數字濾波。每16個采樣點取一次平均值。然後將計算到的平均值作為測量數據進行顯示。同時,按照PID演算法,對溫度采樣值和給定值之間的偏差進行控制,得到控制量。采樣全過程完成後就可屏蔽采樣中斷,同時啟動T1定時[3],進入控制過程。
溫度值和熱敏電阻的測量值在整個溫度采樣區間內基本呈線性變化,因此在程序中不需要對測量數據進行線性校正。MSP430的T1定時器中斷作為控制中斷,溫度采樣過程和控制輸出過程採用了互鎖結構,即在進行溫度采樣,溫度值處理和運算等過程時T1不定時,待采樣全過程進行完時再啟動T1定時並同時屏蔽采樣中斷。T1定時開始就進入控制過程,在整個控制過程中都不採樣,直到200(T1×C) 定時時間到,要開始新一輪的控制周期。在啟動采樣的同時屏蔽T1中斷。
圖4為T1定時中斷流程圖。

圖中,M代表定時器控制周期計數值,N則表示由調節器計算出的控制量。首先判斷控制周期TC是否己經結束。若控制周期TC已結束(即M=0),則屏蔽T1定時器中斷,進行新一輪溫度采樣;若控制周期TC還未結束〔即M≠0 〕,則開始判斷導通時間是否結束。若導通時間己結束(即N=0),則置輸出控制信號為低,並重新賦常數C值,啟動定時器定時,同時退出中斷服務程序;若導通時間還未結束(即N ≠0 ),則置輸出控制信號為高,控制執行其間繼續導通,重新賦常數C值,啟動定時器定時,同時退出中斷服務程序。

3.1 數字PID
本文控制演算法採用數字PID 控制,數字PID 演算法表達式如下所示:

其中,KP 為比例系數;KI=KPT/TI 為積分系數;T 為采樣周期,TI 為積分時間系數;KD=KPTD/T 為微分系數,TD 為微分時間系數。u(k) 為調節器第k次輸出, e(k) 為第k 次給定與反饋偏差。
對於PID 調節器,當偏差值輸出較大時,輸出值會很大,可能導致系統不穩定,所以在實際中,需要對調節器的輸出限幅[4],即當|u|>umax 時,令u=umax 或u=-umax ,或根據具體情況確定。

3.2 溫度調節
PI 控制器根據溫度給定值和測量值之間的偏差調節,給出調節量,再通過單片機輸出PWM 波,調節可控硅的觸發相位的相位角,以此來控制執行部件的關斷和開啟時間,達到使溫度升高或降低的目的。隨後整個系統再通過檢測前一階段控制後的溫度,進行近一步的控制修正,最終實現預期的溫度監控目的。

4 結論
本設計利用單片機低功耗、處理能力強的特點,使用單片機作為主控制器,對室內環境溫度進行監控。其結構簡單、可靠性較高,具有一定的實用價值和發展前景。

參考文獻
[1] 趙麗娟,邵欣.基於單片機的溫度監控系統的設計與實現.機械製造,2006,44(1)
[2] 張開生,郭國法.MCS-51 單片機溫度控制系統的設計.微計算機信息,2005,(7)
[3] 沈建華,楊艷琴,翟驍曙..MSP430 系列16 位超低功耗單片機原理與應用.清華大學出版社,2004,148-155
[4] 賴壽宏.微型計算機控制技術.北京:機械工業出版社,1994:90-95

閱讀全文

與測溫單片機系統相關的資料

熱點內容
本地加密卡哪個好 瀏覽:880
java獲取伺服器mac地址 瀏覽:322
伺服器sv是什麼意思 瀏覽:952
職高學編程有用嗎 瀏覽:993
小學數學教師哪個app好用 瀏覽:77
macprophp開發環境 瀏覽:19
麻省理工學院設計加密貨幣 瀏覽:214
新買安卓機如何檢測 瀏覽:221
安卓手機怎麼關閉簡訊隱私 瀏覽:790
python編程小論文 瀏覽:310
安卓手機怎麼運行jad軟體 瀏覽:685
什麼是代理伺服器訪問 瀏覽:870
合肥高鐵買票有什麼app嘛 瀏覽:653
壓縮機電容原理 瀏覽:758
單片機對微電子技術的影響 瀏覽:474
phptts 瀏覽:818
程序員有寫代碼嗎 瀏覽:677
系列數乘積演算法 瀏覽:796
代碼編程注意事項 瀏覽:388
材料力學劉鴻文第五版pdf 瀏覽:420