主要内容

lsm9ds1

接通LSM9DS1传感器Arduino硬件I2C总线

描述

lsm9ds1对象读取加速度,角速度和磁场使用STMicroelectronics®LSM9DS1传感器。LSM9DS1是一个9自由度(DOF)惯性测量单元(IMU),用于读取所有三个维度的加速度、角速度和磁场。

lsm9ds1对象表示到Arduino上的设备的连接®硬件I2C总线。将LSM9DS1传感器连接到Arduino硬件的I2C引脚上。你可以在MATLAB中读取传感器的数据®使用对象函数。

在使用lsm9ds1对象,使用arduino并设置其属性。在创建Arduino对象时,请确保包含I2C库。有关更多信息,请参见连接Arduino硬件

创建

描述

imu= lsm9ds1 (一个创建带有默认属性值的传感器对象。这个对象代表Arduino硬件上传感器的连接,一个

imu= lsm9ds1 (一个名称,值使用一个或多个属性创建传感器对象名称,值对参数。

例子:imu = lsm9ds1(a,'SampleRate',150,'SamplesPerRead',5,'ReadMode','latest');

输入参数

全部展开

Arduino硬件连接创建使用arduino,指定为对象。

例子:Imu = lsm9ds1(a)在Arduino对象上创建与LSM9DS1传感器的连接,一个

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

当多个I2C设备与LSM9DS1的预期地址连接在同一个硬件板上时,需要指定传感器的I2C地址。LSM9DS1可以有多个从地址,这取决于传感器的引脚SDO_A/G和SDO_M上的逻辑级别。

SDO_A/G引脚状态 SDO_M引脚状态 I2C地址
[0 x6a, 0 x1c]
[0 x6a, 0 x1e]
[0 x6b 0 x1c]
[0 x6b, 0 x1e]

I2C地址可以通过以下方式指定:

  • I2C地址十六进制、十进制或二进制格式的数字数组

  • I2C地址的十六进制值字符串数组

  • I2C地址的十六进制值的字符向量的单元格数组

例子:imu = lsm9ds1(a,'I2CAddress',{'0x6A','0x1C'})

“0 x6a”为LSM9DS1的加速度计和陀螺仪的I2C地址。“0 x1c”为LSM9DS1磁力计的I2C地址。

如果未指定,将使用表中可用的I2C设备地址之一创建对象。可用的I2C设备和预期的地址将由使用决定scanI2CBus

I2C总线号,指定为0或1。缺省值为0。

例子:imu = lsm9ds1(a, '总线',1)在Arduino Due板的总线1上创建传感器对象

数据类型:

属性

全部展开

请注意

属性还可以在创建对象时用作名值对参数lsm9ds1对象。

当多个I2C设备与LSM9DS1的预期地址连接在同一个硬件板上时,需要指定传感器的I2C地址。LSM9DS1可以有多个外设地址,这取决于传感器的引脚SDO_A/G和SDO_M上的逻辑级别。

SDO_A/G引脚状态 SDO_M引脚状态 I2C地址
[0 x6a, 0 x1c]
[0 x6a, 0 x1e]
[0 x6b 0 x1c]
[0 x6b, 0 x1e]

I2C地址可以通过以下方式指定:

  • I2C地址十六进制、十进制或二进制格式的数字数组

  • I2C地址的十六进制值字符串数组

  • I2C地址的十六进制值的字符向量的单元格数组

“0 x6a”为LSM9DS1的加速度计和陀螺仪的I2C地址。“0 x1c”为LSM9DS1磁力计的I2C地址。

如果未指定,将使用表中可用的I2C设备地址之一创建对象。可用的I2C设备和预期的地址将由使用决定scanI2CBus

I2C总线号,指定为0或1。缺省值为0。

数据类型:

请注意

除了TimeFormat,所有其他属性都是不可调的,这意味着一旦对象被锁定,您就不能更改它们的值。对象被锁定函数,以及释放功能解锁它们。如果属性是可调的,则可以随时更改其值。

从传感器读取数据的采样速率/秒。

可调:没有

数据类型:

在单次执行中从传感器读取的样本数函数。

可调:没有

数据类型:

指定是返回最新的还是旧的数据样本。样本的数量取决于SamplesPerRead价值。从传感器读取的数据存储在MATLAB缓冲区中。

  • 最新的- - - - - -

    提供缓冲区中可用的最新数据示例。缓冲区中所有先前的数据样本将被丢弃。例如,如果SamplesPerRead= 3,则返回传感器读取的最近三个数据样本。

    下图说明了如何返回最新的数据样本,假设S1是存储在缓冲区中的第一个传感器数据,S2是第二个数据,等等,Sn是存储在缓冲区中的最后一个数据SamplesPerRead属性在创建传感器对象时设置为3。

  • 最古老的- - - - - -

    提供缓冲区中可用的最古老的数据示例。在这种情况下,没有数据样本被丢弃。例如,如果SamplesPerRead= 3,第一次读取时返回前三个数据样本,第二次读取时返回后三个数据样本,依此类推。

    下图说明了如何返回最古老的数据样本,假设S1是存储在缓冲区中的第一个传感器数据,S2是第二个数据,以此类推,Sn是存储在缓冲区中的最后一个数据SamplesPerRead属性在创建传感器对象时设置为3。

可调:没有

数据类型:特征向量|字符串

此属性是只读的。

从第一个示例读取.当你释放的对象,SamplesRead设置为0。

数据类型:

此属性是只读的。

在主机缓冲区中可用的示例。从传感器读取的数据存储在MATLAB缓冲区中。SamplesAvailable属性显示的数目SamplesAvailable在这个主机缓冲区中。当你释放对象时,SamplesAvailable设置为0。当ReadMode传感器的值设置为最新的SamplesAvailable总是0。

数据类型:

方法返回的数据的输出格式函数。

OutputFormat设置为时间表时,返回的数据有以下字段:

  • 时间-时间戳datetime持续时间格式

  • 加速度- n × 3阵列,单位为m/s2

  • 角速度- n × 3阵列,单位为rad/s

  • 磁场- n × 3阵列,单位为µT(微特斯拉)

OutputFormat设置为矩阵,数据以加速度、角速度、磁场和时间戳的矩阵形式返回。传感器读数的单位与时间表格式。每个矩阵的大小是n × 3。

N为每次读取的样本数SamplesPerRead.每个字段的三列表示x、y和z轴上的测量值。

可调:没有

数据类型:特征向量|字符串

设置读取传感器数据时显示时间的格式。

  • datetime—显示读取数据的日期和时间。

  • 持续时间—显示锁定传感器对象后经过的时间,以秒为单位。类的第一次调用时锁定传感器对象函数在对象创建之后或在执行释放函数。

可调:是的

数据类型:特征向量|字符串

使用

创建LSM9DS1传感器连接

创建一个Arduino对象,包括I2C库。

A = arduino();

方法中显式指定名称-值对,同时创建Arduino对象。

清晰的一个;A = arduino(“COM4为”“Uno”“库”“I2C”);

创建传感器对象。

Imu = lsm9ds1(a)
imu = lsm9ds1 with properties: I2CAddress: 107 ("0x6B"): 30 ("0x1E") SCLPin: "A5" SDAPin: "A4" SampleRate: 100 (Samples/s) SamplesPerRead: 10 ReadMode: 'latest' SamplesRead: 0 SamplesAvailable: 0显示所有属性,函数

使用附加的名称-值对参数创建LSM9DS1传感器连接

创建带有附加属性的传感器对象,这些属性指定为名称-值对参数。

清晰的imu;Imu = lsm9ds1(a,“SampleRate”, 50岁,“SamplesPerRead”5,“ReadMode”“古老的”
imu = lsm9ds1与属性:I2CAddress: 107(“0x6B”):30(“0x1E”)SCLPin:“A5”SDAPin:“A4”SampleRate: 50(样本/秒)SamplesPerRead: 5 ReadMode:“最古老的”SamplesRead: 0 SamplesAvailable: 0显示所有属性,功能

对象的功能

readAcceleration 从传感器读取一个加速度样本
readAngularVelocity 从传感器读取一个角速度样本
readMagneticField 从传感器读取一个磁场样本
按指定速率读取传感器实时数据
释放 释放传感器对象
冲洗 刷新主机缓冲区
信息 读取传感器相关信息

更多关于

全部展开

版本历史

在R2019a中引入

另请参阅

主题