This is the official repository of the paper: Unraveling Induction Motor State through Thermal Imaging and Edge Processing: A Step towards Explainable Fault Diagnosis.
The Squirrel Cage Induction Motor Fault Diagnosis Dataset is a multi-sensor data collection gathered to expand research on anomaly detection, fault diagnosis, and predictive maintenance, mainly using non-invasive methods such as thermal observation or vibration measurement. The measurements were gathered using advanced laboratory at Wrocław University of Science and Technology, designed to simulate and study motor defects. The collected dataset is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License whereas accompanying scripts and source code are licensed under a MIT License.
@Article{Piechocki2023,
journal="Eksploatacja i Niezawodność – Maintenance and Reliability",
issn="1507-2711",
volume="25",
number="3",
year="2023",
title="Unraveling Induction Motor State through Thermal Imaging and Edge Processing: A Step towards Explainable Fault Diagnosis",
abstract="Equipment condition monitoring is essential to maintain the reliability of the electromechanical systems. Recently topics related to fault diagnosis have attracted significant interest, rapidly evolving this research area. This study presents a non-invasive method for online state classification of a squirrel-cage induction motor. The solution utilizes thermal imaging for non-contact analysis of thermal changes in machinery. Moreover, used convolutional neural networks (CNNs) streamline extracting relevant features from data and malfunction distinction without defining strict rules. A wide range of neural networks was evaluated to explore the possibilities of the proposed approach and their outputs were verified using model interpretability methods. Besides, the top-performing architectures were optimized and deployed on resource-constrained hardware to examine the system's performance in operating conditions. Overall, the completed tests have confirmed that the proposed approach is feasible, provides accurate results, and successfully operates even when deployed on edge devices.",
author="Piechocki, Mateusz and Pajchrowski, Tomasz and Kraft, Marek and Wolkiewicz, Marcin and Ewert, Paweł",
doi="10.17531/ein/170114",
url="https://doi.org/10.17531/ein/170114"
}
- Workswell InfraRed Camera (WIC) 640 with 640x512 px resolution.
- Flir Lepton 3.5 (160x120 px resolution IR sensor) with PureThermal 2 Smart I/O Module
- Triaxial DeltaTron Accelerometer Type 4506
- Arduino Nano 33 BLE Sense with LSM9DS1 IMU and MP34DT05 Omnidirectional Digital Microphone.
The collected data is publicly available under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License at zenodo and chmura.put.poznan.pl.
The Squirrel-Cage Induction Motor Fault Diagnosis dataset consists of several, simultaneously collected signals, such as:
Current and voltage signals with XXX Hz sampling rate in sig_*_R_U_W.tdms files
The dataset separates the use of different clutches and within them, experiments are split into 3 classes, according to the below description:
misalignment-X-*
- whereX
means a series of experiments with the same shiftrotor-X-*
- whereX
means the number of broken cages in the squirrel-cage rotor- the other contains samples gathered during proper motor operation
All examinations were conducted with and without current load - in the range 0 - 6 A (*-current-load-X
).
Thermal images
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
def normalize(data):
return (data - data.min()) / (data.max() - data.min())
img_raw = np.asarray(Image.open(filepath), dtype=np.uint16)
img = normalize(img_raw)
plt.imshow(img, cmap='gray')
LabVIEW tdms data
import matplotlib.pyplot as plt
import pandas as pd
from nptdms import TdmsFile
tdms_file = TdmsFile.read(filepath)
df = tdms_file.as_dataframe()
df.plot()
IMU cbor files
import cbor2
import matplotlib.pyplot as plt
import numpy as np
with open(filepath, 'rb') as f:
data = cbor2.decoder.load(f)
data = np.array(data['payload']['values'])
print(data.shape)
plt.plot(data)
Microphone JSON files
import json
import matplotlib.pyplot as plt
import numpy as np
with open(filepath, 'r') as f:
data = json.load(f)
plt.plot(data['payload']['values'])