SimpleFOC Porting to STM32 (7) – Porting STM32F405RGT6
目录
SimpleFOC的教程比较多,做了一个总的链接,欢迎点击阅读:SimpleFOC教程链接汇总
说明
一、点亮LED
链接:https://pan.baidu.com/s/17qQ46F0iCBFMCMNmwC0gnA
提取码:k11o
1.1、原理图
1.2、硬件准备
序号 | 名称 | 数量 |
---|---|---|
1 | mODrive 驱动板 | 1 |
2 | 12V电源 | 1 |
3 | ST-link | 1 |
1.3、烧写
注意:
1、如果接了外部12V电源,ST-link的3.3或者5V电源就不要再跟单片机连接,
2、ST-link跟单片机连接,以前我都是只接三根线,现在发现RST信号接入后烧写更稳定了。
二、开环控制
你仍然可以阅读前面这篇文章,以获取更多详细的介绍,SimpleFOC移植STM32(二)—— 开环控制
本节代码下载:
链接:https://pan.baidu.com/s/1W2JHhauEoUN_0f2LhlJ-uA
提取码:4kyc
2.1、硬件准备
序号 | 名称 | 数量 |
---|---|---|
1 | mODrive 驱动板 | 1 |
2 | 12V电源 | 1 |
3 | ST-link | 1 |
4 | USB转串口 | 1 |
5 | 2804云台电机 | 1 |
mODrive 购买链接:某宝购买
电机 购买链接:某宝购买
2.2、硬件连接
2.3、打开工程
2.4、修改参数
2.5、编译下载,观察运行
三、角度读取
你仍然可以阅读前面这篇文章,获得单独读某一个编码器的代码,SimpleFOC移植STM32(三)—— 角度读取
本节代码下载:
链接:https://pan.baidu.com/s/1YrT5unNBFKMGDQByhpgwXA
提取码:gbpo
3.1、硬件准备
序号 | 名称 | 数量 |
---|---|---|
1 | mODrive 驱动板 | 1 |
2 | 12V电源 | 1 |
3 | ST-link | 1 |
4 | USB转串口 | 1 |
5 | 带编码器云台电机 | 2 |
6 | 杜邦线 | 若干 |
mODrive 购买链接:某宝购买
电机 购买链接:某宝购买
3.2、硬件连接
3.3、接线说明
3.4、打开工程
3.5、修改代码
3.6、编译下载,观察运行
四、闭环控制
如果对闭环控制的概念不了解,可以先看这篇文章 SimpleFOC移植STM32(四)—— 闭环控制
本节代码下载:
链接:https://pan.baidu.com/s/1Bha2drDvGBN-s00lSc7kKA
提取码:ra3b
4.1、硬件准备
序号 | 名称 | 数量 |
---|---|---|
1 | mODrive 驱动板 | 1 |
2 | 12V电源 | 1 |
3 | ST-link | 1 |
4 | USB转串口 | 1 |
5 | 带编码器航模电机 | 1 |
6 | 杜邦线 | 若干 |
mODrive 购买链接:某宝购买
电机 购买链接:某宝购买
4.2、硬件连接
4.3、打开工程
4.4、修改代码
4.5、编译下载,观察运行
最大转速可以达到T300(300 rad/s = 47.8圈/s = 2866)。
五、电流采样
更多详细的介绍,请阅读前面这篇文章,SimpleFOC移植STM32(五)—— 电流采样及其变换
5.1、硬件准备
序号 | 名称 | 数量 |
---|---|---|
1 | mODrive 驱动板 | 1 |
2 | 12V电源 | 1 |
3 | ST-link | 1 |
4 | USB转串口 | 1 |
5 | 带编码器航模电机 | 1 |
6 | 杜邦线 | 若干 |
mODrive 购买链接:某宝购买
电机 购买链接:某宝购买
5.2、硬件连接
5.3、打开工程
5.4、修改代码
5.5、编译下载,观察运行
5.6、当前问题

六、双电机控制
更多详细的介绍,请阅读前面这篇文章,SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈
6.1、他山之石
在STM32F103C8T6的应用中,电流采样采用Inline模式,AD转换随用随取,不用考虑同步的问题;而在当前的Lowside采样模式下,只能在下臂打开的同时采样电流,需要配置AD转换为定时器触发模式,先来看下odrive的电流采样方法:
TIM1/TIM8的PWM频率配置为24KHz( 168M/(3500*2) ),
每个PWM周期包含两次更新,TIM_1_8_RCR为2,所以每3次触发一次定时器更新,更新频率为16KHz。
下臂关闭的时候,采集的电压为电流为0时的电压,做校准,
下臂打开的时候,采集的电流做为有效电流值处理,
TIM1更新触发
ADC1注入转换channel_6/Vbus,
ADC2注入转换channel_10/m0_phB,
ADC3注入转换channel_11/m0_phC,
TIM8更新触发
ADC2规则转换channel_13/m1_phB,
ADC3规则转换channel_12/m1_phC,
本文代码只在上电时,采样一次Vbus(电源电压),正常运行不对ADC1触发采样,
本文代码只在上电时,校准下电流为0时的电压,正常运行不做校准,
6.2、硬件准备
序号 | 名称 | 数量 |
---|---|---|
1 | mODrive 驱动板 | 1 |
2 | 12V电源 | 1 |
3 | ST-link | 1 |
4 | USB转串口 | 1 |
5 | 带编码器航模电机 | 2 |
6 | 杜邦线 | 若干 |
mODrive 购买链接:某宝购买
电机 购买链接:某宝购买
6.3、硬件连接
6.5、打开工程
6.5、修改代码
根据编码器类型选择
6.6、编译下载,观察运行
A指令控制M0电机,B指令控制M1电机。
6.7、本节重点
在实际控制中,参考了odrive的做法,同时根据使用的MOS管特性,调整了偏移值以获得最佳效果。
七、力矩反馈
自从两个月前改进了力矩反馈的代码后,电机三相线可以随便接,只要电机参数设置好,力矩反馈并无难点,不再赘述!
(完)