Controlling current spikes in BLDC Motor control


Thread Starter


I am implementing a scheme for the speed control of a BLDC Motor. For good dynamic performance, I am incorporating a torque control loop too. I am doing this by measuring the dc link current at the input of the inverter, driving the motor.

I am measuring this current by putting a series resistance, and then amplifying the pd across the resistance by a high-common mode difference amplifier (AD629), and then again filtering the same using a general purpose 741 IC (to weed out the 20KHz PWM frequency signals).

The problem is that there are a lot of spikes in the current being measured due to which the current control loop is not performing effectively. The PI controller values were designed using MATLAB. Simulations are working perfectly well. What might be the reason for these current spikes? Is it a hardware problem? Could anyone out there give me some suggestions on how to go about troubleshooting this? I don't want to put a very smooth filter in the current loop, since it will terribly slow down the loop, which will adversely affect the system performance.

curt wuollet

Two reasons that stand out for current spikes are mechanical loading spikes, (something binding, etc.) and simultaneous conduction in an H bridge, if you are using one. Both point out the difference between simulation and the real world. If you were writing your own software. I would suggest simple digital filtering to simply limit the rate of change to what the real signal can be expected to do. I don't know how you would do this in MATLAB, but there is probably a way. Done with some thought and finesse, this can more resemble clipping than filtering and can work without too much delay provided the spikes are somewhat faster than load changes.

DC link current isn't motor coils' current and because that you don't close current loop by right way. Thus you need implement current measurement by another way. Reviewing Application Notes for DCBL controllers maybe suggested.