AHT20传感器简单使用记录

文章分享了如何优化使用HAL库在优快云上遇到的AHT20传感器I2C通信问题,通过调整接收缓冲区长度和数据解析代码,解决了数据读取不正确的问题,提供详细的初始化和读取函数示例。

在优快云上看了很多文章都是用的模拟IIC读取的,代码太冗余了。也找到有用hal库的,但是读取出来数据不对,发现是代码有些小问题,改了之后就能用了。下面就把改好的贴在下面。

void AHT20_Init()
{
   uint8_t readbuffer;
   HAL_Delay(40);
   HAL_I2C_Master_Receive(&hi2c1,AHT20_ADDRESS ,&readbuffer, 1,100);
   if((readbuffe[0]&0x08) == 0x00)
    {
      uint8_t sendbuffer[3]={0xBE,0x08,0x00};
      HAL_I2C_Master_Transmit(&hi2c1,AHT20_ADDRESS,&readbuffer,3,100);
     }
}

void AHT20_Read(float *Temperature, float *Humidity)
{
   uint8_t sendbuff[3] = {0xAC,0x33,0x00};
   uint8_t readbuff[6];
 
   HAL_I2C_Master_Transmit(&hi2c1,AHT20_ADDRESS,sendbuff,3,100);
 
   HAL_Delay(75);
  
   HAL_I2C_Master_Receive(&hi2c1,AHT20_ADDRESS,readbuff,6,100);//这里读取长度是6个,其他文章贴的1个,读取就会有问题
 if((readbuff[0] & 0x80) == 0x00)
  {
    uint32_t data = 0;
 
    data = ((uint32_t)readbuff[3]>>4)+((uint32_t)readbuff[2]<<4)+((uint32_t)readbuff[1]<<12);
    *Humidity = data * 100.0f/ (1<<20);
    data = (((uint32_t)readbuff[3] & 0X0F)<<16)+((uint32_t)readbuff[4]<<8)+((uint32_t)readbuff[5]);
    *Temperature = (data * 200.0f)/(1<<20) - 50;
	}
}

使用方法也很简单,初始化之后直接调用读取函数就行。

	HAL_Delay(50);
	AHT20_Init();//初始化
	HAL_Delay(50);

    float temperature, humidity;
	AHT20_Read(&temperature,&humidity);//读取

### AHT10温湿度传感器的技术参数 AHT10温湿度传感器是一款集成了电容式感湿元件和高性能CMOS微处理器的传感器,具有高精度和完全校准的特点。以下是其主要技术参数: - **输入电压范围**:AHT10的工作电压范围为2.3V至3.3V,这使得它能够在多种电源条件下稳定工作[^1]。 - **温度测量范围**:AHT10的温度测量范围为-40℃至+85℃,精度为±0.5℃[^1]。 - **湿度测量范围**:湿度测量范围为0%至100%,精度为±3%RH。 - **通讯方式**:AHT10采用I2C接口进行通信,其中SCL为时钟线,SDA为数据线[^1]。 - **产品特性**:AHT10具有出厂经过标定校准的特点,产品内置温度补偿功能;支持I2C接口;采用超低功耗设计;封装形式为SMD封装;湿度精度为±3% RH(典型值);温度精度为0.5℃(典型值)[^1]。 ### AHT10温湿度传感器的适用场所 AHT10适用于多种环境监测场景,包括但不限于暖通空调、除湿器检测设备自动控制、数据记录器、气象站、家电医疗等领域[^1]。 ### AHT10与AHT20对比 虽然AHT10已经具备了诸多优点,但新一代的AHT20在尺寸和智能化设计上进一步优化,采用适合回流焊的双列扁平无引脚SMD封装,底部尺寸为3 x 3mm,高度仅为1.0mm。AHT20同样支持数字信号输出,采用标准的I2C格式,并且在恶劣环境下表现出更稳定的性能和更高的可靠性[^2]。 ### 编程示例 为了更好地理解和使用AHT10,可以通过编写简单的I2C通信代码来读取温湿度数据。以下是一个基于Python的伪代码示例: ```python # 初始化I2C通信 def init_i2c(): # 初始化代码 pass # 读取温湿度数据 def read_temperature_humidity(): # 发送读取命令 # 接收数据 # 解析数据 return temperature, humidity # 主函数 def main(): init_i2c() while True: temp, hum = read_temperature_humidity() print(f"Temperature: {temp}°C, Humidity: {hum}%RH") # 延时一段时间 time.sleep(1) if __name__ == "__main__": main() ``` ### 相关问题 1. 如何通过I2C接口与AHT10进行通信? 2. AHT10与AHT20在性能上有何区别? 3. AHT10温湿度传感器在实际应用中的常见问题有哪些? 4. 如何校准AHT10温湿度传感器? 5. AHT10温湿度传感器的功耗是多少?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山间朝暮-CanEve

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值