简介
这是一款全量程的氧气传感器,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使用教程
- 注意:要避免在储存、安装仪器和操作期间暴露于高浓度溶剂蒸气中
软硬件准备
- 硬件
- DFRuino UNO R3 x1
- SEN0495 Gravity: 氧气传感器 x1
- 杜邦线 若干
- 软件
- Arduino IDE 点击下载Arduino IDE
- 下载并安装DFRobot_EOxygenSensor库。如何安装库?
接线图
数据校准
数据校准可进行氧气浓度为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在线客服或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。