温湿度的测量原理:
温度:通过热敏电阻来检测温度,电阻值随着温度的变化而变化。
湿度: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;
}
}