跳到主要内容

【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中添加includeaht20.h

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

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

    // 初始化AHT20
    AHT20_Init();

(2) 读取数据

AHT20_Read(float *Temperature, float *Humidity)

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

提示

建议读取间隔大于500毫秒

AHT20与DHT20、DHT11的区别

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

对比项目AHT20DHT20DHT11
通用与 DHT20 通用与 AHT20 通用不通用
体积微型贴片插针插针
精度最高低于 AHT20最低
定位是 DHT11 的升级老产品
通信标准 I²C标准 I²C单总线

DHT20 内部结构:

DHT20

故障排除

工程建立和配置