ST Motor Control WorkBench6.4.2 FOC控制代码生成
利用st官方库控制BLDC 自定义硬件快速生成代码
ST Motor Control Workbench(简称MC Workbench)是 STMicroelectronics 推出的一款电机控制配置与调试软件工具,主要用于其电机控制生态(特别是 STM32 MCU)。
不需要从头写算法,通过界面设置:
- 电机参数(电阻、电感、极对数等)
- 控制参数(PI调节器、速度环、电流环)
- 传感器类型(霍尔、编码器、无感)
👉 对初学者特别友好
下面是大致的流程 欢迎批评指正
点击电路板设计
点击create new board
选择inverter,点击next
填写相关信息 选择mcu 点击next
填写电机参数
点击左下角add features
首先添加current sensing,开关上升时间结合原理图询问ai
点击add hardward variant,结合原理图,这里选择三电阻采样 外部运放
填写对应参数
选择对应引脚
点击apply
接着添加phase voltage generation
结合硬件填写参数
选择pwm生成方式
填写参数
对应引脚 点击apply
接着添加速度和位置传感器
根据实际情况选择编码器 若是磁编码器需要移植代码 选择正交编码器方便移植
这里因为是磁编码器 所以引脚随便选 只要不冲突
接着点击add features
加入串口
选择好引脚和串口号
逆变器创建完成 点击save
后续若想修改 同样是点击电路板设计
创建新工程 选择电路板
找到自己设计的电路板
电机选择一个参数,类型最接近的即可
选择完成后来到此界面
接着点击任意一个蓝色模块 配置电机参数
由于使用的磁编码器需要移植代码替换速度传感器接口 故先使用无感测试一下其他功能
电流检测的增益一定要正确
设置无感启动参数 其他界面参数默认
驱动设置 设置目标转速
配置串口 不使用freertos
配置完成 点击生成工程代码
选择编译器等 点击生成
点击运行cubemx
勾选生成.c.h文件 点击生成代码
取消browse information 加快编译速度
勾选复位并运行
点击motor pilot
连接板子
点击 start 只要电机能转动说明基本上没问题
接着换成正交编码器
配置启动参数
生成cubemx
失能正交编码器使用的timer
勾选
配置自己的编码器 我这里使用的磁编码器tle5012 采用spi通信
生成代码
采用磁编码器 若是正交编码器则不需要修改官方代码
添加自己的编码器文件 测试编码器功能是否正常
来到mc_task_foc.c文件
电机执行的状态机逻辑在这里
由这个函数__weak void TSK_MediumFrequencyTaskM1(void)执行 中等频率任务
首先修改这个计算角度的函数
接着修改计算速度的函数 具体修改不过多说明
接着修改设置角度的函数
加入d轴对齐编码器校准函数
其他修改的地方如下
最后修改状态机编码器校准部分
最后在上位机修改pid参数完成测试
