收藏本页 广东11选5走势图_广东11选5开奖结果知识学习网站
当前位置:广东11选5走势图 > 电气自动化 > 一定牛

温控器上下限设置方法及程序源代码

时间:2017-11-06 13:23 来源:广东11选5走势图

温控器上下限设置方法及程序源代码
仪表连线接妥后,将开关拨至“下限设定”处,同时旋转相对应的下限设定旋钮,此时数字显示的是所需的下限温度值,将开关拨至“上限设定”处,同时旋转相对应的上限设定旋钮,此时数字显示的是所需的上限温度值;再将开关拨至“测量”处,数字显示的是被测对象的实际温度值。当实际温度值低于下限设定值时,绿灯亮,上限继电器均为总低通,总高断;当实际值达到或超过下限设定值而仍低于上限设定值时,绿灯红灯均熄灭、下限继电器总低断、总高通、上限继电器为总低通,总高断、当实际值达到或超过上限设定值时,红灯亮,此处对上限继电器均为总低断、总高通。一般作温度控制时可把下限继电器输出辅助加热控制、上限作加热控制,也可把下限继电器输出作温度控制,而把上限继电器输出作超温报警。后缀加“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--; www.dgzj.com

  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*****/