DHT11是一种数字温度湿度传感器,由湿度传感器和NTC温度传感器组成。DHT11可以在一个单一的数字引脚上提供湿度和温度测量值,这个引脚使用单总线串行通信方式进行数据传输。DHT11的采集精度为±5%RH,±2℃,功耗低,体积小,价格低廉。
DHT11采用单总线串行通信方式传输数据,采用一个引脚同时进行输入和输出,在传输数据的时候要通过特定的信号格式来进行数据传输。DHT11传输的数据分为40位,其中前5位为定时器握手信号,后面的8位是湿度值,16位是温度值,8位为校验和。
第一步:主机需要向DHT11发送启动信号,主机发送一个低电平信号,持续18ms以上,然后主机将引脚拉高等待DHT11的响应;
第二步:DHT11接收到主机的启动信号后,DHT11会回应一个低电平信号,为信号准备,持续80us,然后DHT11将引脚拉高,进入数据传输阶段;
第三步:DHT11每次都会传输40位二进制数据,每个数据位的长度为50us,高电平信号表示逻辑1,低电平信号表示逻辑0。DHT11传输的数据的次序是先湿度高8位,湿度低8位,温度高8位,温度低8位,最后是校验和;
第四步:数据传输完毕后,DHT11将引脚拉高,进入释放态,最小持续时间为50us,等主机对数据进行接收和处理。
由于DHT11采用单总线串行通信方式进行数据传输,数据传输和引脚状态转换之间时间相互依赖,因此在实际传输过程中会遇到一些问题。
假设在刚开始传输数据时,主机和DHT11的引脚电平都为高电平,但是DHT11的响应并不及时,这时主机会误认为DHT11还未响应,于是等待更长时间。这样等待时间过长,会导致主机的信号处理超时,数据传输失败。
如果在数据传输过程中,主机和DHT11引脚电平状态转换不及时,也会导致数据传输失败。例如,当主机将引脚拉高后,DHT11时间比较长才将引脚拉高,如果主机此时检测到引脚电平为低电平,则会认为DHT11响应失败,数据传输失败。
DHT11传输的是数字信号,采用单总线串行通信方式进行数据传输。DHT11通过引脚的电平变化来表示数据,主机和DHT11之间的数据传输时间间隙非常关键,不同的行为会导致数据传输失败。在使用DHT11进行数据采集时,要注意传输格式,确保主机和DHT11之间的数据传输正常,从而准确的测量温湿度数据。