首先確定你的溫控儀有上下限報(bào)警功能。假如主控OUT設(shè)定300℃上限設(shè)定ALM1設(shè)定320℃ 下限設(shè)定ALM2設(shè)定280℃上電主控長(zhǎng)開觸點(diǎn)閉合,開始加熱升溫。ALM2觸點(diǎn)閉合報(bào)警,當(dāng)溫度超過280℃,觸點(diǎn)放開停止報(bào)警。當(dāng)溫度上升到300℃主控停止加熱,當(dāng)溫度低于295℃又重復(fù)開始加熱。當(dāng)溫度超過320℃ALM1觸點(diǎn)閉合報(bào)警。 將儀表連線接妥后,將開關(guān)撥至“下限設(shè)定”處,同時(shí)旋轉(zhuǎn)相對(duì)應(yīng)的下限設(shè)定旋鈕,此時(shí)數(shù)字顯示的是所需的下限溫度值,將開關(guān)撥至“上限設(shè)定”處,同時(shí)旋轉(zhuǎn)相對(duì)應(yīng)的上限設(shè)定旋鈕,此時(shí)數(shù)字顯示的是所需的上限溫度值;再將開關(guān)撥至“測(cè)量”處,數(shù)字顯示的是被測(cè)對(duì)象的實(shí)際溫度值。當(dāng)實(shí)際溫度值低于下限設(shè)定值時(shí),綠燈亮,上限繼電器均為總低通,總高斷;當(dāng)實(shí)際值達(dá)到或超過下限設(shè)定值而仍低于上限設(shè)定值時(shí),綠燈紅燈均熄滅、下限繼電器總低斷、總高通、上限繼電器為總低通,總高斷、當(dāng)實(shí)際值達(dá)到或超過上限設(shè)定值時(shí),紅燈亮,此處對(duì)上限繼電器均為總低斷、總高通。一般作溫度控制時(shí)可把下限繼電器輸出輔助加熱控制、上限作加熱控制,也可把下限繼電器輸出作溫度控制,而把上限繼電器輸出作超溫報(bào)警。后綴加“F”的儀表,上限所需溫度值必須調(diào)整到高于下限所需溫度高值。當(dāng)實(shí)際值低于下限值時(shí)綠燈亮,繼電器總低通,升溫;當(dāng)實(shí)際值高于下限值且低于上限值時(shí)仍為總低通,升溫;當(dāng)實(shí)際值高于上限值時(shí),紅燈亮,繼電器總高通、總低斷開,停止加溫,只有當(dāng)實(shí)際溫度值低于下限值時(shí),綠燈亮,總低通,周而復(fù)始。整個(gè)過程只有一個(gè)繼電器輸出,以便與負(fù)載方便地配接。 怎樣設(shè)定溫度控制器信號(hào)輸出上下限?也就是測(cè)定值到達(dá)上限停小于設(shè)定值啟。 1、下限偏差告警設(shè)置:按SET鍵選擇顯示“SLP”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù)。該參數(shù)表示告警點(diǎn)低于主控設(shè)定點(diǎn)的相差值。 2、上限偏差告警設(shè)置:按SET鍵選擇顯示“SHP”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù)。該參數(shù)表示告警點(diǎn)高于主控設(shè)定點(diǎn)的相差值。 3、比例范圍設(shè)置:按SET鍵選擇顯示“P”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù)?!癙”值越大,溫控器的主控繼電器輸出的靈敏度越低,“P”值越小,溫控器的主控繼電器輸出的靈敏度越高。 4、積分時(shí)間設(shè)置:按SET鍵選擇顯示“I”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù)。設(shè)定的積分時(shí)間越短,積分作用越強(qiáng)。 5、微分時(shí)間設(shè)置:按SET鍵選擇顯示“D”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù)。儀表設(shè)定的微分時(shí)間越長(zhǎng),則以微分作用進(jìn)行的修正越強(qiáng)。 6、比例周期設(shè)置:按SET鍵選擇顯示“T”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù)。 7、自整定設(shè)置:按SET鍵選擇顯示“Aτ”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù);設(shè)置為“00”表示自整定關(guān)閉,設(shè)置為“01”表示自整定啟動(dòng)。 8、鎖參數(shù)設(shè)置:按SET鍵選擇顯示“LOK”,綠色顯示屏顯示鎖的狀態(tài),選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù);設(shè)置為“00”表示不鎖,設(shè)置為“01”表示只鎖主控以外的參數(shù),設(shè)置為“02”表示所有參數(shù)全鎖定。參數(shù)被鎖定后,別人不能修改,需修改時(shí)要解鎖,即設(shè)置為“00”。 9、主控溫度上限設(shè)置:按SET鍵選擇顯示“SOH”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù);該參數(shù)表示主控繼電器動(dòng)作溫度不能高于此值,否則,主控設(shè)定溫度無效 10、溫度修正設(shè)置:按SET鍵選擇顯示“SC”,綠色顯示屏顯示該項(xiàng)參數(shù)的數(shù)值,選擇移位、遞增、遞減鍵設(shè)置或修改該項(xiàng)參數(shù);當(dāng)溫控器長(zhǎng)時(shí)間運(yùn)行后產(chǎn)生測(cè)量偏差時(shí),就可使用該項(xiàng)功能修正誤差。如測(cè)量值偏小2℃時(shí),即可設(shè)置該項(xiàng)參數(shù)為02,若測(cè)量值偏大2℃時(shí),即可設(shè)置該項(xiàng)參數(shù)為-2。 人工智能溫控器上面不光有模似量輸出,固態(tài)繼電器低壓側(cè)就是模似量輸出,而且有常規(guī)狀態(tài)下有繼電器輸出就是,常開,常閉,公共端三個(gè)點(diǎn),來控制接觸器的線圈,好多加熱控制回路,也有用接觸器的,如果原來的主控輸出是控制可控硅的想把它改成接觸器的,對(duì)于用戶來說不太可能,只能利用儀表的上下限報(bào)警輸出來控制接觸器。 根據(jù)工作環(huán)境的溫度變化,在開關(guān)內(nèi)部發(fā)生物理形變,從而產(chǎn)生某些特殊效應(yīng),溫控器 溫控 開關(guān),產(chǎn)生導(dǎo)通或者斷開動(dòng)作的一系列自動(dòng)控制元件,也叫溫控開關(guān)、溫度保護(hù)器、溫度控制器,簡(jiǎn)稱溫控器。或是通過溫度傳感器器將溫度信號(hào)傳到溫度控制器,溫度控制器發(fā)出開關(guān)命令,從而控制設(shè)備的運(yùn)行以達(dá)到理想的溫度及節(jié)能效果,其應(yīng)用范圍非常廣泛,例如熱水系統(tǒng),烤箱,蔬菜大棚,孵化箱,陶瓷窯等。 附上可設(shè)定上下限溫控程序源代碼,僅供參考! /*---------------------------------------------------------------- 段P0,位P2。接線從低端開始,段a--h對(duì)應(yīng)P0.0--P0.7.位1,2.。。對(duì)應(yīng) P2.0--P2.7 ------------------------------------------------------------------*/ //單片機(jī):89CS52 //晶振:12MH #include 《AT89X52.h》 #include “DS18B20.h” #define schar signed char #define uint unsigned int #define uchar unsigned char //宏定義 sbit SET=P3^1; //定義調(diào)整鍵 sbit DEC=P3^2; //定義減少鍵 sbit ADD=P3^3; //定義增加鍵 sbit jiawen=P3^6; //定義加溫 bit shanshuo_st; //閃爍間隔標(biāo)志 bit beep_st; //加溫間隔標(biāo)志 uchar x=0; //計(jì)數(shù)器 schar m,PD; //溫度值全局變量 uchar n; //溫度值全局變量 uchar set_st=0; //狀態(tài)標(biāo)志 schar shangxian=50; //上限報(bào)警溫度,默認(rèn)值為50 schar xiaxian=25; //下限報(bào)警溫度,默認(rèn)值為25 uchar code LEDData[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90}; //共陽(yáng)碼 code LEDData1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //共陽(yáng)碼 /*****延時(shí)子程序*****/ void Delay(uint num) { while( --num ); } /*****初始化定時(shí)器0*****/ void InitTimer() { TMOD=0x1; TH0=0x3c; TL0=0xb0; //50ms(晶振12M) } /*****定時(shí)器0 中斷服務(wù)程序*****/ void timer0(void) interrupt 1 { TH0=0x3c; TL0=0xb0; x++; } /*****外部中斷0 服務(wù)程序*****/ void int0(void) interrupt 0 { EX0=0; //關(guān)外部中斷0 if(DEC==0&&set_st==1) { if(DEC==0) Delay(80); //500 if(DEC==0) { shangxian--; do { while(DEC==0); Delay(80); // } while(DEC==0); if(shangxian《xiaxian) shangxian=xiaxian; } } else if(DEC==0&&set_st==2) { if(DEC==0) Delay(80); // if(DEC==0) { xiaxian--; do { while(DEC==0); Delay(80); // } while(DEC==0); if(xiaxian《0) xiaxian=0; } } } /*****外部中斷1 服務(wù)程序*****/ void int1(void) interrupt 2 { EX1=0; //關(guān)外部中斷1 if(ADD==0&&set_st==1) { if(ADD==0) Delay(80); //500 if(ADD==0) { shangxian++; do { while(ADD==0); Delay(80); //500 } while(ADD==0); if(shangxian》=99) shangxian=99; } } else if(ADD==0&&set_st==2) { if(ADD==0) Delay(80); // if(ADD==0) { xiaxian++; do { while(ADD==0); Delay(80); //500 } while(ADD==0); if(xiaxian》shangxian) xiaxian=shangxian; } } } /*****讀取溫度*****/ void check_wendu() { uint a,b,c; c=ReadTemperature()-5; //獲取溫度值并減去DS18B20 的溫漂誤差 a=c/100; //計(jì)算得到十位數(shù)字 b=c/10-a*10; //計(jì)算得到個(gè)位數(shù)字 m=c/10; //計(jì)算得到整數(shù)位 n=c-a*100-b*10; //計(jì)算得到小數(shù)位 if(m《0){m=0;n=0;} //設(shè)置溫度顯示下限 if(m》99){m=99;n=9;} //設(shè)置溫度顯示上限 } /*****顯示開機(jī)初始化等待畫面*****/ Disp_init() { P0 = 0xbf; //顯示- P2 = 0xf7; Delay(200); P2 = 0xfb; Delay(200); P2 = 0xfd; Delay(200); P2 = 0xfe; Delay(200); P2 = 0xff; //關(guān)閉顯示 } /*****顯示溫度子程序*****/ Disp_Temperature() //顯示溫度 { P0 =0xc6; //顯示C P2 = 0xfe; Delay(200); P0 =LEDData[n]; //顯示個(gè)位 P2 = 0xfd; Delay(200); P0 =LEDData1[m%10]; //顯示十位 P2 = 0xfb; Delay(200); P0 =LEDData[m/10]; //顯示百位 P2 = 0xf7; Delay(200); P2 = 0xff; //關(guān)閉顯示 } /*****顯示報(bào)警溫度子程序*****/ Disp_alarm(uchar baojing) { P0 =0xc6; //顯示C P2 = 0xfe; Delay(200); P0 =LEDData[baojing%10]; //顯示十位 P2 = 0xfd; Delay(200); P0 =LEDData[baojing/10]; //顯示百位 P2 = 0xfb; Delay(200); if(set_st==1)P0 =0x89; else if(set_st==2)P0 =0xc7; //上限H、下限L 標(biāo)示 P2 = 0xf7; Delay(200); P2 = 0xff; //關(guān)閉顯示 } /*****加降溫子程序*****/ void Alarm() { if(x》=0) { beep_st=~beep_st; x=0; } // if((m》=shangxian&&beep_st==1)||(m《xiaxian&&beep_st==1)) // jiawen=0; // else //上下限兩頭加溫,中間不加溫 // jiawen=1; if(m》=shangxian) //大于上限停止 { jiawen=1; } if(m《=xiaxian) //當(dāng)降到下限才加溫 { jiawen=0; } } /*****主函數(shù)*****/ void main() { uint z; InitTimer(); //初始化定時(shí)器 EA=1; //全局中斷開關(guān) TR0=1; //啟動(dòng)定時(shí)器0 IT0=1; //定時(shí)器0脈沖觸發(fā)方式,下降沿有效 IT1=1; //定時(shí)器1脈沖觸發(fā)方式,下降沿有效 check_wendu(); check_wendu(); for(z=0;z《300;z++) { Disp_init(); } while(1) { if(SET==0) { Delay(600); //2000 do{}while(SET==0); set_st++;x=0;shanshuo_st=1; if(set_st》2)set_st=0; } if(set_st==0) { EX0=0; //關(guān)閉外部中斷0 EX1=0; //關(guān)閉外部中斷1 check_wendu(); Disp_Temperature(); Alarm(); //加溫檢測(cè) } else if(set_st==1) { jiawen=1; //關(guān)閉加溫 EX0=1; //開啟外部中斷0 EX1=1; //開啟外部中斷1 if(x》=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(shangxian);} } else if(set_st==2) { jiawen=1; //關(guān)閉加溫 EX0=1; //開啟外部中斷0 EX1=1; //開啟外部中斷1 if(x》=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(xiaxian);} } } } /*單片機(jī)89CS52*/ #ifndef DS18B20_H #define DS18B20_H #include 《AT89X52.h》 #define uint unsigned int #define uchar unsigned char //宏定義 sbit DQ=P3^7; //定義DS18B20 總線I/O /*****延時(shí)子程序*****/ void Delay_DS18B20(int num) { while(num--) } /*****初始化DS18B20*****/ void Init_DS18B20(void) { uchar x=0; DQ = 1; //DQ 復(fù)位 Delay_DS18B20(8); //稍做延時(shí)8 DQ = 0; //單片機(jī)將DQ 拉低 Delay_DS18B20(32); //精確延時(shí),大于480us 80 DQ = 1; //拉高總線 Delay_DS18B20(14); //14 x = DQ; //稍做延時(shí)后,如果x=0 則初始化成功,x=1 則初始化失敗 Delay_DS18B20(20); //20 } /*****讀一個(gè)字節(jié)*****/ uchar ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i》0;i--) { DQ = 0; // 給脈沖信號(hào) dat》》=1; DQ = 1; // 給脈沖信號(hào) if(DQ) dat|=0x80; Delay_DS18B20(4); //4 } return(dat); } /*****寫一個(gè)字節(jié)*****/ void WriteOneChar(uchar dat) { uchar i=0; for (i=8; i》0; i--) { DQ = 0; DQ = dat&0x01; Delay_DS18B20(5); //5 DQ = 1; dat》》=1; } } /*****讀取溫度*****/ uint ReadTemperature(void) { uchar a=0; uchar b=0; uint t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0x44); //啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); //讀取溫度寄存器 a=ReadOneChar(); //讀低8 位 b=ReadOneChar(); //讀高8 位 t=b; t《《=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; //放大10 倍輸出并四舍五入 return(t); } #endif /*****END*****/ |
|