Driving a PMSM (sometimes called BLDC)

Hello friends,

I have a small PMS motor here (Permanent Magnet Synchronous Motor, sometimes also called BLDC). I want to use this motor to run a current or torque control (Field-Oriented Control). I already have a driver for it. Now, I would like to simply control the motor, just to make it spin. With a DC motor, you would simply connect the poles to a power source and the motor would spin. I want to achieve the same with the PMSM. My idea is to apply a sinusoidal voltage (in the form of PWM signals) to each of the three phases. The voltages are then shifted by 120° each. When I connect the driver, write my program, and turn on the power source, the motor briefly jumps, moves a little bit, and then stops. The power source indicates that no current is flowing (only 20mA). I have already checked all inputs and outputs on the driver with an oscilloscope. The PWM signals are definitely correct. I expected the motor to run. I suspect that at the moment of turning on the power source, a short, very high current flows, causing the driver to go into protection mode, and that's why nothing works. My idea would be to slowly increase the amplitude and frequency of the sinusoidal voltage to avoid high current spikes. But maybe it's something completely different. Can anyone help me? Is my approach even feasible?

Here are the parts used:

PMSM: GM2804 Gimbal Motor from iFlight (GM2804 Gimbal Motor)
Driver: SimpleFOC Mini V1 (SimpleFOCMini | Arduino-FOC)

Thank you very much!!!

Welcome to the forum

Have you looked the the library mentioned on the driver page ? It seems to be available from the IDE Library Manager

See https://docs.simplefoc.com/

1 Like

Yes I did. When I put on a sinusoidal PWM signal on the driver (on pins In1, in2, in3) , it outputs me the right signals (on pins M1, M2, M3).

But there is nothing happening. The motor doesn’t move and there doesn’t seem to be current flowing.

I dont know what I’m doing wrong

Neither can anyone else with the code posted using code tags and a schematic of your circuit.

I’ll provide the code tomorrow . I’m coding in Matlab/Simulink. But that should not really matter because in the end the language doesn’t matter but the methods that are being used. Thanks

Since you don't know why the thing doesn't work, you can't truly be sure it's not the code, can you? If you want the help of the real gurus (not me) you have to meet at least halfway.

Check this out:

Don’t worry about it. I’ll send everything I got tomorrow:)

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.