在高通跃龙IQ-9100上实现振荡电流故障预测(1): 硬件接入与数据采集
💡前言
工业现场最让人头疼的就是设备突然“趴窝”——电机轴承磨损、泵体异常振动、负载电流突变,往往等到故障发生再报修,已经为时已晚。
近年来,预测性维护(PdM)越来越受到关注,其核心思路是:将振动、电流等关键数据实时采集上来,利用AI在边缘端进行分析,提前发现异常趋势,避免突发停机。
本文作为系列第一篇,重点介绍如何在高通跃龙IQ-9100平台上完成硬件接入与数据采集,下一篇文章将详细介绍LSTM模型的部署与边缘推理实现。
1. 整体方案
本方案分为三大部分:
- 传感器采集
- IQ-9100数据采集
- 边缘AI推理
系统同时采集振动和电流两条通道的数据,能够同时监测“机械状态”和“电气状态”,相比单一维度监测,准确性更高。
系统架构如下:
振动传感器 + 电流传感器 → IQ-9100采集 → 边缘AI推理

从硬件接线到生成可用CSV文件的完整流程如下:
连接传感器 → I2C配置 → 数据采集脚本 → 落盘为CSV

2. 硬件相关
2.1 硬件选型
- 振动传感器:采用 MPU6050 六轴IMU,I2C接口,测量三轴加速度;若为产线场景,可替换为 IEPE 加速度传感器 + 外部ADC。
- 电流传感器:采用 INA219 电流/电压模块,I2C接口,测量直流电流,量程为 32V / 3.2A。
- 主控平台:IQ-9100 开发板,支持树莓派兼容的40Pin扩展口,内置I2C总线,
实验中使用的硬件是Thundercomm 的高通跃龙IQ-9100平台。
2.2 硬件接线
MPU6050 和 INA219 挂载在同一组I2C总线上,地址分别为 0x68 和 0x40,互不冲突。
| 传感器 | SDA | SCL | VCC | GND |
|---|---|---|---|---|
| MPU6050 | Pin 3 (GPIO2) | Pin 5 (GPIO3) | 3.3V | GND |
| INA219 | 同上 SDA | 同上 SCL | 3.3V | GND |
⚠️ 注意:VCC 接 3.3V,切勿接入 5V。若开发板 I2C 电平为 1.8V,需加电平转换电路。
2.3 确认I2C已使能
通过 SSH 连接 IQ-9100,执行以下命令检查 I2C 设备:
# 查看 I2C 节点
ls /dev/i2c-*
# 扫描 I2C 总线上的设备(总线号可能为0或1)
sudo i2cdetect -y 0
若能扫描到 0x68(MPU6050)和 0x40(INA219),说明硬件与驱动均正常。
3. 软件环境准备
# 安装 Python3 和 pip
sudo apt update
sudo apt install -y python3 python3-pip
# 安装 I2C 访问库
pip3 install smbus2 numpy
# 将当前用户加入 i2c 组,避免每次使用 sudo
sudo usermod -aG i2c $USER
# 重新登录生效
4. 数据采集脚本实操
4.1 MPU6050 振动数据读取
MPU6050 输出三轴加速度,单位为 g。本方案采样率设置为 1kHz,可通过修改 SMPLRT_DIV 寄存器调整。
# sensor_mpu6050.py
import smbus2
import time
import struct
MPU6050_ADDR = 0x68
PWR_MGMT_1 = 0x6B
ACCEL_CONFIG = 0x1C
ACCEL_XOUT_H = 0x3B
SMPLRT_DIV = 0x19
def init_mpu(bus_num=1):
bus = smbus2.SMBus(bus_num)
bus.write_byte_data(MPU6050_ADDR, PWR_MGMT_1, 0) # 唤醒
bus.write_byte_data(MPU6050_ADDR, SMPLRT_DIV, 9) # 1kHz采样
bus.write_byte_data(MPU6050_ADDR, ACCEL_CONFIG, 0) # ±2g量程
return bus
def read_accel(bus):
data = bus.read_i2c_block_data(MPU6050_ADDR, ACCEL_XOUT_H, 6)
ax = struct.unpack('h', bytes([data[0], data[1]]))[0] / 16384.0
ay = struct.unpack('h', bytes([data[2], data[3]]))[0] / 16384.0
az = struct.unpack('h', bytes([data[4], data[5]]))[0] / 16384.0
return ax, ay, az
if __name__ == "__main__":
bus = init_mpu()
for _ in range(10):
ax, ay, az = read_accel(bus)
print(f"accel: x={ax:.4f} y={ay:.4f} z={az:.4f} g")
time.sleep(0.01)
执行上述脚本,若能连续输出变化的数据,说明传感器工作正常。
4.2 INA219 电流读取
INA219 配置分流电阻为 0.1Ω,量程为 32V / 3.2A。若使用不同型号或分流电阻,需根据数据手册重新计算校准值。
# sensor_ina219.py
import smbus2
import struct
INA219_ADDR = 0x40
REG_CONFIG = 0x00
REG_BUSVOLTAGE = 0x02
REG_CURRENT = 0x04
REG_CALIBRATION = 0x05
def init_ina219(bus_num=1, shunt_ohms=0.1):
bus = smbus2.SMBus(bus_num)
# 32V / 1A 量程,采样 12bit
bus.write_word_data(INA219_ADDR, REG_CONFIG, 0x2180)
# 校准值:0.04096 / (0.1 * 0.001) = 4096
cal = int(0.04096 / (shunt_ohms * 0.001))
bus.write_word_data(INA219_ADDR, REG_CALIBRATION, cal)
return bus
def read_current_ma(bus):
raw = bus.read_word_data(INA219_ADDR, REG_CURRENT)
val = struct.unpack('>h', struct.pack('>H', raw))[0]
return val * 1.0 # 1mA/LSB,与0.1Ω shunt、32V/3.2A量程配套
4.3 统一采集 + 落盘
将振动与电流数据合并采集,按时间戳写入CSV文件,便于后续训练与推理使用。
# collector.py
import time
import csv
from datetime import datetime
from sensor_mpu6050 import init_mpu, read_accel
from sensor_ina219 import init_ina219, read_current_ma
def run_collector(duration_sec=60, interval=0.01, out_file="sensor_data.csv"):
bus = init_mpu()
ina = init_ina219()
with open(out_file, 'w', newline='') as f:
w = csv.writer(f)
w.writerow(['timestamp', 'ax', 'ay', 'az', 'current_ma'])
t0 = time.time()
while time.time() - t0 < duration_sec:
ts = datetime.now().isoformat()
ax, ay, az = read_accel(bus)
i_ma = read_current_ma(ina)
w.writerow([ts, f'{ax:.6f}', f'{ay:.6f}', f'{az:.6f}', i_ma])
f.flush()
time.sleep(interval)
print("采集完成:", out_file)
if __name__ == "__main__":
run_collector(duration_sec=10)
interval=0.01对应 100Hz 采样率- 若设置为
0.001,则为 1kHz 采样率 - 若数据量较大,建议采用循环缓存并定期写入文件
5. 小结
至此,我们已经在 IQ-9100 上完成了以下工作:
- 通过 I2C 接口连接 MPU6050 和 INA219 传感器
- 使用 Python 脚本实现振动与电流数据的实时采集
- 将采集数据按时间戳保存为 CSV 文件,为后续建模提供数据基础
下一篇文章将介绍:
使用 CWRU 数据集或自采数据训练 LSTM 故障分类模型,导出 ONNX 格式并部署至 IQ-9100,实现“采集即推理、就地告警”的完整预测性维护闭环。
系列文章预告
(一)硬件接入与数据采集 ✅
(二)LSTM 模型训练与 ONNX 部署
(三)边缘推理与实时告警系统实现
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)