High-Pitched Noise in Closed-Loop FOC (Working System, No Current Sensing)
Hi everyone,
I’m working on implementing closed-loop Field-Oriented Control (FOC) using the SimpleFOC library on an STM32-based system. The control itself is functioning well, but I’m facing a persistent high-pitched audible noisefrom the motor that I’m unable to eliminate.
System Overview
-
Control Method: Closed-loop FOC
-
Library: SimpleFOC
-
MCU: STM32 (G4 series)
-
Motor Type: BLDC
-
Feedback Sensor: Magnetic encoder (for position feedback)
-
Current Sensing:
Not implemented (voltage mode only) -
Application Goal: Stable position hold / precise motion control (no-GPS stabilization use case)
Current Status
-
Motor rotates smoothly -
Position control works reliably -
Motor can hold position without noticeable drift -
PID tuning improves responsiveness and precision
From a control standpoint, the system behaves as expected.
Observed Problem
-
The motor produces a continuous high-pitched noise during operation
-
Noise is present:
-
During rotation
-
During position hold
-
-
The noise:
-
Changes pitch when PID values are adjusted
-
Never fully disappears regardless of tuning
-
Troubleshooting Already Done
I’ve already tried the following without success:
Motor & Configuration
-
Verified motor parameters (pole pairs, KV, etc.)
-
Ensured correct sensor alignment and direction
-
Confirmed stable angle feedback
Control Tuning
-
Tuned velocity and position PID loops extensively
-
Adjusted:
-
P, I, D gains
-
Output ramp
-
Velocity limits
-
Behavior Observations
-
System is stable (no visible oscillation or runaway behavior)
-
Noise persists even when system is well-tuned
Can Anyone put some light on what’s going wrong here?