STM32
直播中

李秀兰

7年用户 1408经验值
私信 关注
[问答]

SHT10温湿度传感器是如何进行通信的

怎样去调试STM32F103ZET6及外围传感器呢?
SHT10温湿度传感器是如何进行通信的?

回帖(1)

谭齐慧

2021-11-11 15:04:38
  1.威廉希尔官方网站 图设计问题
  (1)2016-11-02:SHT10温湿度传感器的DATA引脚未接10K上拉电阻到VCC3.3,造成数据读不出。
  (2)2016-11-02:威廉希尔官方网站 图中的USB转USART模块中CH340G芯片的2脚为TXD,应该接STM32F103ZET6的US1_RX,3脚为RXD,应该接STM32F103ZET6的US1_TX,原威廉希尔官方网站 图中正好画反了。
  (3)2016-11-13:P5的6脚和P5的7脚接反了,实际板子上6脚-》US2_TX 7脚-》US2_RX
  (4)2016-11-06:添加RTC_Init()函数,RTC初始化,必须初始化RTC外部32.678K晶振才能起震工作;此威廉希尔官方网站 板32.678K晶振并联的电阻为10M才正常起震。
  (5)示波器看传感器时序时有两种方法:1.看某个固定的函数时序时可以采用程序中写while(1)的方式;2.看整个时序时可以采用示波器上的trigger功能,调整触发值为3.3V以下,然后触发方式为单次,点击RUN后便停在有波形的位置。
  (6)学习到AutoFlowchart和Source Insight 3的使用,可以更直观的查阅代码和跟踪代码。
  2.SHT10温湿度传感器
  首先讲讲SHT10这款温室度传感器。SHT1x(包括SHT10,SHT11和SHT15)属于Sersirion温湿度传感器家族中的贴片封装系列。更之前我讲过的DHT11这款温湿度传感器相比,体积小了许多,特别适合用于产品中。SHT10温湿度传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件(文绉绉的),传感器内部有一个精度高达14为位的A/D转换器,适应串行接口威廉希尔官方网站 实现无缝连接。该产品具有品质卓越、响应速度速度快,抗干扰能力强、性价比高等优点。
  1、接口定义:
  SHT10的接口定义
  如上图所示,1脚为GND,4脚为VDD。它的供电电压范围为2.4~5.5V,建议的电压为3.3V,在电源引脚(VDD、GND)之间必须加上一个0.1uf的电容,应于去耦滤波用。它的2脚DATA为数据引脚,3脚SCK为时钟控制引脚,没有发现这两个引脚很像IIC所使用的引脚功能?没错,这个传感器确实可以认为是IIC接口,但是又有却别。该传感器不能按照IIC的协议编址,但是,如果IIC总线上没有挂接别的元件,传感器可以直接连到IIC总线上,但是单片机必须按照传感器的协议工作。
  2、传感器的通讯
  2.1、“启动传输”时序
  用一组“启动传输”时序来完成数据传输的初始化。它包括:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变成低电平,随后是在SCK时钟高电平,随后是在SCK时钟高电平DATA翻转位高电平。
  2.2、复位时序
  如果与SHT1x 通讯中断,可通过下列信号时序复位:当DATA 保持高电平时,触发SCK 时钟9 次或更多。
  2.3、命令集
  传感器的命令包含三个地址位(目前只支持000,这就是他只能挂接在空闲的IIC总线上的原因)和五个命令位。。SHT1x 会以下述方式表示已正确地接收到指令:在第8 个SCK 时钟的下降沿之后,将DATA 下拉为低电平(ACK 位)。在第9 个SCK 时钟的下降沿之后,释放DATA(恢复高电平)。
  2.4、温湿度测量
  发布一组测量命令(‘00000101’表示相对湿度RH,‘00000011’表示温度T)后,控制器要等待测量结束。这个过程需要大约20/80/320ms,分别对应8/12/14bit 测量。确切的时间随内部晶振速度,最多可能有-30%的变化。。SHT1x 通过下拉DATA 至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK 时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。
  在收到CRC 的确认位之后,表明通讯结束。如果不使用CRC-8 校验,控制器可以在测量值LSB 后,通过保持ACK高电平终止通讯。在测量和通讯完成后,SHT1x 自动转入休眠模式。
  2.5、状态寄存器
  SHT1x 的某些高级功能可以通过给状态寄存器发送指令来实现,如选择测量分辨率,电量不足提醒,使用 OTP 加载或启动加热功能等。
  测量分辨率:默认分辨率 14bit (温度) 和 12bit (湿度) 可以被降低为 12 和 8bit. 尤其适用于要求测量速度极高或者功耗极低的应用。
  电量不足检测功能:在电压不足 2.47V 发出警告。精度为±0.05 V。
  加热:可通过向状态寄存器内写入命令启动传感器内部加热器。。加热器可以使传感器的温度高于周围环境 5 – 10°C12 。功耗大约为 8mA @ 5V 。
  OPT加载:开启此功能,标定数据将在每次测量前被上传到寄存器。如果不开启此功能,可减少大约 10ms的测量时间。
  上面的寄存器如果没有什么特殊要求或应用于特定的场合,则无需配置,选择默认就可以了。
  2.6、通讯过程
  传感器的通讯过程为:发送”启动传输“时序,初始化传感器——》发送命令——》等待传感器应答,及测量结束——》接收传感器的16位数据值——》接收8为的CRC校验数据——》休眠,等待下一次传输开始。
  上图中 TS = 传输开始, MSB = 高有效字节,LSB =低有效字节, LSb = 低有效位。
  下面举个实际测量时的相对湿度测量时序例子。
  这张图可以知道:我们接收到的数据数值为”0000 0100 0011 0001“ = 1073 = 35.50% RH (位含温度补偿),至于怎么计算的,请接着往下看。
  2.7、信号转化
  2.7.1 温度的转化
  设T 2 1 SOt为从传感器上读出来的测量数值,我们需要用下面的公式将测量数值转换成整整的温度值。
  T = d1 + d2 * SOt (其中d1,d2的值根据实际情况选择,选项如下)
  2.7.2 湿度的转换
  湿度的转换公式如下:
  
  。其中湿度的转化参数如下选择:根据采样的精度不同而不同。
  99%以上的湿度已经接近饱和必须经过处理显示100%RH13.请注意 湿度传感器对电压无依赖性。
  相对湿度根据上面的参数与公式算出来之后,还需要考虑当前环境温度而进行适当的补偿。
  2.7.3、露点的计算
  露点的定义:露点温度指空气在此温度下能保持最多的水汽,当温度冷却到露点,空气变得饱和,就会出现雾、露或霜。
  SHT1x 并不直接进行露点测量,,但露点可以通过温度和湿度读数计算得到。。由于温度和湿度在同一块集成威廉希尔官方网站 上测量,SHT1x 可测量露点。 一块集成威廉希尔官方网站 上测量,SHT1x 可测量露点。 下面直接给出结论性的露点计算公式了。
  LogEW=(0.66077+7.5*T/(237.3+T)+(log10(RH)-2)
  露点:Dp=((0.66077-logEW)*237.3/(logEW-8.16077)
  例如:RH=10% T=25C -》EW=23.7465-》露点=-8.69℃
  RH=90% T=50C -》EW=92.4753-》露点=47.89℃
举报

更多回帖

发帖
×
20
完善资料,
赚取积分