1、系统工作原理
由于太阳能热水器的工作环境限制,将下位机(pic16f877)置于集热现场,主要实现温度采集功能,温差循环控制功能,即控制循环泵、上水阀、辅助电加热器、伴热带的启停,并与上位机(pic16f877)进行485通信,将采集的温度水位信息送到上位机去显示。
系统的整体框图如图1所示。
2、硬件电路设计
温度采集处理电路的主要功能是将铂电阻传感器采集的温度信号,经桥式信号检测电路转换为电压信号,再经弱信号仪表放大器mcp602进行两级放大,及非线性a/d转换,转换成能够识别的数字量,暂存在单片机的存储器中。
2.1温度采集电路设计
温度采集电路是将单片机的ra2、ra3、ra4连接多路选择芯片cd4051的地址位a、b、c端口,由单片机设定采集哪一路温度信息,将ra0设定为模拟通道。
2.2放大倍数的计算
本设计放大电路选用mcp602作为放大器,由其构成的放大电路图如图2所示。其中:vref=0v,r1=300kω,r2=10kω,这是一个简单的2级放大电路,通过调节可变电阻rg可以改变其放大倍数,便于以后的调试。两级放大后的输出电压vout:
通过电桥电路采集来的信号比较微弱,需要进行适当的放大,才能转换成单片机所能识别的0v到5v的信号。为此,要合理地设定可变电阻rg的值来选择合适的放大倍数。选择过程如下:
当rg=20kω,放大倍数约为61倍。在温度t=99℃时,pt1000的阻值为r=1381.26ω,则得到vout=2.806v。尽管vout在界限0~5v之内,但灵敏度较小,故将rg调整到10kω。
则输出电压△u等于:
3)铂电阻的引线电阻
因为测温电路是不平衡电桥。铂电阻作为电桥的一个桥臂电阻,其连接导线(从铂电阻到控制单元)也作为桥臂电阻的一部分,这一部分电阻是未知的且随环境温度变化,造成测量误差。但由于铂电阻pt1000的阻值较大,所以这个因素可以忽略。
4)测温电路本身的影响
由于电源电压的抖动、外界于扰,ad通道的互相干扰等都会造成温度测量的不确定性,因此必须通过合理的电路设计才能消除这些因素的影响。
考虑到铂电阻阻值和温度的非线性以及电桥电路本身的非线性,本文提出两种方案,下面分别加以介绍。
方案1:查表法
由铂电阻的电阻-温度分度表查出每一度对应的电阻值ri,带入式(3)中可以得到电桥对应的输出电压△u(i),再根据式(4)就可以得到对应的a/d转换值ad(i)。
式中,k为mcp602的放大倍数。本文选择91。uref为单片机内部a/d转换的参考电压,等于5v。
将计算得到的a/d转换值是按照温度大小做成表格存放在单片机的存储器中。当测量温度时,先读取a/d转换值,然后采用对分查找的算法用单片机的a/d转换结果ad(t)与eeprom中存放的表格值ad(i)作比较,每次取表格的中间值ad(m),如果ad(t)>ad(m),则下次比较时取表格的后半部的中间值做比较,如果ad(t)
由于铂电阻阻值和温度的非线性以及电桥电路本身的非线性,使得温度和电桥输出电压之间的关系变得很复杂,而且也没有一个相应的函数来描述它们之间的关系,下面就介绍zui小二乘法,利用zui小二乘参数估计理论来建立温度传感器的数学模型。
对太阳能热水器的水箱温度在标定点进行温度实测(可用标准电阻箱或电位器来模拟铂电阻在各个标定点实测),得到几组数据,即(v1,t1),…(vi,ti),…(vn,tn)。其中输入量为电桥输出电压vi,输出量为温度ti。
设有一个m次多项式:
根据zui小二乘法原理,使得在所有给定标定点,多项式t(vi)的值与实测输出值ti的偏差平方和达到zui小值,即
由此可以建立m+1个方程组,求解出a0,a1,…,am未知量,确定出多项式t(vi)的表达式。
求解方程组用矩阵分析方法,得到参数向量为
求解采用计算机递推法求解,先设m=1,将测量值带入矩阵公式中计算a。逐点计算误差△i=ti-t(vi),看是否超差,如果超差则升阶,令m=2,重新计算a,直到不超差为止,此时多项式模型即为传感器数学模型。
此方法的优点是能够实现所建立的数学模型整体优化,适合非线性较大的传感器模型的建立。但应用于本文时需要拟合出高阶的数学模型,其运算量较大。另外,在以主频为4mhz的单片机上做运算,其速度较慢(多次加、乘运算),所以本文采用方案1。
3、系统软件实现
温度采集处理的软件流程如图5所示,其中包括了启动温度电路、寄存器的配置、转换数据读出、查找得温度等部分。首先进行a/d初始化设置,将点电源电压vcc作为比较电压,同时设定ra0作为模拟输入通道,开启入水口温度采样通道之后,启动a/d转换。当a/d转换允许位go/done=1时,将得到的采样值送入到折半查找程序中,得出其温度的整数部分m(t),从而求出温度t的数值。计算完毕后返回。
4、实验结果与讨论
使用标准电阻箱模拟铂电阻温度传感器,每一个电阻值对应着一个温度,构成测温电桥的桥臂,得到差动电压,通过万用表测量。经过mcp602放大后,送入单片机进行a/d转换。由于单片机内部的a/d转换是十位的,因此分别存储在寄存器adrseh和adrsel中,再通过对分查表法,将对应的温度值事先在触摸屏上显示出来。采集的温度和实际的温度对照如表1所示。
由表可知,在10~80℃温度范围内,温度测量的误差zui大是±1℃。能够满足太阳能热水器的采暖和洗浴的要求。
5、结论
本设计采用铂电阻作为太阳能热水器的温度传感器。实际研究结果表明,该传感器和以往的类似传感器相比温度控制精度高、使用方便和性能稳定等优点,提高了我国太阳能应用领域控制水平。