概要[Abstract]DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
实现功能:
此模块实现基于dht11传感器的温湿度数据读取。
实现原理:
DHT11模块一共三个引脚:电源、地、双向数据线DATA。DHT11有主从之分,这里我们用FPGA作为主机,DHT11模块作为从机。下面是DHT11模块的启动时序:第一步,模块上电后至少等待1S的时间,目的是越过不稳定期;第二步,发送起始信号,起始信号是一个不低于18ms的低电平信号,发送完这个开始信号以后,总线控制权交给DHT11;第三步,DHT发出响应信号,DHT11会先拉低总线80us,然后再拉高80us,FPGA主机直接检测上升沿和下降沿即可;第四步,在DHT响应过后开始传输数据。
DHT11数据传输相较于一般串行传输有点特殊:某一时刻其向主机发送的串行数据是1还是0取决于高电平维持的时间长短。具体是DHT11先拉低总线50us,然后拉高总线,如果拉高的时间在26us-28us之间,则表示这个bit位为0;如果拉高的时间在70us,则表示这个bit位为1。
我们可以检测每一次DHT总线的上升沿,在这个上升沿后接着开始计时,计到30us停止,这时去检测总线上的值是0还是1,如果是0则表明总线已经被拉低,这个bit位为0,而如果是1则这个bit位为1。
下图截取自模块源码的一部分,us\_cnt正是用于检测总线高电平持续时间的计数器,使用时,参数值不一定是60,根据不同的输入时钟频率决定if语句里面参数的值,使之计数时间为30us左右即可。