7.9.9. Fan Blade Fault Classification
Detect faults in BLDC fans from 3-axis accelerometer data, from data collection to deployment on a C2000 device. This is a full application example: it covers data capture with the Edge AI Studio Model Composer, training with Tiny ML ModelZoo, and live preview on the F28P55x LaunchPad.
Example folder: examples/fan_blade_fault_classification
(GitHub)
7.9.9.1. Overview
Task: classification of 4 conditions (
task_type: motor_fault); an anomaly detection variant is also providedSensor: ADXL355-PMDZ accelerometer (X, Y, Z), 3 variables, default 4 kHz sampling in the capture firmware
Dataset:
fan_blade_faultfromhttps://software-dl.ti.com/C2000/esd/mcu_ai/datasets/fan_blade_fault_dsi.zipModel:
CLS_4k_NPUfor the main configsPrimary device: F28P55
7.9.9.2. Demo Setup
Hardware setup for the fan blade fault demo
7.9.9.3. Fault Types
|
Normal: fan running without faults |
|
Blade damage: physical damage to the fan blades |
|
Blade imbalance: uneven weight distribution |
|
Blade obstruction: foreign object interfering with the blade |
7.9.9.4. Available Configurations
Config file |
Device |
Model |
Notes |
|---|---|---|---|
|
F28P55 |
|
classification |
|
CC1312, CC1314, CC1352, CC1354, CC2755, CC35X1 |
|
classification, same dataset and preset |
|
MSPM0G5187 |
|
dataset |
|
F28P55 |
|
autoencoder, dataset |
|
F29H85 |
|
anomaly detection with on-device training; see On-Device Training — Overview |
7.9.9.5. Running the Example
Install Tiny ML ModelZoo first (Installation, Quickstart), then run from the
tinyml-modelzoo folder:
./run_tinyml_modelzoo.sh examples/fan_blade_fault_classification/config.yaml
See Running Examples for all launchers, for example:
run_tinyml_modelzoo.bat examples\fan_blade_fault_classification\config.yaml
7.9.9.6. Configuration (config.yaml)
common:
task_type: motor_fault
target_device: F28P55
dataset:
dataset_name: fan_blade_fault
input_data_path: https://software-dl.ti.com/C2000/esd/mcu_ai/datasets/fan_blade_fault_dsi.zip
data_processing_feature_extraction:
data_proc_transforms: []
feature_extraction_name: Input256_FFTBIN_16Feature_8Frame_3InputChannel_removeDC_2D1
variables: 3
training:
model_name: CLS_4k_NPU
batch_size: 256
training_epochs: 20
testing: {}
compilation: {}
7.9.9.7. Collecting Your Own Data
The example readme.md describes the full data capture flow:
Connect the ADXL355-PMDZ accelerometer to the F28P55 LaunchPad over SPI (chip select, MOSI, MISO, SCLK, data ready, ground and 3.3 V). The pin table and pinout pictures are in the example folder’s
readme.md.Load
eAI_data_acq_dap_f28p55x.zip(inexamples/fan_blade_fault_classification/assets) from CCS onto the LaunchPad.In Edge AI Studio Model Composer, select the serial port, choose Capture & Display Live Data, sensor Vibration, and capture each condition.
Train with Model Composer or with the config above.
See also Edge AI Studio Model Composer and Classification Dataset Format.
7.9.9.8. Results
The example readme.md states that config.yaml should give 100% accuracy. In the automated 1.5.0 config
test run, every classification config reached a test accuracy of 100.00% (AUC ROC 1.000): F28P55, CC1312,
CC1314, CC1352, CC1354, CC2755, CC35X1 (CLS_4k_NPU, 3,842 parameters) and MSPM0G5187
(CLS_1k_NPU, 994 parameters). The figures below are illustrative examples from the 1.4.0 version of this page.
One-vs-rest ROC curves
Class score differences between class pairs
PCA of the extracted training features: clear cluster separation shows the classes are separable with this preset
7.9.9.9. Deploying and Live Preview
The compiled model is written to .../compilation/artifacts in the run folder, and feature extraction
golden vectors to .../training/quantization/golden_vectors. Integrate them into a CCS project as
described in Deploying a ModelZoo Run to an SDK Example (Golden-Vector Check). A single-sensor live preview project
(eAI_mfd_eval_f28p55x.zip) is included in the example’s assets folder.
7.9.9.10. Anomaly Detection Variant
config_anomaly_detection.yaml trains an AD_17k autoencoder on normal data only
(100 normal files); the 187 anomaly files (imbalance, damage, obstruction) are used only for testing. The
example’s readme_anomaly_detection.md reports, at threshold mean + 4.0 * std (28.18): false positive
rate 0.15%, recall 100%, precision 99.98% and F1 99.99%. In the 1.5.0 test run this config produced an
F1 score of 99.99%, and the on-device training config an F1 score of 99.79%.
Reconstruction error for normal vs. fault data (illustrative, from 1.4.0)
7.9.9.11. See Also
Blower Imbalance: motor current based imbalance detection