主要内容

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

本示例展示如何使用Arduino硬件的MATLAB®支持包和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库。

A = arduino(“COM9”“Uno”“库”“I2C”);
更新Uno (COM9)上的服务器代码。这可能需要几分钟。

2)扫描可用的I2C地址。

addrs = 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' SDAPin: 'A4' BitRate: 100000 (bits/s)显示功能

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

读取温度值

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

写(tmp102, 0 x0,“uint8”);数据=读取(tmp102, 2,“uint8”);温度= (double(bitshift(int16(data(1)), 4)) + double(bitshift(int16(data(2)), -4))) * 0.0625
温度= 26.6250

读取温度具有更高的测量极限

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

writeRegister(tmp102, 1, 0xB060,“uint16”);

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

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

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

writeRegister(tmp102, 1, 0xA060,“uint16”);

清理

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

清晰的tmp102一个