.. _bldc_foc_control:
BLDC FOC控制
====================
概述
------
**bldc_foc** 工程展示了直流无刷电机的有感转速控制、位置控制。
- 电机控制算法为 **FOC** (磁场定向控制)
- 支持硬件和软件两种电流环实现方式
- 支持速度环和位置环双闭环控制
- 支持ABZ编码器和QEI编码器两种位置检测方式
配置
------
- 本例程电机使用的是雷赛智能的 **BLM57050-1000** 无刷电机,电机具体参数请参考`雷赛智能官网 `_。
- 板子设置参考开发板文档 :ref:`Motor Pin ` 相关内容
- 确保PWM频率设置正确
- 确保电机极对数设置正确
- 确保ADC采样配置正确
- 外设配置说明:
- PWM配置:
- 使用BLDC PWM模块
- 配置死区时间,防止上下管直通
- 配置互补PWM输出
- 支持三相六路PWM输出
- 支持PWM同步触发ADC采样
- 使用影子寄存器更新PWM占空比
- 支持PWM故障保护功能
- ADC配置:
- 使用两个ADC模块分别采样U相和V相电流
- 配置ADC参考电压
- 配置运放增益
- 配置采样精度
- 配置采样分辨率
- 支持DMA传输
- 支持ADC同步采样
- 支持ADC采样触发源配置
- 支持ADC采样中断
- 编码器配置:
- 支持ABZ编码器和QEI编码器
- 配置编码器精度
- 配置编码器方向
- 配置编码器采样周期
- 支持编码器位置计数
- 支持编码器速度计算
- 定时器配置:
- 使用GPTMR作为定时器
- 配置电流环采样周期
- 配置速度环采样周期
- 配置位置环采样周期
- 支持定时器中断
- 完成上述过程后,给驱动板上电观察电流无异常后,给核心板上电,再次确认电流无异常后,就可以烧录程序,观察运行现象。
电流环时间
---------------
硬件电流环会显示时间零,软件电流环计算时间在1us左右,这个时间会根据角度不同而波动,波动范围在25%,通过进行如下操作复现:
- 关闭`mcl_app_config.h`除`MCL_EN_LOOP_TIME_COUNT`的宏
- 编译选项`flash_xip_release`
运行现象
------------
当工程正确运行后,电机以默认速度运行。
通过串口控制台可配置如下参数:
`speed` float类型, 输入范围+40~-40,单位r/s
- 正值表示正转
- 负值表示反转
- 0表示停止
`pos` int类型,范围不限,单位(-4000,+4000)对应(-360,+360)度
- 正值表示顺时针方向
- 负值表示逆时针方向
`mode` bool类型, 1- 速度模式 0-位置模式
- 速度模式:
- 可以在规定的速度范围内配置速度
- 使用PID算法进行速度控制
- 位置模式:
- 可以设置电机轴的位置,此时电机轴会锁定在指定的位置
- 使用PID算法进行位置控制
.. 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::
- 电机上电后首先要完成对中动作,这时候请不要干预电机运行,否则会产生抖动
- 电机运行时,请时刻注意电流大小,如果发生异常,请随时准备切断电源
- 输入速度和位置的数值时,需要输入换行符作为输入结束标志
- 首次运行时,建议从低速开始测试
- 在位置模式下,请确保电机不会受到外力干扰