DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1997|回复: 1
打印 上一主题 下一主题

[待整理] 基于模糊控制的水温自动调节器

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-5 09:50:50 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
基于模糊控制的水温自动调节器

摘要:温度传感器及有关电路将温度转化为电脉冲的脉宽,单片机将测得的脉冲宽度的值转化为与之对应的温度值。与设定的温度相比较后,以温度偏差及其变化量为输入、加热量为输出,通过模糊控制算法,就可达到水温自动调节的目的。对任意温度对应的脉宽还可进行自动测量,并加以显示。    关键词:AT89C2051 单片机 模糊控制 温度 电热水器
模糊控制比传统的PID等控制方法,在强时变、大时滞、非线性系统中的控制效果有着明显的优势。将模糊控制技术应
用于家电产品在国外已是很普遍的现象。 单片机是家用电器常用的控制器件,把二者结合起来,可使控制器的性能指标达到最优的目的。基于模糊控制技术的单片机控制的电热水器,是对传统的电热水器开关控制的改造,具有达到设定温度的时间短、稳态温度波动小、反应灵敏、抗干扰能力强、节省电能等优点。
1 硬件电路总体设计
电热水器水温自动调节器以AT89C2051单片机为核心,由多谐振荡器电路、温度设定电路、单片机。设定温度显示电路、控制信号隔离输出电路等几部分组成,结构框图如图1所示。
①多谐振荡电路。由G1、G2、G3、G4、Rt、Rs、C组成,具体电路如图2。其中Rt是具有负温度系数的热敏电阻(0~100℃时,阻值在3~1kΩ之间变化),是本电路中的温度传感器,用环氧树胶涂于其外表后置于热水中。Rs是限流电阻,限值很小,只有100Ω。非门采用TTL门74LS04电路,振荡周期T≈2.2RtC,脉宽为1.1RtC。可见,脉宽与Rt有一一对应关系,因此,温度与脉宽也就有一一对应关系。
②AT89C2051单片机。本控制器的核心,模糊控制就是用它控制软件来实现的。
③温度设定电路。通过一个按键产生脉冲从INT1输入单片机来调节水温的设定值。
④设定温度显示电路。单片机将设定的温度值通过动态扫描的方法输出,数码管上可直接显示设定温度。在自动测定各温度对应的T0的计数值时,还可用来显示TL0的值。
⑤控制信号隔离输出电路。通过光耦将加热强电电路与单片机隔离,防止其干扰单片机的工作。单片机的输出控制信号控制两电热丝的断通,从而调节水温。

2 工作原理

INT1先用于各温度值对应的脉宽计数器值的测量显示。中断1的中断服务程序先固化自动测量、显示的中断服务程序如图3所示。主程序不变,主程序如图4所示。从INT1输入的设定温度用的脉冲将引起中断,中断服务程序可对与一定水温对应的电脉冲宽度的计数值(TL0)进行测量并显示,记下其数值后便可制定“温度表”(与一定温度对应的TL0值并存放于程序存储器中的表),将“温度表”固化于程序存储器中。然后,INT1再用于温度的设定,将中断1的服务程序换为预温温度的程序,如图5所示。让定时器T1定时中断,配合软件计数器,每隔5s测量1次温度的当前值。将测得的脉宽转化为温度值是这样实现的:先让脉冲从INT0进入单片机,T0在INT0为高电平时开始定时,变为低电平时停止,于是在TL0中得到脉宽对应的定时计数值, 查找与“温度表”中与计数值一一对应关系的温度。将用的脉冲将引起中断,中断服务程序可对与一定水温对应的电脉冲宽度计数值(TL0)进行测量并显示,记下其数值后便可制定“温度”(与一定温度对应的TL0值并存放于程序存储器中的表),将“温度表”固化于程序存储器中。然后,INT1再用于温度的设定,将中断1的服务程序换为预置温度的程序,如图5所示。让定时器T1定时断,配合软件计数器,第隔5s测量1次温度的当前值。将测得的脉宽转化为温度值是这样实现的:先让脉冲从INT0进入单片,T0在INT0为高电 平时开始定时,变为低电平时停止,于是在TL0中得到脉宽对应的定时计数值,查找与“温度表”中与计数值一一对的温度。将温度的测量值及前次测得的值分别存于一个存储单元,通过模糊控制程序以决定两电热丝的断情况。初始化程序如下:
MAIN:MOV TMOD,#1AH;T1工作于方式1,定时100ms;(配合软件计数器定时5s)
;T0工作于方式2,使用门控位,定时
MOV TM0,#20 ;TM0为设定温度存储单元,设定初始温度为20℃
MOV TH0,#0
MOV TL0,#0
MOV TH1,#3CH ;T1置产生100ms定时的初值(tosc=6MHz)。
MOV TL1,#0B0H
MOV TMER,#50 ;TMER为软件计数器单元;50×100ms=5s
SETB TR1 ;启动定时器T1
SETB EA ;开CPU中断
SETB EX1 ;开外部中断1
SETB IT1 ;设定为边沿触发。
SETB PX1 ;设定温度的中断优先级为高级中断。
SETB ET1 ;开T1中断
SETB P3.7 ;不加热
SETB P1.7
……

3 模糊控制的原理

模糊控制器的输入为测得温度与设定温度的偏差E(E=t0-t;t0为设定的水温,t为测得的水温。)以及偏差的变化量ΔEΔE=t本-t前,其中t前为前次测得的温度,t本为本次测得的温度),输出为电热丝加热量U。将E分为四个模糊子集B(大)、M(中)、S(小)、N(负),对应温度的偏差为:t0-t>TM1℃、TM2℃<t0-t<TM1℃、0℃<t0-t<TM2℃、t0-t<0℃(TM1>TM2>0)。ΔE分为三个模糊子集P(正)、Z(零)、N(负),对应的偏差变化量为:t本-t前>A0、-A0<t本-t前<A0、t本-t前<-A0(A0>0);电热丝加热量分为四个模糊子集B(大)、M(中)、S(小)、Z(零),对应于二极电热丝的四种状态的组合:电热丝1电热丝2都加热、电热丝1加热、电热丝2加热、电热丝1电热丝2都不加热(其中电热丝1的功率大于电热丝2的功率)。模糊控制规则如表1所列。

表1
                ΔE
     E
PZN
BBBB
MMMS
SSSZ
NZZZ
表2
             E+ΔE
     E
ΔE
1

0

-1
6765
3432
1210
-10-1-2
4 模糊控制程序
由单片机对温度进行测量,将本次测得的温度与设定的温度值相减得到温度的偏差E,并存储到存储单元TMS;将本次测得的温度减前次测量的温度,得到温度的偏差变化量ΔE并存入存储单元TMCB;根据温度的偏差及偏差的变化量由模糊控制表决定电热丝的断闭。如果将E的四个模糊子集N、S、M、B分别用数字-1、1、3、6表示,ΔE的四个模糊子集N、Z、P分别用数字-1、0、1表示,则根据模糊控制规则表1,可得到如表2所示的E+ΔE。将表2与表1对照可以看出:当E+ΔE≤0时,加热量为Z;当1≤E+ΔE<3时,加热量为S;当3≤E+ΔE<5时,加热量为M;当E+ΔE≥5时,加热量为B。故可编制所求的模糊控制程序。
该温度控制器已应用于笔者家中自制的电热水器中,经几个月的使用证明非常实用,且性能稳定。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-17 06:08 , 耗时 0.101140 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表