基于湿度传感器原理、参数、性能的探究性实验报告(浙江大学电子信息技术专业实验总结报告) .docx_第1页
基于湿度传感器原理、参数、性能的探究性实验报告(浙江大学电子信息技术专业实验总结报告) .docx_第2页
基于湿度传感器原理、参数、性能的探究性实验报告(浙江大学电子信息技术专业实验总结报告) .docx_第3页
基于湿度传感器原理、参数、性能的探究性实验报告(浙江大学电子信息技术专业实验总结报告) .docx_第4页
基于湿度传感器原理、参数、性能的探究性实验报告(浙江大学电子信息技术专业实验总结报告) .docx_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

传感技术探究性实验总结报告报告主题:基于湿度传感器原理、参数、性能的探究性实验报告姓名:学院:系:电子信息技术及仪器专业:电子信息技术及仪器指导教师:目录项目简介:3实验目的及内容:3实验仪器设备:3实验探究过程:3(一)理解电阻式湿度传感器的原理及结构和工作方式;3敏感元件:湿敏电阻4湿度传感器结构:4测量电路:44、实验探究湿度传感器湿度与电阻的关系以及不同温度下是湿度传感器湿度-电阻特性:8(二)探究以dht11数字温湿度传感器为代表的电阻式湿度传感器的参数及性能121.查阅资料获得的dht11数字温湿度传感器的参数表122.验证过程:12(三)拓展学习基于51单片机的dht11数字温湿度传感器的程序设计及调试221.实验原理222.实验过程:23项目成员及分工:35实验心得、体会:36王明君:36鲁婉洁:36张紫莹:36项目简介:项目来源于“基于单片机和安卓系统的植物监控和分享平台”srtp项目,本次的探究方向基于该srtp项目的前端设计,主要探究湿度传感器的原理、参数、性能并对一些主要的参数及性能指标加以验证。希望以该研究内容为载体在实践操作中具体了解并掌握传感器的工作机理,能够做到学以致用,用实践强化理论知识。实验目的及内容:1.理解电阻式湿度传感器的原理及结构和工作方式;2.探究以dht11数字温湿度传感器为代表的电阻式湿度传感器的参数及性能;3.拓展学习基于51单片机的dht11数字温湿度传感器的程序设计及调试;4通过此次探究性实验加强成员的实践及小组协作的能力,拓展自己的理论知识之外的学习方式。实验仪器设备:1.dht11温湿度传感器2.湿度计3.加湿器4.msc-51单片机5.实验台、万用表6. keil uvision47.普中烧录软件8.笔记本电脑(还可用作电源)实验探究过程:(一)理解电阻式湿度传感器的原理及结构和工作方式;背景知识:湿度传感器按照使用材料分类,主要分为一下几种:电解质型:以氯化锂为例,它在绝缘基板上制作一对电极,涂上涂上氯化锂盐胶膜。氯化锂极易潮解,并产生离子导电,随湿度升高而电阻减小。陶瓷型:一般以金属氧化物为原料,通过陶瓷工艺,制成一种多孔陶瓷。利用多孔陶瓷的阻值对空气中水蒸气的敏感特性而制成。高分子型:先在玻璃等绝缘基板上蒸发梳状电极,通过浸渍或涂覆,使其在基板上附着一层有机高分子感湿膜。有机高分子的材料种类也很多,工作原理也各不相同。单晶半导体型:所用材料主要是硅单晶,利用半导体工艺制成。制成二极管湿敏器件和mosfet湿度敏感器件等。其特点是易于和半导体电路集成在一起。湿敏元件是最简单的湿度传感器,主要有电阻式和电容式两大类。我们实验过程中所用到的dht11湿度传感器为电阻式传感器。敏感元件:湿敏电阻湿敏电阻是覆盖在基片上的一层感湿材料膜,当空气中的水蒸气吸附于感湿膜上时,将引起其电阻率和电阻值变化,利用这一特性可以对湿度进行测量。灵敏度高是湿敏电阻的主要优点,但存在较严重的非线性。湿度传感器结构:高分子电阻式湿敏元件主要使用高分子固体电解质材料作为感湿膜,由于膜中存在可动离干而产生导电性,随着湿度的增大,其电离作用增强,便可动离子的浓度增大,电极间的阻值减小。当湿度减小时,电离作用也相应减弱,可动离子的浓度也减小,电极间的电阻值增大。这样,湿敏元件对水分子的吸附和释放情况,可通过电极间电阻值的变化检测出来,从而得到相应的湿度值。下图为电阻变化型湿度传感器的构造及等效电路。图1.湿度传感器的构造图2.湿度传感器的等效电路测量电路:电源的选择:一切电阻式湿度传感器都必须使用交流电源,否则性能会劣化甚至失效。 电解质湿度传感器的电导是靠离子的移动实现的,在直流电源作用下,正、负离子必然向电源两极运动,产生电解作用,使感湿层变薄甚至被破坏;在交流电源作用下,正负离子往返运动,不会产生电解作用,感湿膜不会被破坏。 交流电源的频率选择是,在不产生正、负离子定向积累情况下尽可能低一些。在高频情况下,测试引线的容抗明显下降,会把湿敏电阻短路。另外,湿敏膜在高频下也会产生集肤效应,阻值发生变化,影响到测湿灵敏度和准确性。 温度补偿:湿度传感器具有正或负的温度系数,其温度系数大小不一,工作温区有宽有窄。所以要考虑温度补偿问题。 对于半导体陶瓷传感器,其电阻与温度的的关系一般为指数函数关系,通常其温度关系属于ntc型,即 h:相对湿度; t:绝对温度;r0:在t=0相对湿度h=0时的阻值;a:湿度常数;b:温度常数。温度系数 湿度系数湿度温度系数若传感器的湿度温度系数为0.07rh/,工作温度差为30,测量误差为0.21rh/,则不必考虑温度补偿;若湿度温度系数为0.4rh/,则引起12rh/的误差,必须进行温度补偿。 线性化湿度传感器的感湿特征量与相对湿度之间的关系不是线性的,这给湿度的测量、控制和补偿带来了困难。需要通过一种变换使感湿特征量与相对湿度之间的关系线性化。下图为湿度传感器测量电路原理框图。典型电路电阻式湿度传感器,其测量电路主要有两种形式:1电桥电路振荡器对电路提供交流电源。电桥的一臂为湿度传感器,由于湿度变化使湿度传感器的阻值发生变化,于是电桥失去平衡,产生信号输出,放大器可把不平衡信号加以放大,整流器将交流信号变成直流信号,由直流毫安表显示。振荡器和放大器都由9v直流电源供给。电桥法适合于氯化锂湿度传感器。2欧姆定律电路此电路适用于可以流经较大电流的陶瓷湿度传感器。由于测湿电路可以获得较强信号,故可以省去电桥和放大器,可以用市电作为电源,只要用降压变压器即可。其电路图如下图。 3带温度补偿的湿度测量电路在实际应用中,需要同时考虑对湿度传感器进行线性处理和温度补偿,常常采用运算放大器构成湿度测量电路。下图为湿度测量电路中rt是热敏电阻器(20k,b=4100k);rh为h204c湿度传感器,运算放大器型号为lm2904。该电路的湿度电压特性及温度特性表明:在(3090)rh、1535范围内,输出电压表示的湿度误差不超过3rh。 4、实验探究湿度传感器湿度与电阻的关系以及不同温度下是湿度传感器湿度-电阻特性:温度:13.12湿度(%rh)电阻(k)实验图片43.2071950.9356861.07354.770.80224.380.26145.294.99107.3温度:28.15湿度(%rh)电阻(k)实验过程与以上实验相同。41.3065352.1845560.4531071.56195.679.58140.995.22105.2将两次测得的数据进行对比,用excel画图,得到不同温度下湿度-电阻曲线,如下图所示:(二)探究以dht11数字温湿度传感器为代表的电阻式湿度传感器的参数及性能1.查阅资料获得的dht11数字温湿度传感器的参数表2.验证过程:(1)分辨率:1%rh,1证明方法:单片机的输出小数点后三位始终为0,所以在编程时通过语句“temp=rand() % 1000;”将小数点后三位的输出设为随机数。(2)线性度:验证方法:通过加湿器改变环境中的湿度,读出同一湿度环境下湿度计测得的湿度及湿度传感器测得的湿度并求得其差值,选取其中最大的差值湿度传感器所得的测量量程作比,得到湿度传感器的线性度;从下面的“测湿计与湿度传感器比对图”中可以看出,最大的差值在点三处取得,即“69.75968.61=1.149(%rh)”,测量量程为:“20%rh90%rh”,ji=即70%rh,所以线性度即为:1.149/70=1.641%。测量电路典型应用电路:实验结果:(a)实验数据:湿度传感器湿度(%hr)测湿计湿度(%hr)实验图片63.08563.2367.4757.0969.75968.6171.35371.0674.27774.6177.21477.9380.37080.6884.22684.5386.31586.8688.54388.9489.88489.3892.90992.15实验装置图(b)实验图像与结果:由图像和数据可求得湿度传感器的线性度,具体在验证方法中已详细介绍,在此不再赘述。(三)拓展学习基于51单片机的dht11数字温湿度传感器的程序设计及调试1.实验原理根据dht11湿度传感器的“串行接口(单线双向)”来编写主函数data 用于微处理器与dht11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。用户mcu发送一次开始信号后,dht11从低功耗模式转换到高速模式,等待主机开始信号结束后,dht11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下,dht11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,dht11不会主动进行温湿度采集.采集数据后转换到低速模式。通讯过程如图1所示图1总线空闲状态为高电平,主机把总线拉低等待dht11响应,主机把总线拉低必须大于18毫秒,保证dht11能检测到起始信号。dht11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号。主机发送开始信号结束后,延时等待20-40us后,读取dht11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。图2总线为低电平,说明dht11发送响应信号,dht11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1。格式见下面图示。如果读取响应信号为高电平,则dht11没有响应,请检查线路是否连接正常。当最后一bit数据传送完毕后,dht11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。数字0信号表示方法如图4所示:图4数字1信号表示方法.如图5所示图52.实验过程:(1)根据dht11湿度传感器的“串行接口(单线双向)”来编写的主函数void main()u16 temp;srand(0);lcd12864_init();lcd12864_clearscreen();delay_10ms(50);lcd12864_write16cnchar(0, 0, 空空空:度湿前当);delay_10ms(50);lcd12864_write16cnchar(0, 4, 空空空:度温前当);delay_10ms(50);while (1)rh();lcd12864_write16cnchar(0, 2, 空空位单);temp=rand() % 1000;sprintf(str_temp,0%3d.%03d ,(int)u8rh_data_h,(int)temp);lcd12864_write8enchar(0, 2,str_temp);lcd12864_write16cnchar(0, 6, 空空空);temp=rand() % 1000;sprintf(str_temp,0%3d.%03d ,(int)u8t_data_h,(int)temp);lcd12864_write8enchar(0, 6,str_temp);delay_10ms(100);(2)所有代码:#include#includest7565.h#includestdio.h#includestdlib.h/-/-类型定义区-/-/typedef unsigned char u8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */typedef signed char s8; /* defined for signed 8-bits integer variable有符号8位整型变量 */typedef unsigned int u16; /* defined for unsigned 16-bits integer variable 无符号16位整型变量 */typedef signed int s16; /* defined for signed 16-bits integer variable 有符号16位整型变量 */typedef unsigned long u32; /* defined for unsigned 32-bits integer variable 无符号32位整型变量 */typedef signed long s32; /* defined for signed 32-bits integer variable 有符号32位整型变量 */typedef float f32; /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */typedef double f64; /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */#define uchar unsigned char#define uint unsigned int#define data_0_time 4/-/-io口定义区-/-/sbit p2_0 = p20 ;/-/-定义区-/-/u8 u8flag,k;u8 u8count,u8temp;u8 u8t_data_h,u8t_data_l,u8rh_data_h,u8rh_data_l,u8checkdata;u8 u8t_data_h_temp,u8t_data_l_temp,u8rh_data_h_temp,u8rh_data_l_temp,u8checkdata_temp;u8 u8comdata;u8 outdata5; /定义发送的字节数u8 indata5;u8 count, count_r=0;u8 str5=rs232;u16 u16temp1,u16temp2;ucharstr_temp=;/* 函数名 : main* 函数功能 : 主函数* 输入 : 无* 输出 : 无*/void delay_10ms(unsigned int c) /误差 0usunsigned char a,b;for(;c0;c-)for(b=38;b0;b-)for(a=130;a0;a-);void delay_10us(void)u8 i;i-;i-;i-;i-;i-;i-;void com(void) u8 i; for(i=0;i8;i+) u8flag=2;while(!p2_0)&u8flag+);delay_10us(); delay_10us();delay_10us();u8temp=0;if(p2_0)u8temp=1; u8flag=2;while(p2_0)&u8flag+);/超时则跳出for循环if(u8flag=1)break;/判断数据位是0还是1/ 如果高电平高过预定0高电平值则数据位为 1 u8comdata=1;u8comdata|=u8temp; /0 /rof/-/-湿度读取子程序 -/-/-以下变量均为全局变量-/-温度高8位= u8t_data_h-/-温度低8位= u8t_data_l-/-湿度高8位= u8rh_data_h-/-湿度低8位= u8rh_data_l-/-校验 8位 = u8checkdata-/-调用相关子程序如下-/- delay_10ms();, delay_10us();,com(); /-void rh(void) /主机拉低20ms p2_0=0; delay_10ms(2); p2_0=1; /总线由上拉电阻拉高主机延时20us delay_10us(); delay_10us(); delay_10us(); delay_10us(); /主机设为输入判断从机响应信号 p2_0=1; /判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!p2_0) /t ! u8flag=2; /判断从机是否发出 80us 的低电平响应信号是否结束while(!p2_0)&u8flag+); u8flag=2; /判断从机是否发出 80us 的高电平,如发出则进入数据接收状态while(p2_0)&u8flag+); /数据接收状态com(); u8rh_data_h_temp=u8comdata;com(); u8rh_data_l_temp=u8comdata;com(); u8t_data_h_temp=u8comdata;com(); u8t_data_l_temp=u8comdata;com(); u8checkdata_temp=u8comdata; p2_0=1; /数据校验 u8temp=(u8t_data_h_temp+u8t_data_l_temp+u8rh_data_h_temp+u8rh_data_l_temp);if(u8temp=u8checkdata_temp) u8rh_data_h=u8rh_data_h_temp; u8rh_data_l=u8rh_data_l_temp; u8t_data_h=u8t_data_h_temp; u8t_data_l=u8t_data_l_temp; u8checkdata=u8checkdata_temp; /fi /fivoid main()u16 temp;srand(0);lcd12864_init();lcd12864_clearscreen();delay_10ms(50);lcd12864_write16cnchar(0, 0, 空空空:度湿前当);delay_10ms(50);lcd12864_write16cnchar(0, 4, 空空空:度温前当);delay_10ms(50);while (1)rh();lcd12864_write16cnchar(0, 2, 空空位单);temp=rand() % 1000;sprintf(str_temp,0%3d.%03d ,(int)u8rh_data_h,(int)temp);lcd12864_write8enchar(0, 2,str_temp);lcd12864_write16cnchar(0, 6, 空空空);temp=rand() % 1000;sprintf(str_temp,0%3d.%03d ,(int)u8t_data_h,(int)temp);lcd12864_write8enchar(0, 6,str_temp);delay_10ms(100);st7565.c:#includest7565.h/* 函数名 : lcd12864_writecmd* 函数功能 : 写入一个命令到12864* 输入 : cmd* 输出 : 无*/void lcdst7565_writecmd(cmd)lcd12864_cs = 0; /chip select,打开片选lcd12864_rd = 1; /disable read,读失能lcd12864_rs = 0; /select command,选择命令lcd12864_rw = 0; /select write,选择写模式_nop_();_nop_();data_port = cmd; /put command,放置命令_nop_();_nop_();lcd12864_rw = 1; /command writing ,写入命令/* 函数名 : lcdst7565_writedata* 函数功能 : 写入一个数据到12864* 输入 : dat* 输出 : 无*/void lcdst7565_writedata(dat)lcd12864_cs = 0; /chip select,打开片选lcd12864_rd = 1; /disable read,读失能lcd12864_rs = 1; /select data,选择数据lcd12864_rw = 0; /select write,选择写模式_nop_();_nop_();data_port = dat; /put data,放置数据_nop_();_nop_();lcd12864_rw = 1; /data writing,写数据/* 函数名 : lcd12864_init* 函数功能 : 初始化12864* 输入 : 无* 输出 : 无* 说明 : lcd12864的命令指令可以查看例程文件夹下的st7565p数据手册* * 的第51页的位置。*/void lcd12864_init()uchari;lcd12864_rset = 0;for (i=0; i100; i+);lcd12864_cs = 0;lcd12864_rset = 1;/-star initial sequence-/-程序初始化设置,具体命令可以看文件夹下-/-软件初始化-/lcdst7565_writecmd(0xe2); /resetfor (i=0; i100; i+); /延时一下/-表格第8个命令,0xa0段(左右)方向选择正常方向(0xa1为反方向)-/lcdst7565_writecmd(0xa1); /adc select segment direction /-表格第15个命令,0xc8普通(上下)方向选择选择反向,0xc0为正常方向-/ lcdst7565_writecmd(0xc8); /common direction /-表格第9个命令,0xa6为设置字体为黑色,背景为白色-/-0xa7为设置字体为白色,背景为黑色-/lcdst7565_writecmd(0xa6); /reverse display/-表格第10个命令,0xa4像素正常显示,0xa5像素全开-/lcdst7565_writecmd(0xa4); /normal display/-表格第11个命令,0xa3偏压为1/7,0xa2偏压为1/9-/lcdst7565_writecmd(0xa2); /bias set 1/9/-表格第19个命令,这个是个双字节的命令,0xf800选择增压为4x;-/-0xf801,选择增压为5x,其实效果差不多-/lcdst7565_writecmd(0xf8); /boost ratio setlcdst7565_writecmd(0x01); /x4/-表格第18个命令,这个是个双字节命令,高字节为0x81,低字节可以-/-选择从0x00到0x3f。用来设置背景光对比度。-/lcdst7565_writecmd(0x81); /v0 a setlcdst7565_writecmd(0x23);/-表格第17个命令,选择调节电阻率-/lcdst7565_writecmd(0x25); /ra/rb set/-表格第16个命令,电源设置。-/lcdst7565_writecmd(0x2f);for (i=0; i100; i+);/-表格第2个命令,设置显示开始位置-/lcdst7565_writecmd(0x40); /start line/-表格第1个命令,开启显示-/lcdst7565_writecmd(0xaf); / display onfor (i=0; i100; i+);/* 函数名 : lcd12864_clearscreen* 函数功能 : 清屏12864* 输入 : 无* 输出 : 无*/void lcd12864_clearscreen(void)uchari, j;for(i=0; i8; i+)/-表格第3个命令,设置y的坐标-/-y轴有64个,一个坐标8位,也就是有8个坐标-/所以一般我们使用的也就是从0xb0到0x07,就够了-/lcdst7565_writecmd(0xb0+i); /-表格第4个命令,设置x坐标-/-当你的段初始化为0xa1时,x坐标从0x10,0x04到0x18,0x04,一共128位-/-当你的段初始化为0xa0时,x坐标从0x10,0x00到0x18,0x00,一共128位-/-在写入数据之后x坐标的坐标是会自动加1的,我们初始化使用0xa0所以-/-我们的x坐标从0x10,0x00开始-/lcdst7565_writecmd(0x10); lcdst7565_writecmd(0x04);/-x轴有128位,就一共刷128次,x坐标会自动加1,所以我们不用再设置坐标-/for(j=0; j 7)r

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论