I'm trying to controll a 3-phase brushless DC motor (24V, 4000rpm) with the BOOSTXL-DRV8301 shield for Texas Instruments launchpad. The motor receives one of the following singals on each port (A, B and C):

enter image description here

The motor drive shield is connected to a programmable DC power supply (Siglent SPD3303X-E).

When I try to control the motor with the shown signals that are directly attached to its ports while setting the PSU on 24V (2A max), the motor does not turn. The boost shields FAULT-LED lits up but the signal is still sent to the output ports without a reaction of the motor.

But if I limit the max current to for example 0.5A so that the PSU jumps to it's constant current mode, the motor will turn.

With another BLDC (12V, ~0,5A max) the PSU will instantly jump to constant current mode regardless of its settings.

Both motors have been testet on a working motor driver and are not faulty.

Why is the first motor only working on constant current mode and not when I'm applying a constant voltage? Why does the PSU switch to C.C. on the second motor even when it's max current is set slightly above the motors max. current? The datasheet of the PSU says that it will do this only, if the load wants to draw more current than the settings are providing.

Thank you for any help.

  • 1
    \$\begingroup\$ Your description is not understandable. What are those 3 signals: "motor receives one of the following singals on each port"??!! Schematics, please and litle more better explanation. \$\endgroup\$ – Marko Buršič Jul 31 '17 at 11:20
  • \$\begingroup\$ A 3-phase BLDC has three ports, each for one phase to energize the coils. The shown signals are the ones that are given to each of those ports (often labeled a, b and c). The order does not matter in this case because it will only determine the direction in which the rotor will turn. For the schematics there is not much to show. The motor is directly attached to the BOOSTXL-DRV8301 shield which is connected to the programmable power supply unit and put on top of a Texas Instruments Launchpad. \$\endgroup\$ – Meyu Jul 31 '17 at 11:35
  • \$\begingroup\$ Edit your question to include a schematic showing how everything is connected. It is not clear from the words. I do not think you will get a good answer unless you show how everything is connected. \$\endgroup\$ – mkeith Jul 31 '17 at 19:13

If you are applying these signals directly to a brushless motor, the current draw will be very high. Motor current is proportional to motor torque, and you are trying to accelerate the rotor up to your switching speed quickly. Even with an unloaded motor, this will cause high currents. Your PSU is probably capable of high instantaneous current (well above the current limit) thus tripping your fault. When you lower the current, the fault is not set. BLDC's require some type of feedback to switch phases at the proper time. If you simply apply the phase timing without regard to the rotor position when you switch, the motor acts as a stepper motor. On each phase change, the rotor will move to its new position and stop, and then the current will increase to your PSU current limit.


First of all, the drive has not ports A, B, C but rather outputs. One of the problems you may have encounter is that current controller doesn't work as it should. Maybe it needs some tuning to match the motor inductance, resistance,....

Another weird aspect of your output recording is that the output voltage should have SVPWM pattern, while yours is something else - not knowing the frequency and state of motor rpm is difficult to understand what you have recorded.

Q: Do you actually use InstaSpin FOC library?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.