烟雾传感器 5.docx

上传人:b****1 文档编号:23257888 上传时间:2023-05-15 格式:DOCX 页数:9 大小:111.22KB
下载 相关 举报
烟雾传感器 5.docx_第1页
第1页 / 共9页
烟雾传感器 5.docx_第2页
第2页 / 共9页
烟雾传感器 5.docx_第3页
第3页 / 共9页
烟雾传感器 5.docx_第4页
第4页 / 共9页
烟雾传感器 5.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

烟雾传感器 5.docx

《烟雾传感器 5.docx》由会员分享,可在线阅读,更多相关《烟雾传感器 5.docx(9页珍藏版)》请在冰豆网上搜索。

烟雾传感器 5.docx

烟雾传感器5

电容式湿度传感器HS1101介绍及应用电路

hs1101

    HS1101湿度传感器采用专利设计的固态聚合物结构,具有响应时间快、高可靠性和长期稳定性特点,不需要校准的完全互换性。

HS1101湿度传感器在电路中等效于一个电容器Cx,其电容随所测空气的湿度增大而增大,在相对湿度为0%-100%RH的范围内,电容的容量由160pF变化到200pF,其误差不大于±2%RH,响应时间小于5s,温度系数为0.04pF/℃。

 

如图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.67 VCC,时间记为T1),这时555的引脚3由高电平变为低电平,然后通过R58开始放电,由于R57被7引脚内部短路接地,所以只放电到触发界线(近似于0.33 VCC,时间记为T2),这时555芯片的引脚3变为高电平。

通过不同的两个电阻R19,R20进行传感器的不停充放电,产生方波输出。

 

充电、放电时间分别为

此主题相关图片如下hs1101-0903111.jpg:

输出波形的频率和占空比的计算公式如下:

此主题相关图片如下hs1101-0903112.jpg:

   由此可以看出,空气相对湿度与555芯片输出频率存在一定线性关系。

表2给出了典型频率湿度关系(参考点:

25℃,相对湿度:

55%,输出频率:

6.208kHz)。

可以通过微处理器采集555芯片的频率,然后查表即可得出相对湿度值。

为了更好提高测量精度,将采用下位机负责采集频率,将频率值送入上位机进行分段处理。

 

 

此主题相关图片如下hs1101-0903113.jpg:

 

将555OUT接到51单片机的T1脚上,部分程序如下:

 

#include"reg51.h"

 

#defineucharunsignedchar

#defineuint unsignedint

 

uchar tem0,tem1;                            

uchar temp0,temp1;                        

uint  f=0;                                                //初值

/****************************************************************************

*名称:

timer0()

*功能:

定时器1,每50000us中断一次。

*入口参数:

****************************************************************************/

voidtimer0()interrupt1

{

 

      EA=0;

      TR0=0;

   TR1=0;

 

      TL0=0xFF;                  //重装值  定时50000us OX4BFFH

      TH0=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;                  //重装值  定时50000us

      TH0=0x4C;

   TL1=0x00;                  //定时器1清零

    TH1=0x00;

 

     TR0=1;

   TR1=1;

      EA=1;

}

 

voidInit_timer()

{

 

      TMOD=0x51;              //01010001定时器0在模式1下工作16位定时器,定时方式 定时器1在模式1下工作16位计数器,T1负跳变加1

      TL0=0x00;                  //定时器0初值定时50000us

      TH0=0x4C;                 

      TL1=0x00;                  //定时器1清零

      TH1=0x00;

      ET0=1;                       //使能定时器0中断

      ET1=1;                       //使能定时器1中断

      EA=1;                         //使能总中断

      TR0=1;                       //开始计时

      TR1=1;

}

 

voidtran()

{

      f=tem1;

      f=(f<<8)|tem0;

   f=f*20;                  //这里f的值是最终读到的频率,不同频率对于不同相对湿度。

    if((5623<=f)&&(f<=6852))        //相对湿度在有效范围内(0%--100%)

   {

             if((6734

               {temp0=0; temp1=(6852-f)*10/118;}

             if((6618

                    {temp0=1;temp1=(6734-f)*10/116; }

             if((6503

                    {temp0=2;temp1=(6618-f)*10/115; } 

             if((6388

                    {temp0=3;temp1=(6503-f)*10/115; }

             if((6271

                    {temp0=4;temp1=(6388-f)*10/117; } 

             if((6152

                    {temp0=5;temp1=(6271-f)*10/119; }

         if((6029

                    {temp0=6;temp1=(6152-f)*10/123; }

         if((5901

                    {temp0=7;temp1=(6029-f)*10/128;  }

         if((5766

                    {temp0=8;temp1=(5901-f)*10/135; }

         if((5623

                    {temp0=9;temp1=(5766-f)*10/143; }

      }

      else

      {

             temp0=0;temp1=0;

      }

}

             

voidmain()

{

      uchar     i,k;

      uchar     count;

      Init_timer();

      count=0;

      while

(1)

      {

             for(i=0;i<200;i++)

                    for(k=0;k<200;k++);          //延时

             tran();

             temp0&=0x0F;

             temp1&=0x0F;

             temp0=temp0<<4;

             count=temp0|temp1;

             Ddisp(count);

      }

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1