电容式湿度传感器HS1101介绍及应用电路PostBy:2009-3-1210:31:26此主题相关图片如下hs1101.jpg:HS1101湿度传感器采用专利设计的固态聚合物结构,具有响应时间快、高可靠性和长期稳定性特点,不需要校准的完全互换性。HS1101湿度传感器在电路中等效于一个电容器Cx,其电容随所测空气的湿度增大而增大,在相对湿度为0%-100%RH的范围内,电容的容量由160pF变化到200pF,其误差不大于±2%RH,响应时间小于5s,温度系数为0.04pF/℃。此主题相关图片如下hs1101-61mcu.jpg:如图2所示,将该湿敏电容Cx置于555振荡电路之中,将电容的变化转换为与之成反比的电压频率信号,该频率信号可以直接被微控器采集。振荡电路的两个暂稳态输出频率变化的方波信号(图3中U4的3脚输出)的高电平时间为此主题相关图片如下11.gif:输出低电平时间为此主题相关图片如下12.gif:因此输出方波信号的周期为此主题相关图片如下13.gif:即此主题相关图片如下14.gif:HS1101湿度测量电路及程序PostBy:2009-3-1210:35:23温度检测采用HS1101型温度传感器,HS1101是HUMIREL公司生产的变容式相对湿度传感器,采用独特的工艺设计。HS1101测量湿度采用将HS1101置于555振荡电路中,将电容值的变化砖换成电压频率信号,可以直接被微处理器采集。设计的电路如图1所示。此主题相关图片如下hs1101-0903110.jpg:图1湿度测量电路555芯片外接电阻R57,R58与HS1101,构成对HS1101的充电回路。7端通过芯片内部的晶体管对地短路实现对HS1101的放电回路,并将引脚2,6端相连引入到片内比较器,构成一个多谐波振荡器,其中,R57相对于R58必须非常的小,但决不能低于一个最小值。R51是防止短路的保护电阻。HS1101作为一个变化的电容器,连接2和6引脚。引脚作为R57的短路引脚。HS1101的等效电容通过R57和R58充电达到上限电压(近似于0.67VCC,时间记为T1),这时555的引脚3由高电平变为低电平,然后通过R58开始放电,由于R57被7引脚内部短路接地,所以只放电到触发界线(近似于0.33VCC,时间记为T2),这时555芯片的引脚3变为高电平。通过不同的两个电阻R19,R20进行传感器的不停充放电,产生方波输出。充电、放电时间分别为此主题相关图片如下hs1101-0903111.jpg:输出波形的频率和占空比的计算公式如下:此主题相关图片如下hs1101-0903112.jpg:由此可以看出,空气相对湿度与555芯片输出频率存在一定线性关系。表2给出了典型频率湿度关系(参考点:25℃,相对湿度:55%,输出频率:6.208kHz)。可以通过微处理器采集555芯片的频率,然后查表即可得出相对湿度值。为了更好提高测量精度,将采用下位机负责采集频率,将频率值送入上位机进行分段处理。此主题相关图片如下hs1101-0903113.jpg:将555OUT接到51单片机的T1脚上,部分程序如下:#includereg51.h#defineucharunsignedchar#defineuintunsignedintuchartem0,tem1;uchartemp0,temp1;uintf=0;//初值/*****************************************************************************名称:timer0()*功能:定时器1,每50000us中断一次。*入口参数:****************************************************************************/voidtimer0()interrupt1{EA=0;TR0=0;TR1=0;TL0=0xFF;//重装值定时50000usOX4BFFHTH0=0x4B;tem0=TL1;//读数tem1=TH1;TL1=0x00;//定时器1清零TH1=0x00;f=1;//作标注位TR0=1;TR1=1;EA=1;}/*****************************************************************************名称:timer1()*功能:计数器,用于计数将555输出的频率,以计数相对湿度。*入口参数:****************************************************************************/voidtimer1()interrupt3//T1中断,表示计数的频率溢出,超出了可测量的频率范围,显然在这里不可能。所以重新启动。{EA=0;TR0=0;TR1=0;TL0=0x00;//重装值定时50000usTH0=0x4C;TL1=0x00;//定时器1清零TH1=0x00;TR0=1;TR1=1;EA=1;}voidInit_timer(){TMOD=0x51;//01010001定时器0在模式1下工作16位定时器,定时方式定时器1在模式1下工作16位计数器,T1负跳变加1TL0=0x00;//定时器0初值定时50000usTH0=0x4C;TL1=0x00;//定时器1清零TH1=0x00;ET0=1;//使能定时器0中断ET1=1;//使能定时器1中断EA=1;//使能总中断TR0=1;//开始计时TR1=1;}voidtran(){f=tem1;f=(f8)|tem0;f=f*20;//这里f的值是最终读到的频率,不同频率对于不同相对湿度。if((5623=f)&&(f=6852))//相对湿度在有效范围内(0%--100%){if((6734f)&&(f=6852)){temp0=0;temp1=(6852-f)*10/118;}if((6618f)&&(f=6734)){temp0=1;temp1=(6734-f)*10/116;}if((6503f)&&(f=6618)){temp0=2;temp1=(6618-f)*10/115;}if((6388f)&&(f=6503)){temp0=3;temp1=(6503-f)*10/115;}if((6271f)&&(f=6388)){temp0=4;temp1=(6388-f)*10/117;}if((6152f)&&(f=6271)){temp0=5;temp1=(6271-f)*10/119;}if((6029f)&&(f=6152)){temp0=6;temp1=(6152-f)*10/123;}if((5901f)&&(f=6029)){temp0=7;temp1=(6029-f)*10/128;}if((5766f)&&(f=5901)){temp0=8;temp1=(5901-f)*10/135;}if((5623f)&&(f=5766)){temp0=9;temp1=(5766-f)*10/143;}}else{temp0=0;temp1=0;}}voidmain(){uchari,k;ucharcount;Init_timer();count=0;while(1){for(i=0;i200;i++)for(k=0;k200;k++);//延时tran();temp0&=0x0F;temp1&=0x0F;temp0=temp04;count=temp0|temp1;Ddisp(count);}