摘要:设计了一种基于PIC16C71单片机的数字水温配制阀。该配制阀采用NTC热敏电阻作温度传感器,与固定电阻组成简单分压电路作为水温测量电路,利用PIC16C71单片机内置的8位A/D转换器把热敏电阻上的模拟电压转换为数字量,PIC16C71单片机控制直流电机驱动混水阀调节冷热水的混合比例实现水温调节。给出了控制电路图,对水温测量电路的参数选择和测温精度作了详细讨论。实验和分析表明,选用阻值较大的NTC热敏电阻和分压电阻可较好地解决热敏电阻因功耗较大造成的热击穿问题。
关键词:PIC16C71;NTC热敏电阻;水温;控制阀
随着社会的发展,各种热水器及管道热水进入千家万户,人们在不同场合对水温的要求是多种多样的,经常需要把热水和冷水混合到需要的温度。可以控制各种热水器及管道热水的出水温度,能快速准确地调制出所需温度的热水,可用于淋浴、洗漱及其他需要恒温热水场所的水温智能配制阀,是一个有应用价值的技术。本设计正是顺应这种需要,以PIC16C71芯片为核心,控制机械部分自动调整冷水和热水的混合比例,实现出水水温的自动控制,解决了由于水压波动、水温变化或出水量改变引起的水温忽冷忽烫的难题,比手动调节用水温度方式有明显的节水效果。
1 系统结构和工作原理
热水和自来水作为控制阀的2个输入,利用混水阀控制冷、热水输入量和比例,混合后的水经出水口流出,供用户使用。安装在出水口的温度传感器感测出水口处的温度并通过测温电路传送给单片机。该调温水阀的组成如图1所示。当出水开关打开时,单片机把温度传感器测量的出水口处的温度与设定温度进行比较,需要时由PIC16C71来控制直流电机带动混水阀,来调整进入水阀的冷、热水的比例,从而控制出水的温度,当电机转到头时,单片机得到相应的信号,终止电机继续同向转动。通过温升或温降按键在25~50℃范围内对用水温度进行设置,LED数码管显示设定的用水温度值。若设定温度与传感器检测的温度不符,根据二者温差的大小,单片机输出不同宽度的脉冲电压信号控制直流电动机按不同的速度转动,通过传动机构驱动冷热水混合阀,改变冷水和热水的流入比例。当外界条件再次发生变化时,如水压减小或增大等,出水管水温与设定温度出现温差,此时单片机再一次控制电机转动,对水温进行自动调节,使出水口水温自动与设定用水温度保持一致。
2 控制面板和电路
设计控制面板按钮应最少化,并且使用方便,功能合理,控制操作简便,仪表能显示出设置的温度。控制面板如图2所示,面板左侧的2位LED数码管用来显示预置的用水温度。面板右上方的温升按键、温降按键分别用来增加和减少预置出来水温的温度。面板右下方为手动开关,决定水阀的开关和出水量大小,当其置于“关”时,为关闭出水非工作状态。
图3是控制阀的电路图。系统使用低压直流电源,用PIC16C71单片机做控制,通过程序控制实现各项功能。
2.1 测温原理和参数选择
在图3中,热敏电阻RT为测温元件,用于测量出水口处的水温。一个固定电阻R16与热敏RT相串联组成分压电路,RT上的压降接到引脚通过电阻R17接AN0输入到PIC16C71的内置的8位A/D转换器,把模拟电压信号转换成数字信号,由程序读取实现测温。测温的关键是要选择合适的测温元件和合理的电路参数。这里选用的是一种负温度系数热敏电阻器(NTC),它采用玻壳封装、体积小、价格低,安装方便。NTC测温热敏电阻的主要优点是电阻温度系数大、灵敏度高、响应速度快,能进行精密温度测量,主要缺点是热电特性非线性现象严重。如使用C408503(25℃时,阻值50 kΩ,B值4 050 K,玻璃封装)NTC热敏电阻,在0~99℃范围内,电阻的灵敏度约为8 500~100 Ω/℃,非线性严重,使用时一般要进行线性补偿。这里通过计算,选择合理的测温电路参数,在有效的测温范围内,没有进行线性补偿,仅使用温度查表的方式就有效地解决了NTC测温电阻的非线性问题。下面讨论测温精度和电路参数的选择问题。
电阻R16与热敏电阻RT串联组成分压电路,对电源电压5 V分压,RT上的压降Vi=5 V·RT/(RT+R16)随温度变化而变化。该电压通过A/D的输入引脚AN0送入PIC16C71内部的A/D转换器,转换为数字信号,由程序读取使用。在RT上并接一个0.1 μF的电容C3实现滤波,用于消除干扰和噪声。在试用中发现,当选用的NTC热敏电阻(如标称值为10 kΩ)和分压电阻(如5.1 kΩ)的阻值较小时,热敏电阻在工作一段时间后易被击穿,而在选用阻值较大的NTC热敏电阻和分压电阻后,问题就较好地解决了。分析原因,应该是NTC热敏电阻中的工作电流和功耗较大造成的热击穿。因此应尽量选用阻值较大的NTC热敏电阻和分压电阻,尽量减小流过热敏电阻的电流。另一方面,考虑到PIC单片机的A/D输入信号引脚的输入漏电流最大为±500 nA,要保证A/D转换结果的正确,就要求损耗在信号源内阻上的电压不能超过10 mV(A/D基准电压为5 V时的1/2个LSB),这要求信号源内阻最大不要超过20 kΩ。当选用标称为50 kΩ,B25/50为4 050 K的NTC热敏电阻,其在温区(0~99℃)的阻值变化在168.3~3.217 kΩ之间。当选择固定分压电阻为20 kΩ时,A/D输入信号源的等效内阻是热敏电阻和分压电阻并联后的阻值,阻
值范围是17.9~2.77 kΩ,这可以满足A/D转换时,对信号源内阻最大不能超过20 kΩ的要求,对应的输入给A/D的信号电压Vi的范围在4.469~0.693 V之间,覆盖了有效的A/D输入电压值区间(0~5 V)的大部分,经8位A/D转换后对应的数字量在0xE5~0x23之间。在0~97℃温区,当温度变化1℃时,对应输入电压变化量在55.5~19.7 mV之间。均大于1 LSB对应的模拟电压值19.6 mV,因此8位A/D转换后测温的精度达到±1℃是有保证的;在97~99℃间。当温度变化1℃时对应的模拟输入电压变化量在18.8~18.5 mV之间,8位A/D转换测温精度达不到±l℃,但正常测温一般不会高于95℃。并且出水口温度控制在25~50℃也比较低。
以上分析说明不用加入输入信号的调理电路,也能满足测温精度±1℃的要求。A/D模拟输入引脚AN0串接R17用于限流保护,防止过压输入造成芯片损坏或出现硬件死锁的问题,因为它将直接影响到A/D模拟输入信号源的内阻和采样时间,R17的阻值不能太大,阻值选为1k-Ω。RT选用NTC热敏电阻的精度为50 kΩ±0.5%,其B25/50为4 050 K±1%,分压电阻R16选用热稳定性好的金属膜电阻,精度为20kΩ± 0.5%。
2.2 键盘输入和输出显示电路
设计输入电路时利用了PIC16C71的PORTB口具有软件控制弱上拉电路的特点。键盘查询电路由电阻R6、R7、R8,按键S1、S2、S3及电阻R12组成,通过引脚RB6、RB5、RB4查询按键的状态。RB4~RB6脚作为输入端时分别与按键S1、S2和S3相连,S1为温增设置按钮,S2为温降设置按钮,S3为手柄开关关联键。RB6、开关S3和R12组成用水状态查询输入电路,由RB6引脚输入用水状态。设定的用水温度由RB1~RB8通过限流电阻R5~R11后由二位LED数码管输出,RA1和RA2输出控制VQ1和VQ2作为LED数码管的位控。
2.3 直流电机驱动电路
三极管VQ3~VQ6的导通和截止由引脚RA3和RB0的输出电平控制,用于控制直流电机M的电源极性翻转。取样直流电机M的压降值送给PIC-16C71芯片的A/D转换器的另一输入通道,电机两端的电压降由R14、R15分压取样后由RA4引脚输入A/D转换器转换后由程序读取,用于判断电机位置和控制。
3 A/D数据的处理
测试中发现,若把PIC16C71的A/D转换后的温度数据不作处理就直接用于温度控制,会使电机不时出现误动作。即使在测温电路中加入了各种滤波电路,仍不见改善。因此推断该干扰可能来自A/D转换模块内部。考虑到该系统中现场温度的变化较缓慢,适合采用滑动窗口平均法进行数字滤波。在采用数字滤波方法对A/D转换后得到的连续16个温度数据进行平均后,有效消除了对A/D转换后的噪声。
4 结束语
该数字水温配制阀选用低压直流电源供电,以确保安全。出水开关和流量的大小用单手柄控制,用按键预置用水温度并由数码管显示,操作简单,可以在25~50℃之间对出水温度进行设置,分辨率是1℃。如果出水口水温和设定的水温不一致,则LED数码管闪烁显示以提醒注意,同时单片机根据两者之间的高低和差值的大小,产生脉冲控制电机的转速和正反转,通过传动机构带动混水阀,调整冷热水的进水比例。该水阀与家庭热水器配套使用,可自动快速调节出需要的水温,可以防止冷热水刺激,洗浴舒适,节水效果明显。