主要内容

在Arduino®硬件上从I2C设备测量温度

这个例子展示了如何使用MATLAB®Arduino®硬件支持包和I2C接口与I2C设金宝app备通信。

TMP102温度传感器概述

这个例子使用了TMP102,一种两线串行输出数字传感器,它可以读取高达0.0625摄氏度的分辨率的温度。您还可以以具有更高测量限制的扩展模式从设备读取数据。

硬件设置

1)将传感器的SDA、SCL、GND、VCC引脚与Arduino硬件上相应的引脚连接。这个例子将SDA和SCL引脚连接到Arduino Uno板上的A4和A5。如果您使用的是不同的板,请在连接前检查正确的引脚。

2)牢固连接I2C传感器电源线。

创建I2C设备对象

1)创建arduino对象,包括I2C库。

一个= arduino (“COM9”,'uno',“库”,“I2C”);
更新oco(com9)的服务器代码。这可能需要几分钟的时间。

2)扫描可用的I2C地址。

addr = scanI2CBus (a)
addr =1×1单元阵列{' 0 x48 '}

请注意温度传感器的地址。您将使用它来创建I2C设备对象。

3)创建I2C设备对象

tmp102 =设备(a,“I2CAddress”, 0 x48)
tmp102 = device with properties: Interface: 'I2C' I2CAddress: 72 ('0x48') Bus: 0 SCLPin: 'A5' sappin: 'A4' BitRate: 100000 (bits/s)显示功能

总线默认为0。例如,如果您正在使用Due板上的专用I2C接口(SDA1、SCL1),请确保将总线设置为1

读取温度的值

传感器的温度读数以Normal模式数字化为12位,其中MSB为8位,LSB为4位。每个LSB等于0.0625摄氏度。先写要读取的寄存器地址,然后从中读取两个字节的数据。使用uint8数据类型。

写(tmp102, 0 x0,“uint8”);数据= read(tmp102, 2,“uint8”);温度=(DOUBLE(数据(1)(数据(1)),4))+ DOUBLE(int16(数据(2)),-4))))* 0.0625
温度= 26.6250

读取更高的测量极限温度

通过TMP102传感器的扩展模式,您可以使用13位测量128度以上的温度。为此,您需要将值'B060'以十六进制形式写入地址1的配置寄存器。

writeRegister (tmp102 1 0 xb060,'uint16');

从寄存器中读取温度以获得更精确的结果。TMP102的转换率默认为4Hz。因此,在每次读取之前,暂停MATLAB大约0.25s。

写(tmp102, 0 x0,“uint8”);暂停(0.25);数据= read(tmp102, 2,“uint8”);温度= (double(bitshift(int16(data(1)), 5)) + double(bitshift(int16(data(2)), -3))) * 0.0625
温度= 26.6250

若要更改回默认配置,请键入

writeRegister (tmp102 1 0 xa060,'uint16');

清理

当连接不再需要时,清除关联对象。

清晰的tmp102一个