资讯详情

STM32CubeMX | SGP30:基于STM32使用HAL库对空气质量传感器进行驱动(硬件II2+模拟IIC)

SGP30:基于STM32使用HAL库驱动空气质量传感器(硬件)II2 模拟IIC)


目录

  • SGP30:基于STM32使用HAL库驱动空气质量传感器(硬件)II2 模拟IIC)
      • (1)实物传感器
      • (2)传感器参数
      • (3)传感器接口
      • (4)STM32工程配置
      • (5)编写代码



(1)实物传感器

官方技术手册:https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/9_Gas_Sensors/Datasheets/Sensirion_Gas_Sensors_Datasheet_SGP30.pdf

实物图: 模块图:


(2)传感器参数

SGP30是一种金属氧化物室内气体传感器,在单个芯片上有多个传感元件,集成了四个气体传感元件,具有完全校准的空气质量输出信号,主要检测空气质量。可输出:

  • TVOC(Total Volatile Organic Compounds,总挥发性有机物),量程为0~60000ppb;
  • CO2浓度,量程400~60000ppm。

另外注意:

  • SGP在初始化阶段,30模块需要一定的时间来初始化和读取CO2浓度为400ppm,TVOC为0ppd且恒定不变。因此上电后一直读直到TVOC不为0并且CO2不为400,SGP30模块刚刚初始化。
  • 初始化完成后,数据会波动很大,这是正常现象,一段时间后会逐渐稳定。
  • 气体传感器易受环境影响,测量数据波动正常,可添加滤波函数进行滤波。

(3)传感器接口

SGP30传感器使用IIC接口,主要注意IIC最大频率不超过400kHz:

IIC从机地址是0X58.因为地址只用了7bit,最高水平不使用,最低水平是判断是读还是写,0是读,1是写,所以:

  • 对于写SGP30时候,地址为(0X58 << 1) = 0XB0
  • 对于读SGP30时,地址为(0X58 << 1)) | 0X01 = 0XB1

SGP30命令均为双字节,先发高位,有以下命令: 以初始化SGP30命令(0X2003)为例,IIC发送的数据为:0XB0、0X20、0X03

除上述命令外,还有两个命令,一个是软件复位,另一个是读取串号。


(4)STM32工程配置

我在这里用的是STM32F103RBT6这款单片机主频72M,使用IIC接口2。


(5)编写代码

我在代码中实现了硬件IIC和软件IIC我通过宏定义切换实现了这一切:

移植主要是实现这两者IIC读写函数:

软件复位: 模块初始化: 读取TVOC和CO2:

读取串号:


ends…

标签: ii5919传感器传感器ppdppd传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台