DHT22使用笔记

我的未来我决定 提交于 2019-12-13 00:47:40

线上DHT22与DHT11的性能对比:
DHT11:

å¨è¿éæå¥å¾çæè¿°
DHT22:

å¨è¿éæå¥å¾çæè¿°
对比可以发现,DHT22在分辨率和精度上都有很大的提升。

同时采样率也变成了每秒2次。

å¨è¿éæå¥å¾çæè¿°
而且最重要的在于,通讯开始信号仅需要500us,与18us相差了接近20倍!
虽然获取的是上1次的的值,但是如果1秒采样两次,和11的同步性能是一样的。

å¨è¿éæå¥å¾çæè¿°
由于精度提高,所以数据格式还是有变化的,相比于DHT11只用了整数部分,22的数据是全部用了的,直接是16bit数据,换算成16进制再乘以0.1就是实际的温度值和湿度值。

å¨è¿éæå¥å¾çæè¿°
这里为了得到和DHT11相同的结果,我舍去小数值,同时复位时间也改成500us,代码如下:

void DHT11_Rst(void)       
{                 
    DHT11_IO_OUT();     //SET OUTPUT
      DHT11_DQ_OUT=0;     //拉低DQ
      delay_us(500);    //拉低至少18ms
      DHT11_DQ_OUT=1;     //DQ=1 
    delay_us(30);     //主机拉高20~40us
}

u8 DHT11_Read_Data(u8 *temp,u8 *humi)    
{        
     u8 buf[5];
    u8 i;
    DHT11_Rst();
    if(DHT11_Check()==0)
    {
        for(i=0;i<5;i++)//读取40位数据
        {
            buf[i]=DHT11_Read_Byte();
        }
        if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
        {
            *humi=(buf[0]*256+buf[1])/10;
            *temp=(buf[2]*256+buf[3])/10;
        }
    }else return 1;
    return 0;        
}

显示结果如下:

using time:    4639 us    temperature:25    humidity:58
using time:    4686 us    temperature:25    humidity:58
using time:    4638 us    temperature:25    humidity:58
using time:    4638 us    temperature:25    humidity:58
using time:    4638 us    temperature:25    humidity:58
using time:    4639 us    temperature:25    humidity:58
using time:    4662 us    temperature:25    humidity:58
using time:    4637 us    temperature:25    humidity:58
using time:    4686 us    temperature:25    humidity:58
using time:    4732 us    temperature:25    humidity:58
using time:    4733 us    temperature:25    humidity:58
using time:    4734 us    temperature:25    humidity:58
using time:    4733 us    temperature:25    humidity:58
using time:    4733 us    temperature:25    humidity:58
using time:    4765 us    temperature:25    humidity:58
using time:    4637 us    temperature:25    humidity:58
using time:    4638 us    temperature:25    humidity:58
using time:    4638 us    temperature:25    humidity:58
using time:    4638 us    temperature:25    humidity:58
using time:    4639 us    temperature:25    humidity:58
using time:    4734 us    temperature:25    humidity:58
using time:    4733 us    temperature:25    humidity:58
using time:    4670 us    temperature:25    humidity:58
using time:    4686 us    temperature:25    humidity:58
using time:    4638 us    temperature:25    humidity:58

不到5ms时间就能完成采样,可以用于大部分对时序严格的通讯场合。
————————————————
版权声明:本文为CSDN博主「小盼你最萌哒」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27508477/article/details/83662194

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!