《STM32》——一线协议之DHT11温湿度采样

      最后更新:2022-06-20 05:37:11 手机定位技术交流文章

      文章目录

      • DHT11传感器的介绍
        • 1.介绍1DHT11
        • 2DHT11的工作原理
        • 1.3DHT11通信时间序列
          • 数据总时序
          • 主机发送起始信号
          • 从机应答信号
          • 高低电平的表示
          • 数据传输
      • DHT11温度和湿度采样的实施
        • 2.1接口说明:
        • 2.2编译DHT11源文件

      DHT11传感器的介绍

      1.介绍1DHT11

      DHT11温度湿度传感器是一种具有校正数字信号输出的温度湿度传感器,传感器包括耐湿度传感器和NTC温度传感器,它连接到一个高性能8位单片机。如下图所示,这些都是内置的过载阻尼器,你不需要在使用时重新连接拖拉阻尼器。
      在这里插入图片描述

      2DHT11的工作原理

      DHT11次,单车通信。单一的巴士只是一个数据线,换句话说,上面的图案,主机的DHT11数据交换和控制由一个总线进行。单个总线通常需要大约5.1kΩ的负载电阻输出,使得总线闲置时,其状态为高电平。因为它们是主结构,只有当主机调用机器时,从机才能应答,因此,所有主机访问设备必须严格遵循单一总线序列,如果序列混乱,器件将不响应主机。原则图如下: 注意,NC参数不被接受。DHT11的电源电压为3—5.5V。传感器上电后,等待1s变得更加不稳定并不需要在此期间发送任何指示。电源引脚(VDD,在ND之间可增加100nF的容量,用以去耦滤波。

      在这里插入图片描述

      1.3DHT11通信时间序列

      数据总时序

      单个STM32芯片发送启动信号后,DHT11将从低功率模式转换为 tell模式,而主机则发送响应信号并发送五字节的采样数据,结束采集任务。
      在这里插入图片描述

      主机发送起始信号

      DHT11的out(data)参数连接单芯片GPIO参数,公共汽车的自由状态是高压水平,主机GPIO把总线拉低(>=18ms),以保证DHT11能检测到起始信号,继续等20~40秒,切换到输入模式,等待并读取DHT11响应。

      从机应答信号

      在接收主机的初始信号后,DHT11等待主机发送初始信号到端部,然后向主机发送80us低压响应信号,然后拖延总线到80us,并告诉主机发送数据。

      高低电平的表示

      我们需要知道的是,主机与接收机之间的通信的基本单元是位数,0和1,8个位为一字节,一个节点可以代表一个字符.那么你如何表达0和1的数目?在这里,数据的每个比特都以50秒的低功率间隔开始,高压水平的长度和宽度决定数据点是0还是1,格式见下图。如果主机将响应信号读到高压水平,注意DHT11没有响应,检查线路是否正常。当最后一个数据被传输时,DHT11拉低巴士50us,随后,巴士通过提高过载阻尼器进入闲置状态。

      数字0信号表示方法:50us低级+26~28us高级
      在这里插入图片描述
      数字1信号表示方法:50us低级+70us高级
      在这里插入图片描述

      数据传输

      在传输数据时,DHT11只传输四字节温度湿度数据和一字节数据校正一次。 数据格式为:1B湿度整数数据+1B湿度子集数据+1B温度子集数据+1B校正。
      一次完整的数据传输是40位,高位预输出:MSB,即大端序列,高位存储在低地址。
      正确的数据传输和校正等于“1B湿度整数数据 + 1B湿度小数据 + 1B温度小数据”的结果最后8位。

      DHT11温度和湿度采样的实施

      2.1接口说明:

      DHT11传感器的工作电压范围为3~5.5V,所以3.3V和5V可以做,此外,DHT11的I/O端口放在一个单片机上的GPIO管(当我在这里时,PA5)的顶部。DHT11传感器没有内置阻尼器,当连接线长度低于20米时,建议在5k上引出电阻,如果超过20米, 根据实际情况使用适当的拉力阻力。注:如果传感器有S的指针,则表示信号引脚。
      在这里插入图片描述
      硬件连接如下
      在这里插入图片描述在这里插入图片描述

      2.2编译DHT11源文件

      为DHT11温度和湿度传感器创建驱动源 filedht11
      在这里插入图片描述
      dht11.c文件

      dht11.h文件

      该h文件需要在main()中添加的代码

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27778.html

          热门文章

          文章分类