.. _bldc_foc_control: BLDC FOC Control ================================ Overview -------- The **bldc_foc** project contains the speed control and position control of DC brushless motors. - Use the **FOC** control algorithm 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 :ref:`Motor Pin ` related content 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` 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 .. code-block:: console 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