DHT11时序(下)
扫描二维码
随时随地手机看文章
数据传输的时序还存在严格的顺序约定:40位数据按“湿度整数(8位)→湿度小数(8位)→温度整数(8位)→温度小数(8位)→校验和(8位)”的顺序传输,且每个字节内部按“最高位(MSB)→最低位(LSB)”的顺序逐位发送。例如,传输湿度整数“37%RH”(二进制00100101)时,传感器会先发送最高位“0”,再依次发送后续7位,直至最低位“1”。主机需连续捕获40个数据位的时序信号,逐一解析为字节数据,再通过校验和验证完整性——校验和为前四个字节的累加和取低8位,若计算结果与接收的校验和一致,则数据有效;若不一致,则需重新发起测量。
DHT11的时序还存在两个重要的约束条件:一是测量周期,传感器完成一次温湿度采集与数据传输后,需进入至少1秒的休眠期,期间不响应新的启动信号,若主机频繁发起通信(间隔小于1秒),传感器会因内部AD转换未完成而拒绝应答;二是电平切换的稳定性,总线电平从低到高的恢复速度,受上拉电阻阻值和布线电容影响——阻值过大(如超过10kΩ)会导致电平恢复缓慢,延长时序误差;布线过长(超过2米)或靠近强干扰源,会导致电平跳变出现毛刺,干扰时序判断。因此,实际应用中需搭配0.1μF的电源去耦电容,减少电源噪声对时序的影响,同时控制DATA线长度,必要时采用屏蔽线。
时序控制的实现方式直接影响通信可靠性。对于资源丰富的MCU(如STM32、Arduino),可通过硬件定时器捕获电平跳变沿,精准计算时长,避免软件延时的不稳定性;对于8位51单片机等资源有限的平台,需通过汇编指令或循环计数校准微秒级延时,例如用空指令循环实现26μs的低电平检测,确保计时误差控制在±10%以内(DHT11允许的最大时序误差)。常见的时序故障排查,也围绕这些细节展开:若启动信号拉低不足18ms,会导致无应答;若数据位高电平测量偏差超过10μs,会导致“0”“1”误判;若未等待1秒测量周期,会导致数据重复或错误。
从主机启动信号的18ms低电平,到传感器应答的两段80μs电平,再到数据位的脉冲宽度编码,每一个参数都服务于“无时钟线的双向通信”。其时序设计虽不及DS18B20严苛,但仍需精准控制——正是这种“简化硬件、严格时序”的设计思路,让DHT11在低成本场景中实现了可靠的温湿度传输。无论是入门级开发还是量产产品设计,把握时序的核心参数与约束条件,都是确保传感器稳定工作的关键。





