一、实物图
二、原理图
为什么接上拉电阻:
因为DHT11的数据口是漏极开路,如果不接上拉电阻,则只能输出低电平和高阻态,不能输出高电平,因此需要外接上拉电阻,否则无法输出1。DHT11的工作电流约为1mA,VCC一般为5V,则电阻R=5V/1mA=5KΩ。一般3.3k~10k都可以。
三、简介
DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,内部由一个 8 位单片机控制一个电阻式感湿元件和一个 NTC 测温元件。相比于 DS18B20 只能测量温度,DHT11 既能检测温度又能检测湿度,不过 DHT11 的精度和测量范围都要低于 DS18B20,其温度测量范围为 0~50℃,误差在±2℃;湿度的测量范围为 20%~90%RH(Relative Humidity 相对湿度指空气中水汽压与饱和水汽压的百分比),误差在±5%RH。
四、通信协议及数据格式
DATA数据口用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,一次完整的数据为40bit,按照高位在前,低位在后的顺序传输。
数据格式:8bit湿度整数数据 + 8bit湿度小数数据
+ 8bit温度整数数据 + 8bit温度小数数据
+ 8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”所得结果的末8位,校验的目的是为了保证数据传输的准确性。
五、时序解析
用户MCU发送一次开始信号后, DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后, DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。从模式下, DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号, DHT11不会主动进行温湿度采集,采集数据完成后,DHT11自动切换到低速模式。
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号。主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式或者输出高电平均可,总线由上拉电阻拉高。
总线为低电平,说明DHT11发送响应信号, DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一位数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1。格式见下面图示。如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常。当最后一位数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
六、流程设计
首先初始化引脚,然后发送一次开始信号,等待DHT11响应,DHT11响应后,读取40bit数据,延时一段时候作为结束信号。获取到40bit数据后,解析数据并校验,最终得到温湿度值。