基于I2C的AHT20温湿度传感器的数据采集

摘要:

本文先介绍一下对I2C学习的理解,然后用I2C实现AHT20进行温湿度采集

一、I2C简介

IC( Inter-- Integrated Circuit)总线是一种由 PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线SDA时钟SCL构成的串行总线,可发送和接收数据。
在CPU与被控I2C之间、I2C与I2C之间进行双向传送,高速IC总线一般可达400kbps以上。 I2C总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号

  • 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
  • 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结東传送数据。
  • 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接
    收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为 受控单元出现故障。

这些信号中,起始信号是必需的结束信号和应答信号,都可以不要

⭐️ stm32(正点原子)的SLC和SDA的连接如下:


二、硬件I2C与软件I2C的区别

🏳️‍🌈 硬件I2C

硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的

🏳️‍🌈 软件I2C

软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形

硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活

模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置。如果要从具体硬件上来看,可以去看下芯片手册。因为固件I2C的端口是固定的,所以会有所区别。

区分他们:

  • 可以看底层配置,比如IO口配置,如果配置了IO口的功能(IIC功能)那就是固件IIC
  • 可以看IIC写函数,看里面有木有调用现成的函数或者给某个寄存器赋值,如果有,则肯定是固件IIC功能,没有的话肯定是数据一个bit一个bit模拟发生送的,肯定用到了循环,则为模拟。
    根据代码量判断,模拟的代码量肯定比固件的要大。

三、实现I2CAHT20温湿度传感器的数据采集

1、AHT20简介

AHT20是国内奥松生成的I2C接口的MEMS温湿度传感器,ADC位数为20Bit,具有体积小、精度高、成本低等优点。

由于AHT10/15/20 具有国产化、体积小、精度高、成本低等特点,可以替代 DHT11/DHT12/AM2320/SHT20/SHT30,单芯片价格在¥2~3,体积小巧很轻松嵌入到产品上

参数如下:

AHT20
供电电压2.0-5.5V
工作电流(休眠)0.25uA
工作电流(测量)23uA
测量范围(湿度)0~100%RH
测量范围(温度)-40~+85℃
温度精度±2%RH(25℃)
湿度精度±0.3℃
分辨率温度: 0.01℃ 湿度: 0.024%RH
信号输出I²C信号
防护
封装大小3x3x1.0mm(DFN)
2、配置函数库,编写函数

参考 正点原子STM32开发板第27章 IIC实验

step0:驱动代码(官网下载),下载AHT20.c和AHT20.h,官网都有,另外最重要的还是I2C可以参考原子的代码在myiic下就是关于i2c的代码。

对于正点原子的精英版,其SCL和SDL分别对应的就是PB6和PB7,我们用普通IO口来模拟I2C的功能,来实现功能。

step1:用例程原子I2C例程,例程需要改动,这里不做详细说明了。基本函数库的基本框架不用变,因为做的串口通信,所以就不需要lcd与key的系列函数了,并且加入我们的代码。

这里你可以把上面的两个代码复制在HARDWARE问件夹下

点击manage project items 在HARDWRE下加入上面.c文件。

然后点击魔术棒,C/C++,路径添加AHT20文件夹

step2:编写主函数

1、检测AHT20是否采集到数据,如果采到就处理数据

2、根据如下两个公式

c1 = AHT20.HT[0]10010/1024/1024; //湿度
t1 = AHT20.HT[1]20010/1024/1024-500;//温度计算公式

来计算得出温度。

3、通过指示灯翻转标识正常工作

4、AHT20函数中,有定义结构体,根据结构体来得到相关值

下面是主函数:

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "usmart.h"	 
#include "24cxx.h"	 
#include "AHT20.h"
/****my code start lee***/		 	
struct m_AHT20 AHT20;
int main(void)
{
	volatile int  c1,t1;
	float c2,t2;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置中断优先级
	LED_Init();									//初始化LED
	delay_init();	    				//延时初始化
	IIC_Init();							//IIC初始化
  uart_init(115200);	 //串口初始化为115200
	AHT20.alive=!AHT20_Init();	        //AHT20初始化
 
	while(1)
	{
		if(AHT20.alive)//是否存活
		{
			//读取其原始数据
			AHT20.flag = AHT20_ReadHT(AHT20.HT);
			c1 = AHT20.HT[0]*100*10/1024/1024;  //湿度
			t1 = AHT20.HT[1]*200*10/1024/1024-500;//温度计算公式
			//结果都放大了10倍
			c2=c1/10.0;
			t2=t1/10.0;
			printf("湿度:\r\n%f\r\n",c2);
			printf("温度:\r\n%f\r\n\r\n",t2);
			//正常工作双灯翻转
			LED0=!LED0;
			LED1=!LED1;
		}
		delay_ms(2000);
		
	}
}

step3:编译连接,烧入程序

硬件如下

分别对应

SCL–>PB6

SDA–>PB7

共地

给3.3V电

4、最终结果展示

四、总结

这次的学习我了解了什么是硬件I2C什么是软件I2C,通过对AHT20的配置与实验更加了解了如何使用I2C。获益匪浅。

参考

https://blog.csdn.net/weixin_42048417/article/details/80683556

http://www.aosong.com/products-61.html

https://zhidao.baidu.com/question/693765215942559364.html

https://blog.csdn.net/toopoo/article/details/80053929

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: AHT10是一种湿度传感器,它可以测量环境中的度和湿度。它可以用于各种应用,如室控制、恒恒湿环境监控、工业过程控制等。AHT10拥有高精度和高稳定性,并且可以在极端度条件下工作。此外,AHT10还有一个I2C接口,可以与其他电子设备相连,方便数据采集和处理。 ### 回答2: AHT10湿度传感器是一种高精度的数字湿度传感器,采用了先进的CMOSens®技术。它可以测量度和湿度,并将结果以数字形式输出。AHT10具有很高的精确度和稳定性,能够提供可靠的湿度测量结果。 AHT10传感器的特点之一是其小巧的封装和低功耗设计。它采用超薄的封装,适用于空间有限的应用场景,例如智能手机、电子设备等。同时,AHT10传感器的功耗非常低,可以在长时间使用的情况下保持高精度的湿度测量。 此外,AHT10传感器还具有很好的抗干扰能力和快速的响应时间。它采用数字传感技术,能够有效抵抗电磁干扰和度梯度变化对湿度测量的影响,确保测量结果的准确性和稳定性。同时,AHT10传感器响应时间快,能够迅速对环境的湿度变化做出反应。 除了以上特点,AHT10传感器还具有多种应用领域。它可以应用于室内环境监测、气象观测、湿度控制等领域。在智能家居领域,AHT10传感器可以与其他智能设备进行连接,实现智能湿度控制和环境监测。在农业领域,AHT10传感器可以应用于室监测和农作物生长环境控制,提高农作物产量和质量。 总的来说,AHT10湿度传感器是一种高精度、稳定性好、功耗低的数字湿度传感器。它具有多种应用领域,能够满足不同场景的湿度测量需求。 ### 回答3: AHT10湿度传感器是一种具有高精度和可靠性的传感器,用于测量环境中的度和湿度。它具有很多特点和优势,以下是对AHT10湿度传感器的回答。 首先,AHT10湿度传感器采用表面贴装技术,可以方便地集成到各种设备和系统中。它的体积小、重量轻,适合于嵌入式应用和对空间有要求的领域。它还具有超低功耗,在节能环保方面具有较大优势。 其次,AHT10湿度传感器具有高度的精确度和稳定性。它采用了先进的湿度校准算法和数字信号处理技术,可以实时准确地测量和反馈环境中的度和湿度数据。同时,它还具有较低的误差和漂移,保证了传感器的可靠性和长期稳定性。 另外,AHT10湿度传感器具有广泛的应用领域。它可以被应用于气象观测、环境监测、空调系统、智能家居等领域。无论是工业生产还是日常生活,AHT10湿度传感器都能够提供准确的湿度数据,帮助我们更好地了解和控制环境条件。 总结起来,AHT10湿度传感器是一种功能强大、高精度和可靠性的传感器。它的小体积、超低功耗使得它在嵌入式应用和对空间有要求的领域具有较大优势。它的高度精确度、稳定性和广泛的应用领域使得它成为了湿度测量领域的重要组成部分。无论是在工业生产还是日常生活中,AHT10湿度传感器都能够为我们提供准确的环境湿度数据,帮助我们更好地了解和控制环境条件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值