CCS811 空气质量传感器:设计应用全解析

电子说

1.4w人已加入

描述

CCS811 空气质量传感器:设计应用全解析

在当今对空气质量关注度日益提升的时代,空气质量传感器成为众多应用的关键组件。今天我们要深入探讨的 CCS811 空气质量传感器,以其出色的性能和丰富的功能,在空气检测领域占据重要地位。

文件下载:SEN0339.pdf

一、CCS811 传感器概述

CCS811 空气质量传感器能够精准测量 eCO2(等效二氧化碳)和 TVOC(总挥发性有机化合物)的密度。它采用了 AMS 独特的微热板技术,相比传统气体传感器,具有显著优势。功耗更低,加热速度更快,体积也更小。内部集成的 ADC 和 MCU 能够完成数据的采集、计算,并通过 IIC 接口返回结果。该传感器还支持浓度报警功能,当被测物质浓度超过用户设定的阈值时,会触发报警。

1. 多种工作模式

CCS811 支持多种工作模式,如每秒检测一次、每 10 秒检测一次、每分钟检测一次、每 250 毫秒检测一次以及睡眠模式。这些模式针对传感器测量过程中的低功耗进行了优化,非常适合便携式应用。不过需要注意的是,该芯片在 IIC 通信中会拉伸时钟,因此与某些控制器(如树莓派)不兼容。

2. 对人体的影响

了解二氧化碳和 TVOC 浓度对人体的影响至关重要。下面是不同浓度下这些物质对人体影响的表格: 二氧化碳浓度(PPM) 对人体的影响 TVOC 浓度(PPB) 对人体的影响
<500 正常 <50 正常
500 - 1000 有点不舒服 50 - 750 焦虑、不舒服
1000 - 2500 疲劳 750 - 6000 抑郁、头痛
2500 - 5000 不健康 >6000 头痛及其他神经问题

二、传感器特性与规格

1. 特性

  • 短预热时间:预热时间小于 15 秒,上电后能快速进行准确测量。
  • 低功耗:适合长时间运行和便携式设备。
  • 高集成度:集成了 MCU 和 ADC,简化了设计。
  • IAQ 阈值警报:可设置阈值,当浓度超标时发出警报。

2. 规格参数

  • 工作电压:3.3V - 5.5V
  • 预热时间:<15s
  • IIC 地址:默认 0x5A,也可设置为 0x5B
  • 工作温度范围:-40℃ - 85℃
  • 工作湿度范围:0ppb - 1100ppb
  • 尺寸:1620mm(0.630.79“)

三、引脚说明

CCS811 传感器的引脚功能如下表所示: 引脚编号 引脚标签 说明
1 VCC 电源正极
2 GND 电源负极
3 SCL IIC 时钟线
4 SDA IIC 数据线
5 INT 中断引脚,低电平触发中断
6 WAKE 开关引脚,低电平唤醒,高电平休眠
7 RST 复位引脚,低电平复位

四、使用教程

1. 基本要求

  • 硬件:DFRduino UNO R3(或类似开发板)、CCS811 空气质量传感器、跳线。
  • 软件:Arduino IDE,需下载并安装 CCS811 库和示例代码。

2. API 函数列表

  • bool checkDataReady():判断是否可以读取数据。
  • void setInTemHum(float temperature, float humidity):设置环境参数,包括温度和湿度。
  • setMeasurementMode(eCycle_t mode, uint8_t thresh = 0, uint8_t interrupt = 0):配置测量参数,如测量模式、中断设置等。
  • uint16_t getCO2PPM():获取当前二氧化碳浓度,单位为 ppm。
  • uint16_t getTVOCPPB():获取当前 TVOC 浓度,单位为 ppb。
  • uint16_t readBaseLine():读取当前基线值。
  • void writeBaseLine(uint16_t baseLine):将基线值写入寄存器。

3. 示例代码

(1)获取基线

获取基线的目的是为了在传感器预热后能快速显示空气质量。在传感器运行的第一周,建议每 24 小时保存一次新基线;运行一周后,可每 1 - 28 天保存一次。需要注意的是,要将传感器放置在新鲜空气环境中 20 分钟以上才能获取基线,并且不同传感器和不同测量周期的基线可能不同。

#include "DFRobot_CCS811.h"
DFRobot_CCS811 CCS811;

void setup(void) {
  Serial.begin(115200);
  while(CCS811.begin() != 0){
    Serial.println("failed to init chip, please check if the chip connection is fine");
    delay(1000);
  }
}

void loop() {
  if(CCS811.checkDataReady() == true){
    Serial.println(CCS811.readBaseLine(), HEX);
  } else {
    Serial.println("Data is not ready!");
    delay(1000);
  }
}

(2)获取数据

可以将基线值输入到 sensor.writeBaseLine() 函数中,若不想设置基线,可在示例程序中禁用该函数,此时传感器会自动校准基线,但过程可能较长。上传程序到 UNO 后,打开串口监视器即可查看二氧化碳和 TVOC 浓度。

#include "DFRobot_CCS811.h"
DFRobot_CCS811 CCS811;

void setup(void) {
  Serial.begin(115200);
  while(CCS811.begin() != 0){
    Serial.println("failed to init chip, please check if the chip connection is fine");
    delay(1000);
  }
}

void loop() {
  if(CCS811.checkDataReady() == true){
    Serial.print("CO2: ");
    Serial.print(CCS811.getCO2PPM());
    Serial.print("ppm, TVOC: ");
    Serial.print(CCS811.getTVOCPPB());
    Serial.println("ppb");
  } else {
    Serial.println("Data is not ready!");
    CCS811.writeBaseLine(0x447B);
    delay(1000);
  }
}

(3)浓度报警

将基线值输入到 sensor.writeBaseLine() 函数并上传到 UNO。当 CO2 浓度从当前范围(低、中、高)变化到另一个范围(变化超过 50 ppm)时,会产生中断并打印当前 CO2 值。此示例需要将传感器的 INT 引脚连接到主板上相应的中断引脚。

#include "DFRobot_CCS811.h"
volatile int8_t GPIO1TRIG = 0;
DFRobot_CCS811 CCS811;

void setup(void) {
  Serial.begin(115200);
  while(CCS811.begin() != 0){
    Serial.println("failed to init chip, please check if the chip connection is fine");
    delay(1000);
  }
  attachInterrupt(0, interrupt, RISING);
  CCS811.setMeasurementMode(CCS811.eCycle_250ms, 1, 1);
  CCS811.setThresholds(1500,2500);
}

void loop() {
  if(GPIO1TRIG == 1){
    Serial.println("CO2 range has changed");
    Serial.print("CO2: ");
    Serial.print(CCS811.getCO2PPM());
    Serial.print("ppm, TVOC: ");
    Serial.print(CCS811.getTVOCPPB());
    Serial.println("ppb");
    delay(1000);
    GPIO1TRIG = 0;
  }
  Serial.print("CO2: ");
  Serial.print(CCS811.getCO2PPM());
  Serial.print("ppm, TVOC: ");
  Serial.print(CCS811.getTVOCPPB());
  Serial.println("ppb");
  CCS811.writeBaseLine(0x447B);
  delay(1000);
}

void interrupt(){
  GPIO1TRIG = 1;
}

五、更多文档与资源

如果你需要更多信息,可以参考以下文档:

你可以从 DFRobot 商店DFRobot 经销商 处获取 CCS811 空气质量传感器。

在实际应用中,你是否遇到过 CCS811 传感器与其他设备兼容性的问题?你是如何解决的呢?欢迎在评论区分享你的经验和见解。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分