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

简介

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

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

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

产品参数

引脚说明

标号 名称 功能描述
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次

按键校准流程:

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

读取传感器数据

样例代码

/*!
  * @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);
}

结果

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

软件校准

样例代码

 /*!
  * @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);
}
 /*!
  * @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在线客服或者论坛联系我们!

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

更多