跳到主要内容

【I²C总线】AHT20温湿度传感器

下载例程代码: 下载代码 如何使用例程【点击查看教程】

AHT20温湿度传感器(I2C_AHT20)

通过I²C读取AHT20温湿度计

板载AHT20传感器规格:(详细可参考资料包中的手册)

参数
芯片型号广州奥松 AHT20
I²C地址0x70
温度范围-40 ~ 85 ℃
温度误差± 0.3 ℃
温度分辨率0.01 ℃
湿度范围0 ~ 100 %RH
湿度误差± 2 %RH
湿度分辨率0.024 %RH

学习板上的AHT20传感器:

正面照

如何使用例程

  • 编译并下载程序到学习板

  • 使用配套TYPE-C数据线,将学习板连接到计算机

连接usb线
串口

例程讲解

下面介绍了如何自己实现该例程的功能

1、工程配置

  • 打开I²C外设:Pinout&Configuration -> Connectivity -> I2C1,将I2C模式选择为I2C

  • 打开串口2外设:Pinout&Configuration -> Connectivity -> USART2,将Mode选择为Asynchronous

  • 配置工程:在Project Manager -> Code Generator页面中,勾选Generate peripheral initialization as ... per peripheral

  • 启用float打印:在cubeIDE菜单栏中,Project Properties -> C/C++ Build -> Settings -> Tool Settings -> MCU Settings,勾选Use float with printf ... -nano

    默认情况下,sprintf函数不能打印小数。因此我们需要配置一下编译器,使其能够打印小数

2、代码

(1) 初始化过程

  • 拷贝库文件:将aht20.c文件拷贝到Core -> Src目录下,将aht20.h文件拷贝到Core -> Inc目录下。

  • 在main.c中添加include:aht20.h

  • 引用头文件:需要使用 sprintf 打印输出,在 main.c 引用头文件:

    #include "stdio.h"
    #include "string.h"
  • 初始化AHT20:

    // 初始化AHT20
    AHT20_Init();

(2) 读取数据

AHT20_Read(float *Temperature, float *Humidity)
  • 预先定义两个float类型的变量,将指针传入该函数,用于接收读取结果

  • 建议读取间隔大于500毫秒

3、AHT20与DHT20、DHT11的区别

三种型号都是广州奥松的温湿度传感器,他们的主要区别如下

  • AHT20 vs DHT20

    • AHT20、DHT20在程序上通用,可以相互替代

    • AHT20是贴片封装,DHT系列是插针封装

    • AHT20精度比DHT20稍高一些

  • DHT20 vs DHT11

    • DHT20、AHT20 是DHT11的全新升级产品,提升了精度、响应时间、测量范围、稳定性,不推荐使用老产品。

    • DHT20是标准的I²C通信,DHT11是单总线通信

DHT20 内部结构:

DHT20

故障排除

工程建立和配置