HR202湿敏电阻总结与程序整理

来源:https://www.amobbs.com/thread-5561786-1-1.html?_dsign=d5a64904 

第一部分 

 

 

 

 

来源:https://www.amobbs.com/thread-5561786-1-1.html?_dsign=d5a64904

第二部分

#include 'SystemInit.h'
#include 'ADC.h'
#include 'Delay.h'
#include 'math.h'
unsigned char humidity(unsigned char tp)
{
float xdata voltage,hr202_r;
float xdata humidity;
voltage=ADC0_conver(0);
hr202_r=333*voltage/(1.370435-voltage);
if(tp>32)
{
if(tp>42)
{
if(tp>52)
{
if(tp>57)//58,59,60
{
humidity=-0.0772*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.7654*log(hr202_r)*log(hr202_r)-19.4763*log(hr202_r)+95.8524;
}
else//53,54,55,56,57
{
humidity=-0.0329*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.2334*log(hr202_r)*log(hr202_r)-17.807*log(hr202_r)+96.2048;
}
}
else
{
if(tp>47)//48,49,50,51,52
{
humidity=-0.0481*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.3541*log(hr202_r)*log(hr202_r)-17.9649*log(hr202_r)+97.8534;
}
else//43,44,45,46,47
{
humidity=-0.0582*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.4489*log(hr202_r)*log(hr202_r)-18.2932*log(hr202_r)+100.2677;
}
}
}
else
{
if(tp>37)//38,39,40,41,42
{
humidity=-0.0707*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.624*log(hr202_r)*log(hr202_r)-18.9898*log(hr202_r)+102.8252;
}
else//33,34,35,36,37
{
humidity=-0.0904*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.8378*log(hr202_r)*log(hr202_r)-19.4935*log(hr202_r)+104.6549;
}
}
}
else
{
if(tp>12)
{
if(tp>22)
{
if(tp>27)//28,29,30,31,32
{
humidity=-0.0761*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.6564*log(hr202_r)*log(hr202_r)-18.916*log(hr202_r)+106.2522;
}
else//23,24,25,26,27
{
humidity=-0.0709*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.56*log(hr202_r)*log(hr202_r)-18.4088*log(hr202_r)+107.6625;
}
}
else
{
if(tp>17)//18,19,20,21,22
{
humidity=-0.0728*log(hr202_r)*log(hr202_r)*log(hr202_r)+1.5919*log(hr202_r)*log(hr202_r)-18.6313*log(hr202_r)+110.4371;
}
else//13,14,15,16,17
{
humidity=0.4834*log(hr202_r)*log(hr202_r)-13.751*log(hr202_r)+106.816;
}
}
}
else
{
if(tp>2)
{
if(tp>7)//8,9,10,11,12
{
humidity=0.5149*log(hr202_r)*log(hr202_r)-14.0457*log(hr202_r)+109.7371;
}
else//3,4,5,6,7
{
humidity=0.4746*log(hr202_r)*log(hr202_r)-13.6355*log(hr202_r)+111.0428;
}
}
else//0,1,2
{
humidity=0.5167*log(hr202_r)*log(hr202_r)-14.1712*log(hr202_r)+115.1111;
}
}
}
return humidity;
// humidity=69.292-0.11094*tp-0.017414*hr202_r-0.0013279*tp*tp-0.00020088*tp*hr202_r+0.0000016633*hr202_r*hr202_r;
}
main()
{
Init();
ADC_init(0);
delay_ms(1);
humidity(25);
for(;;);
}

来源:http://www.51hei.com/mcu/3862.html

第三部分

#include"reg52.h"
#include "typedef.h"
#include "LCD1602.H"

sbit hr202 = P1^3;
sbit ref = P1^4;
sbit test = P1^5;

unsigned long time0int = 0;
unsigned long time_ref = 0;    //精确到us
unsigned long time_hr = 0;
unsigned int res_hr;
unsigned char humidity = 0;

void res2humidity(unsigned int res);

void Time0_Init()
{
 TMOD = 0X01;
 TH0 = (65536-50000)/256;
 TL0 = (65536-50000)%6;
 ET0 = 1;
 EA = 1;
}


void main()
{
 Lcd_Init();
 Write_String(0x80,"humidity:");
 Time0_Init();
 while(1)
 {
  P1M1 = 0X00;
  test = 0;//都设置为0,让电容放点
  hr202 = 0;
  ref = 0;
  delayms(10);
  //标准电阻充电
  P1M1 = 0X28; //高阻输入
  ref = 1;
  TR0 = 1;//start time0
  while(!test);
  TR0 = 0;//STOP
  time_ref = 50000*time0int + (TH0*256+TL0);//精确到us
  TH0 = (65536-50000)/256;
  TL0 = (65536-50000)%6;
  time0int = 0;
  //放电
  P1M1 = 0X00;
  test = 0;//都设置为0,让电容放点
  hr202 = 0;
  ref = 0;
  delayms(10);

  //hr202充电
  P1M1 = 0X30;
  hr202 = 1;
  TR0 = 1;
  while(!test);
  TR0 = 0;
  time_hr = 50000*time0int + (TH0*256+TL0);//精确到us
  TH0 = (65536-50000)/256;
  TL0 = (65536-50000)%6;
  time0int = 0;
 
  //计算hr202电阻
  res_hr = time_hr*100/time_ref;     //结果扩大了10倍
  res2humidity(res_hr);
  Write_Char(0xc0,humidity/10+48);
  Write_Char(0xc1,humidity+48);
 }
}

//查表函数
void res2humidity(unsigned int res)
{
  unsigned char humidity10 = 0; //十位
  unsigned char humidity1 = 0;//个位
  if((res>28)&&(res<50000))//湿度范围在20%~90%之间
  {
    if((res>28)&&(res<40))
    {humidity10 = 8;humidity1 = 10 - (res-28)*0.4;}    //按直线关系处理 数据不是太准确
    if((res>40)&&(res<57))
    {humidity10 = 8;humidity1 = 5 - (res-40)*0.29;}
    if((res>57)&&(res<84))
    {humidity10 = 7;humidity1 = 10 - (res-57)*0.185;}
    if((res>84)&&(res<130))
    {humidity10 = 7;humidity1 = 5 - (res-84)*0.11;}
    if((res>130)&&(res<195))
    {humidity10 = 6;humidity1 = 10 - (res-130)*0.076;}
    if((res>195)&&(res<310))
    {humidity10 = 6;humidity1 = 5 - (res-195)*0.043;}
    if((res>310)&&(res<490))
    {humidity10 = 5;humidity1 = 10 - (res-310)*0.027;}
    if((res>490)&&(res<870))
    {humidity10 = 5;humidity1 = 5 - (res-490)*0.0131;}
    if((res>870)&&(res<1600))
    {humidity10 = 4;humidity1 = 10 - (res-870)*0.0068;}
    if((res>1600)&&(res<3100))
    {humidity10 = 4;humidity1 = 5 - (res/100-16)*0.33;}
    if((res>3100)&&(res<6300))
    {humidity10 = 3;humidity1 = 10 - (res/100-31)*0.156;}
    if((res>6300)&&(res<13000))
    {humidity10 = 3;humidity1 = 5 - (res/100-63)*0.07;}
    if((res>13000)&&(res<26000))
    {humidity10 = 2;humidity1 = 10 - (res/1000-13)*0.38;}
    if((res>26000)&&(res<5000))
    {humidity10 = 2;humidity1 = 5 - (res/1000-26)*0.208;}
  }
  humidity = humidity10*10+humidity1;
}
void time0_ser() interrupt 1
{
 time0int++;
 TH0 = (65536-50000)/256;
 TL0 = (65536-50000)%6;
}

 

### 回答1: 湿敏电阻HR202L是一种用于湿度测量的传感器。在编写程序时,首先需要引入所使用的库文件。由于HR202L是一个模拟传感器,需要通过模拟输入引脚来读取湿度值。因此,需要连接传感器的模拟输出引脚到单片机的模拟输入引脚。 接下来,需要在程序中配置相应的引脚作为输入和输出模式。通过设置模拟输入引脚为输入模式,可以读取传感器输出的模拟信号。然后,使用模拟输入引脚的读取函数,读取传感器输出的模拟值。 传感器输出的模拟信号需要进行转换,才能得到真实的湿度值。这通常可以通过使用一定的公式来进行计算。根据传感器的数据手册,可以得到湿度转换公式。在程序中,可以通过将读取到的模拟值代入公式,计算并得到湿度值。 最后,可以通过串口或其他方式将湿度值输出到终端设备,或者通过其他方式进行处理。在程序中,可以使用串口输出函数,将湿度值发送到串口终端。 综上所述,湿敏电阻HR202L程序主要包括引入库文件、配置引脚模式、读取模拟信号、转换湿度值和输出湿度值。编写程序前需要仔细阅读HR202L的数据手册,了解其工作原理和相关参数,并按照手册中的要求进行程序设计和开发。 ### 回答2: 湿敏电阻HR202L程序是一种用于检测环境湿度的程序湿敏电阻HR202L是一种基于电阻变化的传感器,它能够根据周围湿度的变化来改变其电阻值。 在编写湿敏电阻HR202L程序时,首先需要连接电阻单片机。可以通过连接器将电阻单片机的模拟输入引脚相连。接下来,需要在程序中初始化单片机的模拟输入引脚,并设置适当的引脚为输入模式。 然后,使用模拟转换功能来读取湿敏电阻电阻值。这可以通过调用单片机的ADC(模拟数字转换)函数来实现。ADC函数将返回一个数字值,表示湿敏电阻电阻值。根据具体的单片机型号和开发环境,ADC函数的调用方式可能会有所不同。 接着,需要将从湿敏电阻读取到的电阻值转换为湿度值。由于湿敏电阻电阻值与湿度呈线性关系,可以使用适当的公式或查找表将电阻值转换为湿度值。这个公式或查找表可以根据湿敏电阻的特性手动调整。 最后,将湿度值输出到显示器或其他设备上。可以通过调用单片机的串口输出函数或其他输出函数来实现这一步骤。具体的输出方式也取决于单片机型号和开发环境。 总之,湿敏电阻HR202L程序需要通过模拟转换读取电阻值,将其转换为湿度值,并最后输出到合适的设备上。编写这个程序需要熟悉单片机的相关功能和编程语言,并根据具体的硬件和需求进行相应的设置和调整。 ### 回答3: 湿敏电阻HR202L是一种环境湿度传感器,可以用于测量周围环境的湿度。下面是使用HR202L的基本程序示例。 首先,我们需要将HR202L传感器连接到微控制器。HR202L传感器有三个引脚:VCC(供电正极)、GND(地)和OUT(输出)。将VCC引脚连接到微控制器的电源引脚,将GND引脚连接到微控制器的地引脚,将OUT引脚连接到微控制器的模拟输入引脚。 然后,在程序中配置模拟输入引脚为输入模式,并设置其他必要的引脚。接着,我们需要读取模拟输入引脚的电压值。 HR202L的输出电压与环境湿度呈线性关系。通过将模拟输入的电压值与已知湿度下的电压值进行比较,我们可以计算出当前环境湿度的近似值。 例如,假设我们已知在50%湿度下,HR202L的输出电压为2.5V。如果我们读取模拟输入引脚的电压为2V,则可以通过线性插值计算出当前环境湿度的近似值为40%。 最后,我们可以使用计算得到的湿度值进行其他操作,例如在LCD显示屏上显示当前湿度,或者触发警报系统。 需要注意的是,湿敏电阻HR202L的精度可能受到温度和供电电压的影响。为了获得更准确的湿度测量结果,我们可以在程序中考虑校准算法,以校正由于这些因素引起的误差。 总结来说,湿敏电阻HR202L程序的基本步骤包括连接硬件、读取模拟输入电压、计算湿度值,并根据需求进行进一步操作。通过这个程序,我们可以方便地测量周围环境的湿度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值