用PIC单片机制作实用热水器监视器

🏠 首页 《无线电》杂志 2005年 🔗 第3期 🔗 第42页 分类:电脑·单片机·通信 🔗 林元新 🔗

太阳能热水器通过真空集热管将太阳能转化为水的热能,但是利用太阳能来加热冷水,往往会受天气变化的影响。如果使用者能及时了解储水箱内的水量和水温状态,在晴好天气及时补充冷水,以充分利用每天的日光,避免出现加水后没有热水的局面,也可防止缺水干烧而损害热水器。

笔者设计的系统利用自制的水位传感器和通用的温度传感器,将水位和水温转化为电信号,经过单片机PIC16F84A的内部处理,可以通过数码管和蜂鸣器将水量和水温及时告知用户。

电路构成

整个系统分成两部分见附图。

图1
图1 🔍原图 (850×549)

一部分安装在室外储水箱上,由水位传感器SL7(附图中仅画出RB0~RB7中的一条回路)、水温传感器Rt和控制芯片U2(PIC16F84A)等电路组成。这部分电路实现水位、水温数据的采集,并通过控制芯片的RA0、RA1端口发送数据。

另一部分安装在室内,主要由电源变压器TF1,三端稳压器78L05,数码管DS1、DS2,报警蜂鸣器Speaker及其驱动U3、U4、U5等电路组成。它提供系统的5V工作电压,接收并显示室外MCU传来的数据和报警信息。

两部分电路通过串行通信的方式相联系,采用四芯线相连。

电路原理

单片机PIC16F84A是整个系统的核心,下面按电路组成说明其工作原理。


1.水位传感器电路

水位传感器SL0~SL7按规律布置在储水箱内部,将水量分成8级。如图,若SL7浸没在水中,利用水的弱导电性,使三极管VT的基极充分导通处于饱和状态。与集电极相连的单片机PIC16F84A的RB7引脚被置成低电位。这样SL0~SL7与单片机RB0~RB7引脚建立了对应关系,程序运行时定期按一定优先级别读取端口值,当读到第一个逻辑“0”,即按顺序第一个SLi(i=0~7)被检测到时,跳出循环,这样内部循环计数值i就对应该水位值。此数值经内部处理后,调用串口发送子程序,将此数值发送到显示部件,并延时以保持显示约2秒钟。


2.水温传感器电路

该电路利用普通I/O端口,进行模拟量到数字量的转化。其原理是测量电容器的充电时间,间接测量温度传感器的阻值。电容器C1与热敏电阻Rt、单片机RA4端口构成充放电回路。温度传感器的阻值大小直接影响充电时间,在充电期间,单片机内部执行计数指令,直到电容两端达到逻辑“1”电平。这样计数值i与温度值成对应关系。单片机在获取此数值并经处理后,同样调用串口发送子程序,将数值发送到显示部件。这样水位值和水温值就间隔一定时间循环显示出来。


3.串行传输及数码显示、蜂鸣器报警电路

利用两只普通I/O(RA0和RA1)端口,通过软件模拟常用的UART的同步移位寄存器输入/输出方式,将特定的二进制数发送出去。其中两只74LS164驱动数码管循环显示水温、水位值,其显示范围为0~99。另一只74LS164驱动蜂鸣器和状态指示灯,指示灯亮为当前显示温度值,灭时显示为水位值。蜂鸣器在每10次循环中“嘀…嘀”报警一次。提示用户系统在工作,不要忘记关闭系统。在水满时(SL7浸没在水中),显示水位值的同时蜂鸣器长鸣报警3秒,告知水已加满,要关闭上水的阀门。

该系统并没有使用中断、串口、模数转换等专用电路,仅利用普通的输入/输出端口,巧妙地实现了A/D转换过程,模拟串行通信并通过移位寄存器进行串、并转换,实现静态显示。这相对动态扫描方式有许多好处,如占用较少的CPU时间以及端口和中断等资源。这样单片机可以处理其他事务。


本制作的源程序可到本刊网站www.radio.com.cn上下载。

文/林元新