Problems in Increasing Speed in FPGA based FOC Implementation

Hi all,

I am currently working on implementation of FOC On FPGA. I am developing it by writing bare VHDL code, not using Matlab-Simulink or other block diagram based software.

Referring this link for my 3phase BLDC PMSM (16poles,180W) Motor with Incremental Encoder with Index line, [Field-Oriented Control (FOC) - MATLAB & Simulink] (https://in.mathworks.com/help/mcb/gs/implement-motor-speed-control-by-using-field-oriented-control-foc.html) from Matlab, I have implemented all blocks. But my motor doesn’t behave the way I expect.

The 3 outputs of Inverse Clarke transform that form the phase currents are not the same value. As a result, when SVPWM runs, motor vibrates a lot. To reduce this, I average out the 3 currents ignoring sign value and feed the value to drive the motor. This solves the vibration problem.

Also, I am unable to see increase in motor RPM if I increase current amplitude or vary the SVPWM frequency. I have spanned the SVPWM frequency from 10Hz to 30KHz, covering well beyond human audible range. Still, no success. My FPGA system clock is 25MHz.

Was unable to find a suitable link in the forums for my problem, sorry if I missed it in case. Can anyone suggest how to increase motor RPM in FOC? or point to the right resources where I need support.

Thanks In Advance.