家里的几个山寨温湿度计湿度同一环境示值五花八门,误差很大,为了找到原因于是花0.8元包邮巨款撸了一个研究。
接下来发现这个看似简单的小东西要想用好还不是这么容易的。
下图是常见湿敏电阻结构示意图,主要由陶瓷基片 印刷梳状电极和高分子感湿膜组成。
湿度增加导电率增加,阻值变小。
实物图,红圈里面一层膜状物质就是高分子感湿膜。
网上介绍这个的资料非常的杂乱和散碎和异同,对这个东西的本质没有讲的非常清晰。收集了一下共同点,主要是有极化效应,测量电路必须交流不能直流,要求频率2khz以内正弦波 ,幅值1.5v以下。
下面就先验证一下所谓的极化效应,万用表直流电阻档测试直流电阻。
发现阻值刚接触表笔较小然后逐渐增大,有往无穷大接近的趋势,快速取下重新测试阻值和上次非常接近,短路电极或反向测试阻值会再次从小变大,出现了明显的极化现象。
直流电阻档测试后马上切换到电压档发现检测出电压,这些特性都指向一个器件,“电容”。
很长时间了仍旧有剩余电压
于是干脆电容档测下容量,我的室内环境条件下测出10nf容量,反接也是10左右且稳定。
对着湿哈气容值大幅攀升后缓慢回落,且这么大的容值肯定不是那两个印刷电极和空气介质能产生的容量。是高分子感湿膜电子在电场作用下向两级聚集产生的,这玩意不是湿敏电阻吗?咋体现的都是电容的特性,对此网上没找到明了的解释。
先不管,下面进行数据手册里的交流测试看看啥情况。
信号源1khz正弦
湿敏和一颗电阻串联,示波器探头电阻上取样。
为了直观用超声波补水美容仪靠近湿敏加湿,波形幅度随湿度增加明显增加。说明交流1khz下能可靠工作
符合下面的阻抗特性
那到底这个东西等效于什么呢?网上也搜不到,我有了一个大胆的猜测,会不会就是等效于rc串联?
直流极化作用体现容性,高频交流容抗变小主要体现阻抗,确切的说交流下检测的是复阻抗?
为了验证翻山越岭的找,终于在某科技公司官网产品信息页发现自家的湿敏电阻开发应用指南有这么一张图片,注意红线标注。
之前的猜测是正确的,这玩意儿就是等效rc串联,那上面的很多现象就说的通了。
知道了结构特性和基本原理了,再研究一下测量方法。
对此网上有很多方法,也是五花八门,最好的方法当然是外部1khz正弦波发生器输出正弦进分压网络(湿敏位于分压网络中),输出取样后进单片机,这样精度最高效果最好,但是成本和复杂程度也是最高的,低端山寨基本上没看到有采用的,高端的都用Sensirion公司的数字温湿度模块了,应用调试难度功能精度等等都比这个几毛钱的东西好。
那么看看一般都是怎样测量的,这张图是阿里供应商的广告页面提供的一张简介,下面方框貌似器件厂商提供的接线图,这个玩意官方的详细资料非常少,只有一张简易接线图。
网上也大多沿用这个接法,(三个io口分别为io1-3,io1接湿敏为r2,io2接10k基准电阻,参考电阻,随你怎么叫 ,为r1。io3作为测量引脚。)但是测量方法分两组,第一种积分时间法,上电先令三个io口低电平给电容放电,延迟后先io2输出高电平通过r1 10k电阻给电容充电,io1,io3设置为高阻输入,io3并联在电容上方作为中断检测脚,当c两端电压达到io3输入门限触发单片机中断,记录下积分时间t1,再给电容放电后io1输出高电平,io2高阻,再给r2湿敏做积分记下时间t2,根据公式t1/r1=t2/r2 算出r2的阻值。这样的好处是简单,io口方波输出经过积分电容的作用,电阻中的电流是三角波,接近正弦,无需adc,但是频率受rc积分时间的影响,湿敏阻值又大幅波动,因此rc积分时间波动很大不能准确的维持在1khz最佳频率范围内,受影响的因素也比较多,例如单片机个体差异,io口阈值电平等等都会影响。还有一种方法是把电容c去掉,单片机内部配置io1和io2为“非”的关系,输出模式为推挽输出,即io1输出高电平,io2就低电平,然后反复翻转。这样r1和r2就被串联起来被双极方波驱动,两个节点也就是io3取样,当io1高电平io2低电平时io3开始取样,这样就取样到r1的端电压,关系式 u1=r1/(r1+r2).u u1/u=r1/(r1+r2), u为io1和io2之间的总电压,单片机供电一定,u基本就是一定,r1=10k,根据分压比就可以算出r2的阻值。这种方法需要io3有adc,且频率可以精确到1khz,但是方波驱动非正弦,精度应该也是受一定影响。
我给稍微改进了一下,第二种方法的条件下,把电容c还是加上,但是容量缩小大概100倍,这样利用弱积分作用对波形进行整型,下图输入方波,电容在几个nf的情况下基本上能把波形平滑成接近正弦,增加测量精度。下图绿色输入波形,蓝电压波形,可以看到取值合理已经比较接近正弦,橙色是电流波形,从方波已经向三角波靠近,比不接电容要好的多,当然电容容值和r的rc时间一定要小于1ms ,不然波形从方波过度往三角波转换会造成分压幅值减小过多,影响精度。
上面测出阻值再查表得出对应湿度值。由于湿度分相对湿度和绝对湿度,相对湿度是绝对湿度与特定温度下的饱和湿度的比值,湿敏测出的实际上是绝对湿度对阻值造成的影响,绝对湿度不变,温度越高,相对湿度就会越低,(因为空气的湿度饱和度随温度增加而增加,温度越高容纳水分子的能力越强,绝对湿度可以理解为空气中水分的质量),高温比低温空气对水溶解的饱和度更高,如果相对湿度不变就需要更高的绝对湿度,对于湿敏电阻对应更小的阻值(如下表)因此只是测出阻值查表还不行还需要进行补偿,比如你25度测量湿度是40%,绝对湿度不变的情况下,温度上升到35度,相对湿度反而会降低,因为空气溶解水分能力增强了,所以想准确测量相对湿度必须同时测量温度用作补偿参量。
补偿需要对应下表研究出算法,可以看到并不是绝对线性的,每个区间补偿值都不会一样,所以这个简易的湿敏电阻从电路设计到测量方法和程序算法都需要优秀才会准确。山寨温湿度计肯定不会花费大量时间和精力给你优化电路和算法,大概率就是第一种积分采样法加下面这个我费劲千辛万苦能找到的简易公式凑合出来的。
H(t)=H(25°)-0.4*(t-25°)
h表示湿度 t温度 0.4是大概的湿度系数,
比如25度标准下,采样到相对湿度是50%,如果其他条件都没变就温度上升35度后相对湿度就是40%。这就是你夏天开个空调温度30度时湿度60%,开了半小时温度下降了,外面室外机也再滴水,但是你的湿度计湿度短时间仍旧维持在60%,就是因为温度低空气对水分溶解能力降低,绝对湿度在减小,空气饱和度也再减低,因此比值基本维持不变,你的湿度计也就读数基本不变,等室温降到一定恒定后,空调除湿作用除去大量水分,相对湿度才会降。相对湿度体现着特定温度下空气溶解水分的饱和程度,假设100%你就会觉得燥热无比,此时温度也许并不高,因为空气此时的湿饱和度几乎100%,你出的汗已经不能蒸发被空气吸收带走热量,因此相对湿度更贴近人们日常对湿度实际感受,所以都用相对湿度表示湿度大小。
可以看到,一个小小的湿敏电阻要想用好了也是件系统工程,里面涉及到的知识和原理值得深入研究。