_SKU_SEN0496_Gravity_电化学氧气传感器_I2C.JPG

简介

这是一款全量程的氧气传感器,0-100%Vol的测量范围,使用原装AO2 CiTiceL®氧气传感器探头,可以适应包含制氧机,汽车尾气、空燃比检测等应用场景。

DFRobot推出的全量程氧气传感器,信号板内置校准算法,可快速进行单点或双点校准,I2C数字输出,能够准确测量环境中的氧气浓度。探头采用电化学原理,并具有抗干扰能力强、稳定性高、灵敏度高等特点,使用寿命长达两年。兼容Arduino、ESP32、树莓派等主流的主控设备,简单易用的Gravity接口,配上我们的样例代码,可迅速搭建出自己的氧气浓度检测仪。

注意:要避免在储存、安装仪器和操作期间暴露于高浓度溶剂蒸气中

产品参数

  • 检测物理量:氧气浓度
  • 测量范围: 0~100%
  • 工作电压: 3.3~5.5V DC
  • 功耗:6.5mA @ 5V ; 6.5mA @ 3.3V
  • 输出信号: I2C
  • 工作压力范围:0.5~2.0Bar
  • 工作温度范围:-20°C ~ +50°C
  • 工作湿度范围:0 - 99% RH (无凝结)
  • 响应时间:<5S
  • 寿 命: >2 年(空气中)
  • 电路板尺寸:32mm*27mm
  • 安装孔尺寸:内径3.1mm/外径6mm

引脚说明

标号 名称 功能描述
1 左侧信号输入端 与氧气传感器探头连接
2 右侧信号输出端 I2C信号输出端,与控制器相连
3 拨码开关 I2C地址切换

Arduino使用教程

  • 注意:要避免在储存、安装仪器和操作期间暴露于高浓度溶剂蒸气中

软硬件准备

接线图

数据校准

数据校准可进行氧气浓度为20.9%Vol的单点校准,或20.9%Vol和大于99.5%Vol的双点校准。

空气流通的环境中氧气含量约为20.9%,因此将传感器探头的密封帽拧下后可在空气中快速的完成单点校准。如果想要使数据更加精准,需要进行双点校准。

按键 20.9%Vol ≥99.5%Vol SET
LED颜色 绿色 绿色 红色
按键功能 长摁2s后,校准空气(含氧量20.9%)中的电压值 长摁2s后,校准纯氧(含氧量≥99.5%)中的电压值 1.短摁,检查校准状态
2.长摁2s,清除校准数据
LED闪烁逻辑 1.校准成功后闪烁2s,每秒4次
2.进入检查校准数据状态后,若该点已有校准数据,常亮4s;否则LED为熄灭状态
3.数据清除成功后,与红色LED同步闪烁4s,每秒2次
1.校准成功后闪烁2s,每秒4次
2.进入检查校准数据状态后,若该点已有校准数据,常亮4s;否则LED为熄灭状态
3.数据清除成功后,与红色LED同步闪烁4s,每秒2次
1.短摁后,进入检查校准数据状态,红色LED闪烁4s,每秒4次
2.长摁2s后,清除校准数据,数据清除成功后,红色LED闪烁4s,每秒2次

按键校准流程:

  • 1.清空当前校准数据:按住SET按钮,直到三个指示灯闪烁,指示灯闪烁后松开按钮
  • 2.预热:拧下探头上的密封帽,长时间密封保存拧下密封帽后需静置在空气中至少3min,使传感器预热。
  • 3.单点校准:探头放在空气中,按住20.9%Vol按钮,直到其上方的绿色指示灯闪烁,此时完成单点校准(20.9%Vol环境中信号输入端的电压约为9~13mv)
  • 4.双点校准:将探头置于氧气浓度 ≥99.5%Vol的纯氧环境中,按住 ≥99.5%Vol按钮,直到其上方的绿色指示灯闪烁,此时完成双点校准(≥99.5%Vol环境中信号输入端的电压约为50mv)

软件校准方法请查看下方的使用样例

读取传感器数据

样例代码

  • 拧下探头上的密封帽,长时间密封保存拧下密封帽后需静置在空气中至少3min,使传感器预热。
  • 将模块与Arduino按照上方的连线图相连,当然你也可以配合Gravity I/O扩展板使用,可以更方便、更快速的完成项目原型搭建。
  • I2C地址默认为0x70,对应代码中的ADDRESS_0。如果需要修改I2C地址,可先通过模块上的拨码开关配置硬件I2C地址,并修改样例代码中I2C地址的定义ADDRESS_X。拨码开关与I2C地址参数对应关系如下:
    • ADDRESS_0:0x70, A0=0, A1=0
    • ADDRESS_1:0x71, A0=1, A1=0
    • ADDRESS_2:0x72, A0=0, A1=1
    • ADDRESS_3:0x73, A0=1, A1=1
  • 下载并安装DFRobot_EOxygenSensor库如何安装库?
  • 打开Arduino IDE,将下面的代码上传到Arduino UNO。
  • 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。
/*!
  * @file  getOxygenConcentration.ino
  * @brief Enable the power, and the information is printed on the serial port.
  * @n When using IIC device, select I2C address, set the dialing switch A0, A1 (Address_0 is [0 0]), (Address_1 is [1 0]), (Address_2 is [0 1]), (Address_3 is [1 1]).
  * @copyright   Copyright (c) 2010 DFRobot Co.Ltd (https://www.dfrobot.com)
  */
#include "DFRobot_EOxygenSensor.h"

/**
 *  iic slave Address, The default is E_OXYGEN_ADDRESS_0
 *     E_OXYGEN_ADDRESS_0               0x70
 *     E_OXYGEN_ADDRESS_1               0x71
 *     E_OXYGEN_ADDRESS_2               0x72
 *     E_OXYGEN_ADDRESS_3               0x73
 */
#define OXYGEN_I2C_ADDRESS E_OXYGEN_ADDRESS_0
DFRobot_EOxygenSensor_I2C oxygen(&Wire, OXYGEN_I2C_ADDRESS);

void setup()
{
  Serial.begin(115200);
  while(!Serial);
  while(!oxygen.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  } Serial.println("Device connected successfully !");
}

void loop() 
{
  Serial.print("oxygen concetnration is "); 
  Serial.print(oxygen.readOxygenConcentration());
  Serial.println("% VOL");
  delay(1000);
}

结果

打开串口监视器,得到最终的数据。

软件校准

样例代码

  • 拧下探头上的密封帽,长时间密封保存后拧下密封帽后需静置在空气中至少3min,使传感器预热。
  • 将模块与Arduino按照上方的连线图相连,当然你也可以配合Gravity I/O扩展板使用,可以更方便、更快速的完成项目原型搭建。
  • I2C地址默认为0x70,对应代码中的ADDRESS_0。如果需要修改I2C地址,可先通过模块上的拨码开关配置硬件I2C地址,并修改样例代码中I2C地址的定义ADDRESS_X。拨码开关与I2C地址参数对应关系如下:
    • ADDRESS_0:0x70, A0=0, A1=0
    • ADDRESS_1:0x71, A0=1, A1=0
    • ADDRESS_2:0x72, A0=0, A1=1
    • ADDRESS_3:0x73, A0=1, A1=1
  • 下载并安装DFRobot_EOxygenSensor库如何安装库?
  • 打开Arduino IDE,将下面的代码上传到Arduino UNO。
  • 打开Arduino IDE的串口监控视器,把波特率调至115200,观察串口打印结果。
 /*!
  * @file  calibrationSensor.ino
  * @brief 校准传感器
  * @n The calibration status is printed on the serial port terminal
  */
#include "DFRobot_EOxygenSensor.h"

/**
 *  iic slave Address, The default is E_OXYGEN_ADDRESS_0
 *     E_OXYGEN_ADDRESS_0               0x70             // i2c device address
 *     E_OXYGEN_ADDRESS_1               0x71
 *     E_OXYGEN_ADDRESS_2               0x72
 *     E_OXYGEN_ADDRESS_3               0x73
 */
#define OXYGEN_I2C_ADDRESS E_OXYGEN_ADDRESS_0
DFRobot_EOxygenSensor_I2C oxygen(&Wire, OXYGEN_I2C_ADDRESS);
uint8_t calibrationState = 0;

void setup()
{
  Serial.begin(115200);
  while(!Serial);
  while(!oxygen.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  } Serial.println("Device connected successfully !");

  if(oxygen.clearCalibration()) Serial.println("clear calibration success!");
  if(oxygen.calibration_20_9()) Serial.println("20.9 calbration success!");
  //if(oxygen.calibration_99_5()) Serial.println("99.5 calbration success!");
}

void loop() 
{
  calibrationState = oxygen.readCalibrationState();
  if(calibrationState == 0) Serial.println("no calibration!");
  if(calibrationState&0x01) Serial.println("20.9 calibration!");
  if(calibrationState&0x02) Serial.println("99.5 calibration!");
  Serial.print("oxygen concetnration is "); 
  Serial.print(oxygen.readOxygenConcentration());
  Serial.println("% VOL");
  delay(1000);
}
  • 代码烧录成功后即完成20.9%的单点校准。

  • 如果需要继续完成99.5%的校准,请先将探头放置于纯氧环境中,然后烧录下方示例代码,代码烧录成功后即完成双点校准。

 /*!
  * @file  calibrationSensor.ino
  * @brief 校准传感器
  * @n The calibration status is printed on the serial port terminal
  */
#include "DFRobot_EOxygenSensor.h"

/**
 *  iic slave Address, The default is E_OXYGEN_ADDRESS_0
 *     E_OXYGEN_ADDRESS_0               0x70             // i2c device address
 *     E_OXYGEN_ADDRESS_1               0x71
 *     E_OXYGEN_ADDRESS_2               0x72
 *     E_OXYGEN_ADDRESS_3               0x73
 */
#define OXYGEN_I2C_ADDRESS E_OXYGEN_ADDRESS_0
DFRobot_EOxygenSensor_I2C oxygen(&Wire, OXYGEN_I2C_ADDRESS);
uint8_t calibrationState = 0;

void setup()
{
  Serial.begin(115200);
  while(!Serial);
  while(!oxygen.begin()){
    Serial.println("NO Deivces !");
    delay(1000);
  } Serial.println("Device connected successfully !");

  //if(oxygen.clearCalibration()) Serial.println("clear calibration success!");
  //if(oxygen.calibration_20_9()) Serial.println("20.9 calbration success!");
  if(oxygen.calibration_99_5()) Serial.println("99.5 calbration success!");
}

void loop() 
{
  calibrationState = oxygen.readCalibrationState();
  if(calibrationState == 0) Serial.println("no calibration!");
  if(calibrationState&0x01) Serial.println("20.9 calibration!");
  if(calibrationState&0x02) Serial.println("99.5 calibration!");
  Serial.print("oxygen concetnration is "); 
  Serial.print(oxygen.readOxygenConcentration());
  Serial.println("% VOL");
  delay(1000);
}

常见问题(FAQ)

还没有客户对此产品有任何问题,欢迎通过QQ在线客服或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接