HS1101程序及应用原理Word文件下载.doc
- 文档编号:15494680
- 上传时间:2022-11-02
- 格式:DOC
- 页数:11
- 大小:92KB
HS1101程序及应用原理Word文件下载.doc
《HS1101程序及应用原理Word文件下载.doc》由会员分享,可在线阅读,更多相关《HS1101程序及应用原理Word文件下载.doc(11页珍藏版)》请在冰豆网上搜索。
从特性曲线曲线图上我们可以看出,HSll01具有极好的线性输出。
可以近似看成相对湿度值与电容值成比例。
因此在测量过程中,采集电容值即可。
2测量电路
2.1湿度定义
湿度指的是相对湿度。
用%RH表示。
即气体中(通常为空气中)所含水蒸气量(水蒸气压)与其空气在相同情况下饱和水蒸气量(饱和水蒸气压)的百分比。
2.2测量原理
HSll00湿度传感器是一种基于电容原理的湿度传感器,相对湿度的变化和电容值呈线性规律。
在自动测试系统中,电容值随着空气湿度的变化而变化,因此将电容值的变化转换成电压或频率的变化,才能进行有效地数据采集。
用555集成电路组成振荡电路,HSl100湿度传感器充当振荡电容,从而完成湿度到频率的转换。
2.3测量方法
HSll01湿敏传感器是采用侧面开放式封装,只有两个引脚,有线性电压输出和线性频率输出两种电路。
在使用时,将2脚接地,这里选用频率输出电路。
该传感器采用电容构成材料,不允许直流方式供电。
所以我们使用555定时器电路组成单稳态电路。
具体电路分析如下。
电源电压工作范围是UCC=+3.5~+12V。
利用一片CMOS定时器TLC555.配上HSll01和电阻R2、R4构成单稳态电路,将相对湿度值变化转换成频率信号输出。
输出频率范围是7351-6033Hz,所对应的相对湿度为0~100%。
当RH=55%时,f=6660Hz。
输出的频率信号可送至数字频率计或控制系统,经整理后送显示。
R3为输出端的限流电阻,起保护作用。
通电后.电源沿着Uc→R4→R2→C对HSl101充电。
经过t1时间后湿敏电容的压降Uc就被充电到TI~C555的高触发电平(Uh=0.67Ucc),使内部比较器翻转,OUT的输出变成低电平。
然后C开始放电,放电回路为C→R2→D→内部放电管地。
经过t2时间后,Uc降到低触发电平(Ul=0.33Ucc),内部比较器再次翻转,使OUT端的输出变成高电平。
这样周而复始的进行充、放电,形成了振荡。
充电、放电时间计算公式分别为:
tl=C(R2+R4)ln2;
t2=CR21n2;
输出波形的频率(f)和占空比(D)的计算公式如下:
f=1/T=1/(t1+t2)=1/C(2R2+R4)ln2;
D=tl/T=t1/t1+t2=R2+R4/(2R2+R4);
通常取R4《R2,使D≈50%,输出接近于方波。
例如,取人R2=567kQ,R4=49.9kΩ。
湿度传感器只是保证传感探头的精度,在实际使用中,综合精度除了与湿度传感器本身元件有关,还与外围电路的器件选择相关。
为了与HSll01温度系数相匹配,Rl数值应取为1%精度,且最大温漂不超过100ppm(ppm:
百万分之一,表示当温度变化1℃,所对应的电阻相对变化量)。
为了保证达到6660Hz/55%,R2与555电路选取参照如下表:
当RH=55%、TA=+25℃时,典型输出方波频率与相对湿度的数据对照见表3。
2.4与微处理器IPC2132接口
LPC2132是一种支持实时仿真和跟踪的16/32位基于ARM7TDMI-S内核的CPU,并带有64KB嵌入的高速FLASH存储器。
LPC2132的实时仿真和跟踪功能方便了代码调试,降低了开发成本。
并且I/O口能够接受5V容限。
整个湿度传感器由于采用频率输出电路,接口简单,可直接与LPC2132普通I/0对接,这里选用PO.6脚做为频率测量接口。
3软件设计
软件设计主要完成对HSl101在单位时间内的频率测量。
软件设计采用端口扫描方式,间隔8S开始测量,测量时间为1S。
统计单位时间内脉冲的个数,与表3对照,确定湿度值的范围,并将湿度值通过LCD显示。
为了保证测量精度,可以取3次以上测量数据,求平均值后,作为最终送显示数据。
微处理器工作晶体选用12.000MHz。
程序代码采用嵌入式C语言编写,经在ADSl.2编译环境中进行编译后,移植到微处理器内执行。
参考软件代码之一:
Do
{
IODIR0=10DIROIRO&OXOfffffbf:
//p0.6设置成输入
d0//读IO口寄存器
{if((IOPIN0&
(1<
<
0x06))==0x00000000)
break:
//检测0电平
}while
(1);
0x06))!
=Ox00000000)
//检测l电平
}while
(1);
fdat++:
//累积1S时间内脉冲个数
}while(pt8s%8==0);
//间隔8S测量一次
fdat--;
time
(1);
//延时必须保留
if((fdat>
6033)&
(fdat<
6187))rhb=90;
//将测量数值转换为对应百分比,1%一100%
6186)&
6331))rhb=80;
6330)&
6469))rhb=70;
6468)&
6601))rhb=60;
6600)&
6729))rhb=50;
6728)&
6854))rhb=40;
6853)&
6977))rhb=30;
6976)&
7101))rhb=20;
7100)&
7225))rhb=10;
if(fdat>
7224)rhb=00:
lhb=fdat%100:
//对测量数值取低两位
//处理需要等待一段时间,否则lhb=0
if((rhb==60)\(rhb==70)\(rhb==90))lhb=lhb/
13:
//对低两位数值取个位,
elseif(rhb==80)lhb=lhb/14;
elselhb=lhb/12;
rhb=rhb+lhb;
//将数据合成一起,送显示
fdat=Ox00000000;
//清0,为下次准备
}
参考软件代码之二:
#include"
reg51.h"
#defineucharunsignedchar
#defineuint
unsignedint
uchar
tem0,tem1;
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中断,表示计数的频率溢出,超出了可测量的频率范围,显然在这里不可能。
所以重新启动。
TL0=0x00;
定时50000us
TH0=0x4C;
voidInit_timer()
TMOD=0x51;
//01010001定时器0在模式1下工作16位定时器,定时方式
定时器1在模式1下工作16位计数器,T1负跳变加1
//定时器0初值定时50000us
ET0=1;
//使能定时器0中断
ET1=1;
//使能定时器1中断
//使能总中断
//开始计时
voidtran()
f=tem1;
f=(f<
8)|t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HS1101 程序 应用 原理