[原创] SHT31测评+I2C通讯

sylar^z   2020-2-3 16:59 楼主

SHT31是一款新型数字传感器,它具有模拟信号或I2C接口来获取温度和湿度数据。SHT31 Smart Gadget上是I2C接口的SHT31芯片。其I2C的最大速度可达到1MHz。本次测试本想验证其1MHz的速度,无奈手上的开发板性能和主频不足,无论硬件I2C或则模拟I2C(测试最大达到500+KHz)都无法达到1MHz的速度。所以本次测试了SHT31 Smart Gadget上nrf51822的I2C速度,并通过手上的NUCLEO-L011K4开发板读取SHT31数据并显示。

 

首先把SHT31 Smart Gadget上需要用到的端子线引出来。

SHT31 Smart Gadget开发板调试端子引出-t.jpg

通过引出的SHT31 I2C端子,连上逻辑分析仪。就可以看到nrf51822的I2C通讯时序了。

这是写入采集温湿度数据指令的时序。

I2C写SHT31开启采集温湿度数据时序-t.jpg 写入指令为0x2416。

 

SHT31的采集指令-t.jpg

根据SHT31手册上指令说明,这是设定SHT31的采集模式为非始终展宽式慢速采集的。

 

这是读取温湿度数据的时序。

I2C读取SHT31温湿度数据时序-t.jpg

从时序的周期为2.6us来看,频率为384.62KHz,程序设定的I2C速度应该为400KHz。

 

接下去外接NUCLEO-L011K4开发板,尝试与SHT31通讯,读取数据。NUCLEO-L011K4板载了STM32L011K4芯片,主频32MHz。

NUCLEO-L011K4开发板-t.jpg
之前在SHT31 Smart Gadget上焊接了nrf51822的调试端口。通过调试端口把nrf51822芯片的程序擦除,以防NUCLEO-L011K4开发板读取SHT31数据时,与nrf51822冲突。

NUCLEO-L011K4温湿度采集显示-t.jpg

NUCLEO-L011K4分别连接SHT31 和OLED显示屏。图片有点模糊,显示的温度13.4℃,湿度57.6%。

 

下图是NUCLEO-L011K4读取SHT31数据的时序图。

NUCLEO-L011K4读取SHT31温湿度数据时序-t.jpg

 

SHT31的一个完整的测量周期-t.jpg

SHT31的温湿度计算公式-t.jpg

根据SHT31的手册说明,通过公式了计算出

温度T = (175 * 0x550F / 65535)-45 = 13.14℃

相对湿度RH=100*0x931A/65535=57.46%

 

这个时序与上图的屏幕显示不是同一时间点,所以数据不完全对应。总体来所,温度的精度为± 0.2℃,实际采集的数据也比较稳定。而相对湿度的精度为± 2%,实际采集的数据也是有些跳动,但都在± 2%以内。


此内容由EEWORLD论坛网友sylar^z原创,如需转载或用于商业用途需征得作者同意并注明出处

本帖最后由 sylar^z 于 2020-3-17 13:45 编辑

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复