主要内容

icm20948

接通ICM-20948传感器Arduino硬件I2C总线

描述

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

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

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

创建

描述

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

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

输入参数

全部展开

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

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

名称-值参数

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

例子:imu = icm20948(a,总线=1);

您可以将该页上的任何属性指定为名称-值对。

属性

全部展开

请注意

  • 除了所有的财产SamplesRead而且SamplesAvailable可以通过指定为名称-值对参数,同时创建icm20948对象。

  • 的属性I2CAddress而且公共汽车是不可变的(属性值在构造过程中设置;在创建对象后,不能更改不可变属性的值)。

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

当同一块硬件板上有多个ICM-20948预期地址的I2C设备连接时,需要指定传感器的I2C地址。ICM-20948可以有多个I2C地址,具体取决于传感器引脚AD0上的逻辑级别。

销的名字 销状态 I2C地址
AD0 [0 x68, 0 x0c]
[0 x69, 0 x0c]

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

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

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

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

例子:imu = icm20948(a,I2CAddress=[0x69, 0x0C])

“0x69”是ICM-20948的加速度计和陀螺仪的I2C地址。“0x0C”是ICM-20948磁强计的I2C地址。

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

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

例子:imu = icm20948(a,总线=1)创建icm20948如果ICM-20948传感器连接Arduino Due板的1号总线,则为传感器对象。

数据类型:

在执行过程中从传感器读取数据的采样/秒速率函数。

请注意

ICM-20948传感器的实时数据速率采集,可通过单片机实现SampleRate财产和函数。

可调:没有

数据类型:

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

可调:没有

数据类型:

指定在执行过程中是返回最新的还是最古老的数据样本函数。样本的数量取决于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(微特斯拉)

  • 温度-以摄氏度为单位的n × 1数组

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

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

可调:没有

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

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

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

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

可调:是的

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

使用

创建ICM-20948传感器连接

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

A = arduino();

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

清晰的一个;A = arduino(“COM4为”“Uno”、图书馆=“I2C”);

创建传感器对象。

Imu = icm20948(a)
imu = icm20948 with properties: I2CAddress: 104 ("0x68"): 12 ("0xC") SCLPin: "A5" SDAPin: "A4" SampleRate: 100 (Samples/s) SamplesPerRead: 10 ReadMode: 'latest' SamplesRead: 0 SamplesAvailable: 0显示所有属性,函数

创建带有附加名称-值对参数的ICM-20948传感器连接

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

清晰的imu;imu = icm20948(a,SampleRate=50,SamplesPerRead=5,ReadMode=“最新”
imu = icm20948 with properties: I2CAddress: 104 ("0x68"): 12 ("0xC") SCLPin: "A5" SDAPin: "A4" SampleRate: 50 (Samples/s) SamplesPerRead: 5 ReadMode: 'latest' SamplesRead: 0 SamplesAvailable: 0显示所有属性,函数

对象的功能

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

更多关于

全部展开

版本历史

R2022a中引入

另请参阅