Automated multi-channel sensor data analysis pipeline for rotating component test engineering.
Raw DAQ-style CSV data goes in. Filtered signals, metrics, FFT diagnostics, fault-signature detection, plots, and a structured PDF report come out.
Manual test-data review is slow, inconsistent, and easy to repeat incorrectly. This project shows how a test engineer can move from raw sensor data to a repeatable pass/fail report with diagnostic evidence, including detection of a planted bearing-defect signature.
The same structure can be adapted to motor test benches, drivetrain endurance tests, rotating machinery validation, aerospace component tests, and other sensor-heavy workflows.
- Multi-channel analysis for vibration, force, torque, and temperature
- 4th-order Butterworth low-pass filtering for noise reduction
- FFT-based vibration analysis with automatic dominant-frequency peak detection
- Configurable acceptance limits with pass/fail evaluation
- Automated PDF report generation with plots and engineering summary
- Optional real-time DAQ simulator with live FFT display
- Deterministic validation through
scripts/validate.pyand GitHub Actions
The synthetic test data simulates a rotating component at 3,000 RPM with 1x, 2x, and 3x shaft harmonics, sensor noise, and a planted bearing-defect signature near 187 Hz.
The pipeline correctly recovers:
| Detection | Frequency | Meaning |
|---|---|---|
| 1x shaft | 50 Hz |
Fundamental rotation rate |
| 2x shaft | 100 Hz |
Shaft harmonic |
| 3x shaft | 150 Hz |
Higher-order shaft harmonic |
| Bearing defect | 187 Hz |
Planted fault signature surfaced by FFT analysis |
That is the core engineering value: distinguishing expected rotational harmonics from a diagnostic fault signature.
Raw sensor CSV
-> Butterworth low-pass filtering
-> RMS, peak, and mean metrics
-> Single-sided real FFT
-> Acceptance-limit evaluation
-> Automated PDF report
| Item | Value |
|---|---|
| Sampling rate | 10,000 Hz |
| Filter | 4th order Butterworth low-pass |
| Cutoff frequency | 2,000 Hz |
| FFT method | Single-sided real FFT |
| Channels | Vibration, force, torque, temperature |
| Report output | PDF plus PNG plots |
Deterministic synthetic-data run:
| Check | Result |
|---|---|
| Samples analysed | 50,000 |
| Vibration RMS | 1.6020 g |
| Force peak | 271.9539 N |
| Torque RMS | 22.0745 Nm |
| Temperature peak | 59.5630 C |
| Dominant FFT peaks | 50.0 Hz, 100.0 Hz, 187.0 Hz, 150.0 Hz |
| Diagnostic note | 187 Hz bearing-defect zone activity detected |
.
+-- src/
| +-- test_analyser.py # Batch analysis and PDF report generation
| +-- daq_realtime.py # Real-time DAQ simulation and live FFT display
+-- docs/
| +-- images/ # Generated plot previews for GitHub
| +-- test_report_sample.pdf
+-- scripts/
| +-- validate.py # Deterministic validation checks
+-- .github/workflows/ # GitHub Actions CI
+-- requirements.txt
+-- LICENSE
+-- README.md
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtpython -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txtRun the batch analyser with generated synthetic data:
python src/test_analyser.pyRun deterministic validation checks:
python scripts/validate.pyValidation confirms the channel limits, the 50 Hz shaft frequency, the 187 Hz bearing-defect signature, and the generated PDF/plot outputs.
Run with your own CSV file:
python src/test_analyser.py path/to/sensor_data.csvExpected CSV format:
time_s,vibration_g,force_N,torque_Nm,temperature_C
0.0001,1.234,252.1,22.3,42.0Run the real-time DAQ simulator:
python src/daq_realtime.pyThe batch analyser writes files to output/:
test_report.pdf- structured report with metrics, FFT analysis, plots, and pass/fail verdictplot_time_domain.png- four-channel time-domain overviewplot_fft.png- vibration spectrum with dominant frequency peaksplot_metrics.png- metrics compared against acceptance limits
A sample report is available at docs/test_report_sample.pdf.
- Signal processing - DAQ workflows, Butterworth filtering, FFT analysis, peak detection
- Test engineering - multi-channel measurement, acceptance limits, automated pass/fail, fault-signature detection
- Reporting automation - programmatic PDF report generation with ReportLab
- Verification engineering - deterministic seeds, CI-runnable validation, reproducible outputs
- Python toolchain - NumPy, Pandas, SciPy, Matplotlib, ReportLab
Relevant for rotating machinery testing, condition monitoring, NVH, motor and drivetrain testing, aerospace test engineering, and automotive endurance testing.
Prajwal Bekal
M.Sc. Mechatronics and Cyber-Physical Systems, Deggendorf Institute of Technology
GitHub | LinkedIn
MIT - see LICENSE.


