STM32-温湿度传感器DHT22 | 附代码

温湿度的测量原理:

温度:通过热敏电阻来检测温度,电阻值随着温度的变化而变化。

湿度:DHT22 通过测量空气中的水分含量,利用电容变化来检测湿度。湿度的变化会导致电容值的变化,传感器将其转换为数字信号。

【注】:DHT11的湿度也是通过电阻来测量的。

结构:DHT22 内部包括一个温湿度感应元件和一个用于处理数据的电路模块。它使用电容式湿度感应和热敏电阻来测量温度和湿度。

void THI_ReadData(float *temp,float *humi)    
{        
    if(!thiStr.enable)  //传感器未使能
        return;
    
 	uint8_t buf[5];       // 用于存储从传感器读取的数据
	uint8_t i;            // 循环索引
	uint8_t sum;          // 用于校验
    
	*humi=0;              // 传入的湿度和温度指针指向的值初始化为 0
	*temp=0;              //
	THI_Reset();
	if(THI_Check()==0)    // 调用 THI_Check() 函数检查传感器是否正常工作。如果返回 0,表示正常,可以继续读取数据。
	{
		for(i=0;i<5;i++)
		{
			buf[i]=THI_ReadByte();
		}
		sum = buf[0]+buf[1]+buf[2]+buf[3]; // 校验和验证
		if(sum == buf[4])
		{
			*humi=(float)((buf[0]<<8)+buf[1])/10; // 提取湿度和温度
			*temp=(float)((buf[2]<<8)+buf[3])/10;
		}
		else
		{
			*humi=(float)((buf[0]<<8)+buf[1])/10; // 处理校验失败的情况
			*temp=(float)((buf[2]<<8)+buf[3])/10;
		}
	}
	else //自检失败
	{
		return;
	}
	    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值