简介
STS35瑞士Sensirion公司新推出的温度传感器,STS35提供了一个完全校准、线性和供电电压补偿的数字输出,并且具有±0.1℃的超高测量精度。
STS35测量范围宽达-40~125℃,并且可以自加热除湿保持芯片干燥(这意味着它可以接受一定湿度环境下的工作)。
同时STS35的I2C通信速度可达1MHz。
使用场景
- 谷类储存防霉时的温度检测
- 生物实验精准控温环境
- 大棚蔬菜环境测温
- DIY环境温度测量装置
- 其它在一定湿度与干燥的环境来回切换的测温等。
特性
- 出厂校准,数字输出准确
- 高精度,温度误差±0.1℃
- 启动时间最快0.5ms
- 高可靠性,长期稳定
产品参数
 
  
- 检测类型: 温度
- 工作电压: 3.3~5.5V DC
- 功耗:0.05W(5V)//待修改
- 加热功耗:3.6~33mW
- 输出信号: I2C
- 测量范围: -40~125℃
- 误差:±0.1℃
- 分辨率: 0.01℃
- 预热时间: ≤1.5ms(典型0.5ms)
- 响应时间: >2 s
- 工作温度: -40~125℃
- 电路板尺寸:20mm*17.5mm*2mm
- 安装孔尺寸:M2(2mm),两安装孔圆心中心距离15mm
引脚说明
| 标号 | 名称 | 功能描述 | 
|---|---|---|
| 1 | RST | 复位引脚(拉低复位) | 
| 2 | ADDR | I2C地址引脚(默认地址0x4B,拉低地址0x4A) | 
| 3 | SDA | I2C数据线 | 
| 4 | SCL | I2C时钟线 | 
| 5 | GND | GND电源负极 | 
| 6 | VCC | 电源正极 | 
Arduino使用教程
- 将线按照接线图连接好后
- 将程序通过Arduino IDE烧录到Arduino UNO中,随后打开串口监视器即可查看当前温度数据。
软硬件准备
- 硬件
- 软件
- Arduino IDE 点击下载Arduino IDE
- 下载并安装DFRobot_STS3X-master库。 如何安装库?
 
使用I2C读取传感器数据
I2C接线图
样例代码
- 将模块与Arduino按照上方的连线图相连,你也可以配合Gravity I/O 传感器扩展板 V7.1使用,更方便、更快速的完成项目原型搭建。
- 模块I2C地址默认为0x4B,如果您想要修改I2C地址,可通过连接模块上的ADDR引脚接到GND,并修改如图 代码的字母B改为字母A即可。 代码的字母B改为字母A即可。
- 打开Arduino IDE,将下面的代码上传到Arduino UNO。
- 打开Arduino IDE的串口监控视器,把波特率调至9600,观察温度打印结果。
/*!
 * @file getTemperature.ino
 * @brief 开启传感器周期测量模式(设置周期测量频率,相当于发送开启周期测量模式的指令),
 * @n 获取传感器周期测量模式下,测量的温度数据
 * 
 * @copyright	Copyright (c) 2010 DFRobot Co.Ltd (https://www.dfrobot.com)
 * @licence     The MIT License (MIT)
 * @author [LuoYufeng](yufeng.luo@dfrobot.com)
 * @version  V1.0
 * @date  2021-9-01
 * @url https://github.com/DFRobot/DFRobot_STS3X
 */
#include "DFRobot_STS3X.h"
/*!
 * 根据ADDR引脚拉高或拉低来确定IIC地址
 * ADDR引脚拉低: STS3X_IIC_ADDRESS_A   0x4A
 * ADDR引脚拉高(默认): STS3X_IIC_ADDRESS_B   0x4B
 */
DFRobot_STS3X sts(&Wire, STS3X_IIC_ADDRESS_B);
void setup(void)
{
    Serial.begin(9600);
    /*Wait for the chip to be initialized completely, and then exit*/
    while(sts.begin() != true){
        Serial.println("Failed to init chip, please check if the chip connection is fine. ");
        delay(1000);
    }
    /*!
     *@brief 设置测量频率
     *@param freq: 在枚举变量eFreq_t中选择e2S,e1Hz,e2Hz,e4Hz,e10Hz模式
     */
    sts.setFreq(sts.e10Hz);
}
void loop() {
    Serial.print(sts.getTemperaturePeriodC());
    Serial.println(" ℃");
    delay(1000);
}
结果
重复模式选择
- 可以通过修改括号中的参数,调整数据的重复模式。
- 不同模式对应了不同测量时间,测量时间:输出一次的测量数据时需重复采集样本的时间。
| 模式 | 测量时间 | 
|---|---|
| High | 12.5 ms | 
| Medium | 4.5 ms | 
| Low | 2.5 ms | 
    /*!
     *@brief 设置重复模式
     *@param code: 在枚举变量eCode_t中选择eHigh,eMedium,eLow模式
     */
    sts.setRepeat(sts.eHigh);
传输速率选择
可以通过修改括号中的参数,调整数据的测量速率。
不同模式对应了不同的测量速率。
| 模式 | 测量速率 | 
|---|---|
| 2S | 0.5Hz | 
| 1Hz | 1Hz | 
| 2Hz | 2Hz | 
| 4Hz | 4Hz | 
| 10Hz | 10Hz | 
    /*!
     *@brief 设置测量频率
     *@param freq: 在枚举变量eFreq_t中选择e2S,e1Hz,e2Hz,e4Hz,e10Hz模式
     */
    sts.setFreq(sts.e10Hz);
注意事项
- 当测量速率在最高10Hz时可能发生自热
主要API函数列表
    void setRepeat(eCode_t code);
    /*!
     *@brief 设置时钟延展,开启时钟延展后,当传感器未测量完成时不会发送NAK,直到测量完成时才发送数据完成之前未完成的测量命令
     *@param clockStretch: 是否打开时钟延展,true表示打开,false表示关闭
     */
    void setStretch(bool clockStretch);
    /*!
     *@brief 设置测量频率,开启传感器周期测量模式(设置周期测量频率,相当于发送开启周期测量模式的指令)
     *@param freq: 在枚举变量eFreq_t中选择e2S,e1Hz,e2Hz,e4Hz,e10Hz模式
     */
    void setFreq(eFreq_t freq);
    /*!
     *@brief 打开加热器
     */
    void setHeaterOn();
    /*!
     *@brief 关闭加热器
     */
    void setHeaterOff();
    /*!
     *@brief 中断传感器正在进行的工作,强制使其进入空闲模式
     */
    void breakSensor();
    /*!
     *@brief 将参数设置回默认值
     */
    void resetSensor();
    /*!
     *@brief 获取并保存传感器当前所有状态
     *@n 每隔一段时间之后需要先调用这个接口,才能用其他api获得传感器当前的状态
     */
    void getStatus();
    /*!
     *@brief 获取校验和状态
     *@return true: checksum of last write transfer was correct
     *@n      false: checksum of last write transfer failed
     */
    bool checkSumStatus();
    /*!
     *@brief 获取指令状态
     *@return true: last command executed successfully
     *@n      false: last command not processed.
     */
    bool commandStatus();
    /*!
     *@brief 检测系统是否重置
     *@return true: no reset detected since last 'clear status register' command
     *@n      false: reset detected (hard reset, soft reset command or supply fail)
     */
    bool systemResetDetected();
    /*!
     *@brief 温度跟踪提醒
     *@return true: no alert
     *@n      false: alert
     */
    bool temTrackingAlert();
    /*!
     *@brief 获取加热器状态
     *@return true: Heater OFF
     *@n      false: Heater ON
     */
    bool heaterStatus();
    /*!
     *@brief 获取警报待处理状态
     *@return true: no pending alerts
     *@n      false: at least one pending alert
     */
    bool alertPendingStatus();
    /*!
     *@brief 单次测量模式下,获取当前温度,注:需保证传感器处于空闲状态,可以调用相关api:breakSensor()
     *@return 单位:℃
     */
    float  getTemperatureSingleC();
    /*!
     *@brief 周期测量模式下,获取当前温度,注:需提前设置采样频率,可以调用相关api:setFreq(eFreq_t freq)
     *@return 单位:℃
     */
    float  getTemperaturePeriodC();
使用注意
- 避免长期在湿度过高的环境中使用(参考低于40%RH的环境视为干燥,由昼夜温差产生的水分可由自带加热功能进行去除)。
- 避免长期使用10Hz模式传输数据从而造成自热影响您的数据。
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。
更多
 [https://www.dfrobot.com.cn/goods-3476.html "商城购买链接"]
 [https://www.dfrobot.com.cn/goods-3476.html "商城购买链接"]
 
 
 
