过滤 I2C 数据
在内部集成电路 (I2C) 通信中,主设备可以与多达 128 个从设备通信。每个从站由唯一地址标识,数据传输在串行数据 (SDA) 线上进行。另一条线是串行时钟 (SCL) 线。I2C 也称为双线接口 (TWI)。
显示完整的 Wolfram 语言输入
在此范例中,代码部署到 Arduino Nano 以从 MPU-6050 I2C 传感器获取加速度计和陀螺仪读数。可以从加速度计或陀螺仪读数计算传感器的定向角。这些计算是不准确的,因为前者是有噪声的,而后者在稳定状态下漂移。因此,还部署了一个互补过滤器,它混合了两个值。未过滤和过滤的值将通过串行总线发回并可视化。
加速度沿着 和 轴,温度和角速度沿着 轴,存储在两个字节中,每个字节从地址 0x3D 开始。以下是获取这 8 个字节的规范。
初始化规范。
MPU-6050 的地址是 0x68,这是它的完整规范。
每个输入通道的转换。
显示完整的 Wolfram 语言输入
完整的微控制器规范。
预滤波器块以度为单位计算加速度计数据的角度,并以陀螺仪数据计算每秒度数的角速率。
互补滤波器获取预滤波器输出并计算滤波后的角度值。
积分器仅通过积分角速率来计算角度。
完整的系统模型。
部署代码。
打开与 Arduino Nano 的连接。
提交任务以读取数据。
解析并绘制数据。
显示完整的 Wolfram 语言输入
删除任务并关闭与设备的连接。