首要确认你的温控仪有上下限报警功用。假设主控OUT设定300℃上限设定ALM1设定320℃ 下限设定ALM2设定280℃上电主控长开触点闭合,开端加热升温。ALM2触点闭合报警,当温度超越280℃,触点铺开中止报警。当温度上升到300℃主控中止加热,当温度低于295℃又重复开端加热。当温度超越320℃ALM1触点闭合报警。
将外表连线接妥后,将开关拨至“下限设定”处,一起旋转相对应的下限设定旋钮,此刻数字显现的是所需的下限温度值,将开关拨至“上限设定”处,一起旋转相对应的上限设定旋钮,此刻数字显现的是所需的上限温度值;再将开关拨至“丈量”处,数字显现的是被测目标的实践温度值。当实践温度值低于下限设定值时,绿灯亮,上限继电器均为总低通,总高断;当实践值抵达或超越下限设定值而仍低于上限设定值时,绿灯红灯均平息、下限继电器总低断、总高通、上限继电器为总低通,总高断、当实践值抵达或超越上限设定值时,红灯亮,此处对上限继电器均为总低断、总高通。一般作温度操控时可把下限继电器输出辅佐加热操控、上限作加热操控,也可把下限继电器输出作温度操控,而把上限继电器输出作超温报警。后缀加“F”的外表,上限所需温度值有必要调整到高于下限所需温度高值。当实践值低于下限值时绿灯亮,继电器总低通,升温;当实践值高于下限值且低于上限值时仍为总低通,升温;当实践值高于上限值时,红灯亮,继电器总高通、总低断开,中止加温,只要当实践温度值低于下限值时,绿灯亮,总低通,循环往复。整个进程只要一个继电器输出,以便与负载方便地配接。
怎样设定温度操控器信号输出上下限?也便是测定值抵达上限停小于设定值启。
1、下限差错告警设置:按SET键挑选显现“SLP”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数。该参数表明告警点低于主控设定点的相差值。
2、上限差错告警设置:按SET键挑选显现“SHP”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数。该参数表明告警点高于主控设定点的相差值。
3、份额规模设置:按SET键挑选显现“P”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数。“P”值越大,温控器的主控继电器输出的灵敏度越低,“P”值越小,温控器的主控继电器输出的灵敏度越高。
4、积分时刻设置:按SET键挑选显现“I”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数。设定的积分时刻越短,积分作用越强。
5、微分时刻设置:按SET键挑选显现“D”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数。外表设定的微分时刻越长,则以微分作用进行的批改越强。
6、份额周期设置:按SET键挑选显现“T”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数。
7、自整定设置:按SET键挑选显现“Aτ”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数;设置为“00”表明自整定封闭,设置为“01”表明自整定发动。
8、锁参数设置:按SET键挑选显现“LOK”,绿色显现屏显现锁的状况,挑选移位、递加、递减键设置或批改该项参数;设置为“00”表明不锁,设置为“01”表明只锁主控以外的参数,设置为“02”表明一切参数全确定。参数被确定后,他人不能批改,需批改时要解锁,即设置为“00”。
9、主控温度上限设置:按SET键挑选显现“SOH”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数;该参数表明主控继电器动作温度不能高于此值,不然,主控设定温度无效
10、温度批改设置:按SET键挑选显现“SC”,绿色显现屏显现该项参数的数值,挑选移位、递加、递减键设置或批改该项参数;当温控器长时刻运转后发作丈量差错时,就可运用该项功用批改差错。如丈量值偏小2℃时,即可设置该项参数为02,若丈量值偏大2℃时,即可设置该项参数为-2。
人工智能温控器上面不但有模似量输出,固态继电器低压侧便是模似量输出,并且有惯例状况下有继电器输出便是,常开,常闭,公共端三个点,来操控接触器的线圈,很多加热操控回路,也有用接触器的,假如本来的主控输出是操控可控硅的想把它改成接触器的,关于用户来说不太可能,只能使用外表的上下限报警输出来操控接触器。
依据工作环境的温度改变,在开关内部发作物理形变,然后发作某些特别效应,温控器 温控 开关,发作导通或许断开动作的一系列主动操控元件,也叫温控开关、温度保护器、温度操控器,简称温控器。或是经过温度传感器器将温度信号传到温度操控器,温度操控器宣布开关指令,然后操控设备的运转以抵达抱负的温度及节能作用,其使用规模十分广泛,例如热水体系,烤箱,蔬菜大棚,孵化箱,陶瓷窑等。
附上可设定上下限温控程序源代码,仅供参考!
/*—————————————————————-
段P0,位P2。接线从低端开端,段a–h对应P0.0–P0.7.位1,2.。。对应 P2.0–P2.7 ——————————————————————*/ //单片机:89CS52 //晶振:12MH
#include 《AT89X52.h》 #include “DS18B20.h” #define schar signed char #define uint unsigned int
#define uchar unsigned char //宏界说
sbit SET=P3^1; //界说调整键 sbit DEC=P3^2; //界说削减键 sbit ADD=P3^3; //界说添加键
sbit jiawen=P3^6; //界说加温
bit shanshuo_st; //闪耀距离标志 bit beep_st; //加温距离标志
uchar x=0; //计数器
schar m,PD; //温度值大局变量 uchar n; //温度值大局变量 uchar set_st=0; //状况标志
schar shangxian=50; //上限报警温度,默认值为50 schar xiaxian=25; //下限报警温度,默认值为25 uchar
code LEDData[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90}; //共阳码 code LEDData1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //共阳码 /*****延时子程序*****/ void Delay(uint num) { while( –num ); }
/*****初始化定时器0*****/ void InitTImer() { TMOD=0x1; TH0=0x3c; TL0=0xb0; //50ms(晶振12M) }
/*****定时器0 中止服务程序*****/ void TImer0(void) interrupt 1 {
TH0=0x3c; TL0=0xb0; x++; }
/*****外部中止0 服务程序*****/ void int0(void) interrupt 0 { EX0=0; //关外部中止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 服务程序*****/ void int1(void) interrupt 2 { EX1=0; //关外部中止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; //核算得到十位数字 b=c/10-a*10; //核算得到个位数字 m=c/10; //核算得到整数位 n=c-a*100-b*10; //核算得到小数位 if(m《0){m=0;n=0;} //设置温度显现下限 if(m》99){m=99;n=9;} //设置温度显现上限 }
/*****显现开机初始化等候画面*****/ Disp_init() { P0 = 0xbf; //显现- P2 = 0xf7; Delay(200); P2 = 0xfb; Delay(200); P2 = 0xfd; Delay(200); P2 = 0xfe; Delay(200); P2 = 0xff; //封闭显现 }
/*****显现温度子程序*****/
Disp_Temperature() //显现温度 { P0 =0xc6; //显现C P2 = 0xfe; Delay(200); P0 =LEDData[n]; //显现个位 P2 = 0xfd; Delay(200); P0 =LEDData1[m%10]; //显现十位 P2 = 0xfb; Delay(200); P0 =LEDData[m/10]; //显现百位 P2 = 0xf7; Delay(200); P2 = 0xff; //封闭显现 }
/*****显现报警温度子程序*****/ 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 标明 P2 = 0xf7; Delay(200); P2 = 0xff; //封闭显现 }
/*****加降温子程序*****/ 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) //当降到下限才加温 { jiawen=0; } }
/*****主函数*****/ void main() { uint z; InitTImer(); //初始化定时器 EA=1; //大局中止开关
TR0=1; //发动定时器0
IT0=1; //定时器0脉冲触发办法,下降沿有用 IT1=1; //定时器1脉冲触发办法,下降沿有用 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; //封闭外部中止0 EX1=0; //封闭外部中止1 check_wendu(); Disp_Temperature(); Alarm(); //加温检测 }
else if(set_st==1) { jiawen=1; //封闭加温 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; //封闭加温
EX0=1; //敞开外部中止0
EX1=1; //敞开外部中止1 if(x》=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(xiaxian);} } } }
/*单片机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 /*****延时子程序*****/
void Delay_DS18B20(int num) { while(num–) }
/*****初始化DS18B20*****/ void Init_DS18B20(void) { uchar x=0; DQ = 1; //DQ 复位 Delay_DS18B20(8); //稍做延时8 DQ = 0; //单片机将DQ 拉低 Delay_DS18B20(32); //准确延时,大于480us 80 DQ = 1; //拉高总线 Delay_DS18B20(14); //14 x = DQ; //稍做延时后,假如x=0 则初始化成功,x=1 则初始化失利 Delay_DS18B20(20); //20 }
/*****读一个字节*****/ uchar ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i》0;i–) { DQ = 0; // 给脉冲信号 dat》》=1; DQ = 1; // 给脉冲信号
if(DQ) dat|=0x80; Delay_DS18B20(4); //4 }
return(dat); }
/*****写一个字节*****/ 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); //越过读序号列号的操作 WriteOneChar(0x44); //发动温度转化 Init_DS18B20(); WriteOneChar(0xCC); //越过读序号列号的操作 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*****/