一.硬件方案
智能热水器主要实现的功能是可以对水位进行设置并加水,先设置好需要加水的水位段数,单片机会根据这个数判断是否需要加水,同时还可以测量并显示水温、设置水温范围,若水温超过或低于所设置的水温范围,则会报警。
其主要设计功能如下:
- 采用LCD1602液晶显示、DS18B20防水型温度传感器测温,液晶显示当前的温度、温度上下限值和预约时间(单片机内部定时器)。
- 带有红外遥控和手动按键双输入设置参数,更加方便快捷实用。可以显示和设置预约时间(min),可以随意设置预约多少分钟后开启热水器系统控制,这样更加智能和节能。按键可以设置水温的控制范围,五个按键功能:设置、加、减、确定、单独的是复位按键
- 当温度低于下限的时候继电器吸合,待温度高于上限的时候继电器断开,继电器可以接负载;(默认没有负载,可以接加热管。)
- 采用两个水位传感器和LM393电压比较器检测上、下水位功能,水少不加热并启动水位控制继电器(上)吸合模拟加水,当水加至水位上限时,继电器断开停止加水 。
- 热水器工作加热和加水时有相应的指示灯(红灯代表缺水,黄灯代表加水,绿灯代表加热),整个系统有蜂鸣器提示音,实现声光提示;
二.设计电路
整体电路主要由51单片机最小系统,LCD1602显示屏电路,按键电路,加热继电器电路,DS18B20温度传感器,蜂鸣器报警电路,状态指示灯,遥控电路等组成;
原理图如图:
Protues仿真图如下:
三.软件设计
主程序源码
void main()
{
Init1602();
EA=1;//打开中断总开关
IT1=1;//下降沿有效
EX1=1;//外部中断1开
ET1=1;//打开允许开关
TMOD=0x01;//设置工作方式
TL1=0x3c;
TH1=0xb0;//赋初值
TH0=0;//T0赋初值
TL0=0;
TR0=0;//t0开始计时
check_wendu();
delay(1000);
bjd=99;
bjx=0; //这两个变量的作用就是,防止温度大范围跳动造成加热设备误动作
while(1)
{
check_wendu();
if(Mode==0)
{
Display_1602(c,ds,sx,xx);
if((xia==1)&&(shang==1)) //低于下限
{
que=1;
shui=0;
jdq=1;
}
else
{
que=0;
}
if((shang==0)&&(xia==0)) //高于上限
{
shui=1;
if(flag_BJ==0)
flag_BJ=1;
}
if((shang==0)&&(xia==1)) //错误
{
shui=1;
jdq=1;
Feng=0;
que=1;
}
if(flag==0)
{
if((w<bjd)&&(w>bjx))
{
if(w>=sx)
{
jdq=1;
if(flag_BJ==0)
flag_BJ=1;
}
else if((w<xx)&&(que==0))
{
jdq=0;
if(flag_BJ==0)
flag_BJ=1;
}
else
{
flag_BJ=0;
flag_off=1;
}
bjd=w+5;
bjx=w-5;
}
}
}
Key();
Alam();
}
}
资料链接:https://pan.baidu.com/s/1eNvA3yXGEE65jYjc5VElGQ?pwd=rend
提取码:rend