温湿度传感器SHT20的功能介绍和时序分析

news2024/9/21 6:21:20

目录

概述

1 认识SHT20

1.1 SHT20介绍

1.2 SHT20属性

1.3 接口介绍

1.4 SHT20的相关命令

1.5 转换时间

2 寄存器操作

2.1 复位操作

2.2 User Register

2.3 CRC Checksum

3 温湿度计算

3.1 相对湿度转换

3.2 温度换算

3.3 转换公式的C语言实现


概述

本文主要介绍SHT20传感器的相关内容,包括SHT20的属性,相关的操作命令,还介绍了其和MCU操作之间的时序特点,还介绍了温湿度转换相关的关系。

1 认识SHT20

1.1 SHT20介绍

盛思锐SHT20温湿度传感器在外形方面已经成为行业标准了吗智能:嵌在可回流焊双管中扁平无引线(DFN)封装3 × 3mm的足迹和1.1毫米高度,它提供校准,线性化的传感器数字信号,I2C格式。SHT2x湿度传感器包含电容式湿度传感器传感器,是带隙温度传感器和专业传感器模拟和数字集成电路-所有在一个单一CMOSens®芯片。这产生了一个无与伦比的传感器性能方面的准确性和稳定性以及最小的功耗。每个传感器都经过单独校准和测试。很多识别被印在传感器和电子设备上识别码存储在芯片上——这是可以的按命令读出。此外,sht2X可以通过命令改变(8/12bit到12/14bit)对于RH/T)和校验和有助于改进通信的可靠性。有了这组功能和经过验证的可靠性和长期稳定。SHT2x传感器提供卓越的性价比。

1.2 SHT20属性

1)湿度特性

2)温度特性

1.3 接口介绍

一个简单的设计电路:

1)电源

SHT2x的供电电压必须在2.1 -范围内3.6V,建议供电电压为3.0V。电源引脚电源电压(VDD)和地(VSS)必须用100nF电容解耦,该电容应放置在尽可能靠近传感器的地方。

2)Serial clock (SCL)

SCL用于同步单片机与传感器之间的通信。由于接口由完全静态逻辑组成,因此没有最小的SCL频率。

3)Serial SDA (SDA)

SDA引脚用于在传感器内外传输数据。为了向传感器发送命令,SDA在SCL的上升沿上有效,并且在SCL高时必须保持稳定。SCL下降沿后,SDA值可能发生变化。为了安全通信,SDA应分别为有效的tSU和tHD,分别在SCL上升沿之前和下降沿之后-见图12。对于从传感器读取数据,SDA在SCL降低后是有效的tVD,直到SCL的下一个下降沿保持有效。

1.4 SHT20的相关命令

通信有两种不同的操作模式带传感器:保持主模式或无保持主模式模式。在第一种情况下,SCL线路被堵塞(受控通过传感器)在测量过程中,而在后者中如果SCL线路仍对其他通信开放而传感器正在处理测量。不要等待主模式允许处理其他I2C传感器工作时总线上的通信任务测量。两种模式的通信序列分别显示在图15和图16中。在保持主模式下,SHT2x下拉SCL在测量过程中,线路会强制主站进入等待状态。通过松开SCL线,传感器指示内部处理终止,传输可能继续的。

模式一:保持主通信序列

模式二:否保持主通信顺序 

1.5 转换时间

测量的最大持续时间取决于所选择的测量类型和分辨率-值显示在下表中。对于MCU的通信规划,需要选择最大值。

 

请注意:I2C通信允许重复启动条件(S),而无需关闭具有停止条件(P)的先验序列。但是,任何具有相邻Start条件的序列都可以选择使用Stop条件关闭。

2 寄存器操作

2.1 复位操作

该命令用于重新启动传感器系统,而不需要再次开关电源。接收到此命令后,传感器系统根据默认设置重新初始化并开始运行-除了用户寄存器中的加热器位。软复位时间小于15ms.

2.2 User Register

User Register的内容如下表所示。请注意,保留位不能更改,相应保留位的默认值可能会随时间而更改,恕不另行通知。因此,对于任何对用户寄存器的写入,必须首先读取保留位的默认值。此后,完整的User Register字符串由各自保留位的默认值和剩余的可访问位(可选地使用默认值或非默认值)组成。

操作时序如下:

2.3 CRC Checksum

SHT2x为错误检测提供CRC-8校验和。使用的多项式是x8 + x5 + x4 +1。有关详情及实施,请参阅申请须知“SHT2x的CRC校验和计算”。

static int sht2xdrv_CheckCrc(unsigned char data[], unsigned char nbrOfBytes, unsigned char checksum)
{
    uint16_t res = 0;
    uint16_t crc = 0;
    uint16_t byteCtr;
    
    //calculates 8-Bit checksum with given polynomial
    for (byteCtr = 0; byteCtr < nbrOfBytes; ++byteCtr)
    {
      crc ^= (data[byteCtr]);
      for (uint8_t bit = 8; bit > 0; --bit)
      {
        if (crc & 0x80)
        {
          crc = (crc << 1) ^ POLY;
        }
        else
        {
          crc = (crc << 1);
        }
      }
    }

    if (crc != checksum)
    {
      res = 1;
    }

    return res;
}

3 温湿度计算

3.1 相对湿度转换

相对湿度信号输出SRH,相对湿度RH由下式得到,结果为%RH,无论选择哪种分辨率:

3.2 温度换算

无论选择哪种分辨率,将温度信号输出ST代入下式(结果为°C)即可计算温度T:

3.3 转换公式的C语言实现

static int sht2xdrv_CalcTemperatureC(int u16sT)
{
    int temperatureC;       // variable for result

    u16sT &= ~0x0003;           // clear bits [1..0] (status bits)

    /*
    * Formula T = -46.85 + 175.72 * ST / 2^16 from data sheet 6.2,
    * optimized for integer fixed point (3 digits) arithmetic
    */

    temperatureC = ((17572 * u16sT) >> 16) - 4685;

    return temperatureC;
}

static int sht2xdrv_CalcRH(int u16sRH)
{
    int humidityRH;       // variable for result

    u16sRH &= ~0x0003;          // clear bits [1..0] (status bits)

    /*
    * Formula RH = -6 + 125 * SRH / 2^16 from data sheet 6.1,
    * optimized for integer fixed point (3 digits) arithmetic
    */

    humidityRH = ((12500 * u16sRH) >> 16) - 600;

    return humidityRH;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2142814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGLM-6B部署到本地电脑

引言 ChatGLM-6B是由清华大学开源的双语对话大模型&#xff0c;该模型有62亿参数&#xff0c;但在经过量化后模型体积大幅下降&#xff0c;因此不同于其他需要部署到服务器上的大模型&#xff0c;该模型可以部署到本地电脑&#xff0c;那么接下来我们来看看如何部署该模型。 …

OpenAI API key not working in my React App

题意&#xff1a;OpenAI API 密钥在我的 React 应用中不起作用 问题背景&#xff1a; I am trying to create a chatbot in my react app, and Im not able to generate an LLM powered response. Ive been studying documentation and checking out tutorials but am unable …

【CMake】使用CMake在Visual Studio中配置glad和glfw

下载glad和glfw g l a d glad glad下载&#xff1a;glad下载 这个是 g i t h u b github github上的资源&#xff0c;进不去的话就开开魔法。 g l f w glfw glfw下载&#xff1a;glfw下载 下载CMake C M a k e CMake CMake下载&#xff1a; CMake下载 根据自己的平台选择&…

【Java 优选算法】双指针(下)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 有效三角形的个数 题目链接 解法 解法1:暴力枚举--->O(n^3) 解法2:利用单调性,使用双指针来解决---->O(n^2) 优化:对整个数组进行排序先固定最大数在最大数的左…

文心智能体 城市印象之漫行北京 开发分享

城市印象之漫行北京 请点击文心智能体平台AgentBuilder | 想象即现实 (baidu.com) 一、开发灵感 这个智能体为笔者“城市印象”系列当中的作品之一&#xff0c;这个智能体侧重于为用户提供丈量北京的个性化城市之旅&#xff0c;或漫步历史文化街区细细品味&#xff0c;或领略…

动态内存管理之malloc,free,calloc和realloc函数

Hello&#xff0c;各位小伙伴们&#xff0c;小编在这里祝福各位中秋佳节快乐呀&#xff0c;今天让我们来学习一下动态内存管理吧&#xff01; 引言 像我们之前在开辟一段空间的时候你可能会使用整型变量来申请一块空间&#xff0c;或者使用数组来申请一段连续的空间&#xff…

网络协议全景:Linux环境下的TCP/IP、UDP

目录 1.UDP协议解析1.1.定义1.2.UDP报头1.3.特点1.4.缓冲区 2.TCP协议解析2.1.定义2.2.报头解析2.2.1.首部长度&#xff08;4位&#xff09;2.2.2.窗口大小2.2.3.确认应答机制2.2.4.6个标志位 2.3.超时重传机制2.4.三次握手四次挥手2.4.1.全/半连接队列2.4.2.listen2.4.3.TIME_…

复选按钮QCheckBox

使用场景&#xff1a;多选多 文本 // 获取和设置显示的文本 QString text() const void setText(const QString &text) 三态 复选按钮有三种状态 Qt::Checked 选中Qt::Unchecked 非选中Qt::PartiallyChecked 半选中&#xff0c;比如一组复选按钮中&#xff0c;只选择了…

PointNet++改进策略目录

后续我将如何使用文章中创新点加入的PointNet中代码实现部分进行更新 题目原理解析代码改进PointNet改进策略 &#xff1a;模块改进 | LFA | RandLA-Net&#xff0c;通过随机采样与局部特征聚合提升大规模3D点云处理效率✔️❌PointNet改进策略 &#xff1a;模块改进 | Residua…

Renesas R7FA8D1BH (Cortex®-M85)控制SHT20

目录 概述 1 硬件接口介绍 2 SHT20模块 2.1 SHT20简介 2.2 SHT-20模块电路 3 I2C接口实现 3.1 FSP配置I2C 3.2 I2C驱动程序实现 4 SHT20驱动程序 4.1 SHT20驱动代码结构 4.2 源代码文件 5 测试 5.1 测试功能介绍 5.2 测试代码实现 5.3 运行代码 概述 本文主要介…

ubuntu虚拟机装载共享文件夹导致的诡异错误

最近使用vmware station 15 安装了 ubuntu22.04 的虚拟机。在装载共享文件夹不久后便会出现诡异的错误。目前在网络上好像没有人把这归结到装载共享文件夹的问题上&#xff0c;故以供参考。 第一次&#xff1a; 在装载之后大概第二次开机&#xff0c;出现报错界面。 提示蓝牙…

C++二叉搜索树学习

目录 一、二叉搜索树概念 二、二叉搜索树的性能分析 三、二叉搜索树的构建 一、二叉搜索树概念 二叉搜索树又叫做二叉排序树&#xff0c;它可以是一颗空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若该树的左子树不为空&#xff0c;那么左子树上的任一节点都小…

硬件工程师笔试面试——存储器件

目录 16、存储器件 16.1 基础 存储器件实物图 16.1.1 概念 16.1.2 常见的存储器件及其特点 16.2 相关问题 16.2.1 不同类型的存储器件在成本和性能上有哪些具体的差异 16.2.2 如何根据应用需求选择合适的存储器件? 16.2.3 存储器件的耐用性和可靠性是如何影响其在不同…

【Unity】 HTFramework框架(五十六)MarkdownText:支持运行时解析并显示Markdown文本

更新日期&#xff1a;2024年9月15日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 MarkdownText支持的Markdown语法标题强调文本表格嵌入图像超链接 使用MarkdownText设置项运行时属性解析使用ID模式嵌入图像 MarkdownText MarkdownText…

【算法思想·二叉搜索树】基操篇

本文参考labuladong算法笔记[二叉搜索树心法&#xff08;基操篇&#xff09; | labuladong 的算法笔记] 1、概述 我们前文 东哥带你刷二叉搜索树&#xff08;特性篇&#xff09; 介绍了 BST 的基本特性&#xff0c;还利用二叉搜索树「中序遍历有序」的特性来解决了几道题目&am…

OpenAI的o1模型与Transformer的无限潜力:数学证明推理算力无上限

近期&#xff0c;斯隆奖得主马腾宇和Google Brain推理团队创始人Denny Zhou合作&#xff0c;提出了一项引人注目的数学证明&#xff1a;只要思维链&#xff08;CoT&#xff09;足够长&#xff0c;Transformer就有能力解决各种复杂问题。这一发现引发了广泛关注&#xff0c;因为…

驱动器磁盘未格式化难题:深度剖析与恢复实践

驱动器磁盘未格式化的深层探索 在数据存储与管理的日常中&#xff0c;驱动器作为我们数字生活的基石&#xff0c;其稳定性直接关系到数据的安全与可用性。然而&#xff0c;当屏幕上赫然出现“驱动器中的磁盘未被格式化”的提示时&#xff0c;许多用户往往感到手足无措&#xf…

把设计模式用起来!(3)用不好模式?之时机不对

上一篇&#xff1a;《把设计模式用起来&#xff08;2&#xff09;——用不好&#xff1f;之实践不足》 本篇继续讲设计模式用不好的常见原因&#xff0c;这是第二个&#xff1a;使用设计模式的时机不对。 二、时机不对 这里说的时机并不是单纯指软件研发周期中的时间阶段&…

C++11新增特性:lambda表达式、function包装器、bind绑定

一、lambda表达式 1&#xff09;、为啥需要引入lambda&#xff1f; 在c98中&#xff0c;我们使用sort对一段自定义类型进行排序的时候&#xff0c;每次都需要传一个仿函数&#xff0c;即手写一个完整的类。甚至有时需要同时实现排升序和降序&#xff0c;就需要各自手写一个类&…

基于SSM的社区爱心捐赠管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSSMVueMySQL的社区爱…