24.2. BLDC FOC Control

24.2.1. Overview

The bldc_foc project contains the speed control and position control of DC brushless motors. - Use the FOC control algorithm

24.2.2. Configurations

  • This program uses the BLM57050-1000 brushless motor of “Leisai Intelligence”, please refer to the Leisai Intelligence website for the specific parameters of the motor.

  • Board settings refer to the development board documentation Motor Pin related content

24.2.3. Current Loop Time

Hardware current loop will show time zero. The current loop calculation time is around 1us, this time fluctuates depending on the angle and fluctuates in the range of 25%, which is reproduced by performing the following operation:

  • Turning off the mcl_app_config.h macros except for MCL_EN_LOOP_TIME_COUNT

  • Compile option flash_xip_release

24.2.4. Running the demo

The motor runs at a speed of 20r/s. The following data can be configured by serial console:

speed float, range +40~-40, unit r/s

pos int, (-4000, +4000) corresponds to (-360, +360) degrees

mode bool, 1- Speed mode 0- Position mode

  • Speed mode

    Enter the correct speed parameters with serial console.

  • Position mode

    Set the position of the motor’s shaft, then the motor’s shaft will be locked at the specified position

loop current tick: 399
Mode selection:
0. Location mode.
1. Speed mode.
Enter mode code:
1
Speed mode, motor run, speed is: 20.000000.
Input speed:
10.5

loop current tick: 535
Speed mode, motor run, speed is: 10.500000.
Input speed:

Warning

  • After the motor is powered on, it will first perform the “alignment” action. If the motor is disturbed at this time, it will produce a jitter.

  • Pay attention to the current size, when abnormalities occur, please cut off the power at any time

  • When entering values for speed and position, a line break is required as an end-of-entry flag