FOC学习路线

FOC学习路线

1.了解理论基础

个人感觉全网讲得最好的是稚慧君的这篇文章

2.1 输出路线

stm32输出pwm -> 预驱 -> 6个MOS管组成的三相半桥电路

2.1.1 pwm信号

stm32输出的pwm可能是3路或者6路(取决于你的预驱)

  • 6路实际上是在3路的基础上加上对应互补的pwm
  • 如果是6路,一般意味着你要自己控制死区,输出6路pwm一般要高级定时器才能做到

死区:指在两个通道切换时的延迟,用于确保一个通道完全关闭后另一个通道才开始导通,为了避免功率开关器件(如MOSFET或IGBT)同时导通而导致短路

2.1.2 预驱相关
  • 功能是根据逻辑信号(pwm的高低电平)控制MOS管开关,因为一般驱动MOS管所需要的电压是stm32无法提供的
  • 预驱其实还有一些功能,比如:
    • 常见的故障检测保护:过流、过温、过压、欠压等
    • 死区插入、防直通
    • 运放(用于电流采样)
    • 三相半桥电路(即可以省去6个MOS管,在制作小电机驱动板时可以节省大量空间)
2.2 输入参数

一般来说有两个输入:

  • 转子位置,Park算法需要
  • 电流大小及方向,Clarke算法需要
2.2.1 转子位置

其中转子位置可以采样传感器(编码器)获取,也可以基于反电动势估算出来,所以foc也可以根据此被划分为

  • 有感foc:适合低转速,需要精准控制旋转角度。比如:关节电机、云台
  • 无感foc:适合高转速,要求低成本。比如:电动工具、吹风筒等

之所以分别有这样的特性,是因为一般无感的采用的位置估算器要在高转速、有规律的速度下才可准确估算位置。同时无感由于不需要传感器,成本可以进一步压缩。

编码器有很多种类,以下要常见的三种:

编码器类型 精度 分辨率 输出信号 优点 缺点 典型应用
霍尔传感器(Hall Sensors) 低(每转 3~6 个状态) 数字(6步换向) 成本低、耐用、抗干扰强 分辨率低、无法精确定位 通用BLDC、风机、电动工具
增量式编码器(Incremental Encoder) 中~高(CPR: 100~5000) A/B/Z 相差分或单端 成本适中、高分辨率、易用 掉电丢失位置、需回零 CNC、机器人
磁编码器(Magnetic Encoder) 中~高 中(12~18位) 模拟或数字输出 抗震、防尘、非接触 易受强磁场干扰 电动车辆、工业电机、伺服系统

对应我们来说,大多数情况都是需要精准控制旋转角度,因此采用磁编码器合适。

2.2.2 电流采样

电流采样的原理其实就是欧姆定律:I = U / R

串联一个采样电阻到需要测量电流的线路中,测量电阻两端的电压,然后用这个电压除以采样电阻大小就能得到电流大小。

采样电阻: 高精度低阻值的电阻,一般为0.1~100毫欧,1%精度

但实际上因为两端的电压差较小,需要使用运算放大器实现差分放大,并且添加偏置电压后才将通过ADC转换。

不过原理虽然是这样,但还是有问题需要解决。

2.2.2.1.采样电阻所在的位置

根据采样电阻的位置可以分为:高端采样、低端采样和直接采样

  • 高端采样:采样电阻处于母线与上桥臂之间
    • 优点:不干扰负载的地电压
    • 缺点:要承受较高的电压,有较强的共模噪声,一般需要专用的高边电流检测IC或隔离方案,成本高
  • 低端采样:采样电阻处于下桥壁和功率地之间
    • 优点:接近0v的共模电压,较低的共模噪声
    • 缺点:抬高了负载的地电压
  • 直接采样:采样电阻处于半桥和电机相线之间
    • 不知道为什么网上鲜有此类型的讨论,也没看见有使用的

根据易用性和成本考虑,基本上都是选择低端采样。

2.2.2.2.采样电阻的数量

根据采样电阻的数量,可以分为单电阻、双电阻、三电阻方案。

在理论上,使用基尔霍夫电流定律(KCL),我们需要知道无刷电机流过三相线中任意两条的电流大小及方向,就能得到算出第三条,进而实现电流重构,因此我们需要采样得到两条相线的电流及方向。

  • 单电阻:只需要一个采样电阻和运放,采样电阻处于三个半桥整体和功率地之间,采样的电流实际上是母线电流,而不是单独的相电流。
    • 优点:硬件成本低
    • 缺点:对采样时机要求较高,需要在一个PWM周期内采样两次(分时采样)
  • 双电阻:使用两个采样电阻和运放,分别处于三个下桥臂中的任意两个 和功率地之间,采样的是相电流
    • 优点:对采样时机的要求不高,但也有要求
    • 缺点:成本比单电阻的高
  • 三电阻:使用两个采样电阻和运放,分别处于三个下桥臂中的和功率地之间
    • 优点:任何时候都能采样(实际上是根据SVPWM扇区取其中两个采样然后算出一个)
    • 缺点:成本高
2.2.2.3.阻值应该选择

采样电阻不能太大,如果大了,那采样电阻的功耗高,发热严重,而且抬高了地电压;也不能太小,如果太小导致两边的压差过小,噪声占比会提高,而差分放大后,噪声也一样会被放大。

采样电阻要根据驱动板设计的最大电流选择,首先看公式:

ADC测量电压 = (电流 x 采样电阻) x 放大倍数 + 偏置电压

偏置电压一般为ADC测量范围的二分之一,stm32的主控电压为3.3V,若VREF也为3.3V,则ADC测量范围为0~3.3V,则偏置电压为1.65V。

放大倍数一般考虑5~10倍,然后按照最大电流的1.3倍(留有余量)带入公式计算采样电阻。

2.2.2.4.为什么要加上偏置电压

因为电流方向有正有反,而ADC只能测量正电压。

3.算法实现

3.1 进度划分

关于foc算法学习的进度,个人觉得可以分为:

  • 实现开环拖动
    • 目标:让电机转起来,验证硬件、stm32外设配置、基础的算法(Clarke、Park、SVPWM)是否正常
    • 方法:
      • 给定一个旋转的电压矢量(如 Vd=0, Vq=固定值),通过 SVPWM 输出;
      • 不依赖电流反馈,也不依赖精确转子位置(可用假设角度线性增加)
  • 基于开环电流实现速度或位置闭环
    • 目标:实现最基础的可用,检验编码器及编码器驱动是否正常
  • 基于电流采样实现电流(力矩)闭环
    • 目标:FOC核心,验证电流采样电路是否正常、ADC采样时机是否正确
  • 实现力矩-(速度/位置)闭环
    • 完整实现FOC功能

3.2 学习方向

  1. 看灯哥开源的,但由于用的是Arduino,所以只能学学原理,然后可以自己尝试移植到stm32

  2. 如果会使用MATLAB,可以考虑基于仿真实现一遍算法

  3. 参考开源项目

    • dgm:单路foc,基于GD32,代码写得很好
    • ODrive:国内外最热门的foc开源项目之一,基于stm32f405驱动双路foc,但是开发环境非Keil,且基于freetrtos多任务与c++,代码架构复杂,学习难度较大。感兴趣的可以阅读loop222大佬的文章,但帮助有限。
    • AxDrive-L:板子优雅,但复刻成本较高。作者提供的资料很详细,可以借鉴学习
      • 1. AxDrive-L 用户手册\](https://github.com/disnox/disnox_blog/blob/main/docs/project_group/motor_ctrl/AxDrive-L/1. AxDrive-L 用户手册.md)

      • 3. AxDrive-L 软件设计报告\](https://github.com/disnox/disnox_blog/blob/main/docs/project_group/motor_ctrl/AxDrive-L/3. AxDrive-L 软件设计报告.md)(没更)

    • 浩盛FOC&步进二合一驱动板
      • 软件开源、硬件原理图开源、实物在闲鱼有售
      • 代码写得很好,支持有感/无感

4.硬件实现

从容易到难为:

  • 主控 + 内置三相半桥的预驱(如DRV8313、MP6536) + 不要电流采样
    • 省略了MOS管部分电路,降低了极大难度
  • 主控 + 内置三相半桥的预驱(如DRV8313、MP6536) + 电流采样
    • 能实现电流闭环
  • 主控 + 预驱(如FD6288、EG2133、DRV8301) + 三相半桥(6个MOS+外围电路) + 电流采样
    • 能实现大功率的驱动

根据情况可以选择外接磁编码器,或者是直接加在驱动板背面。

常见编码器:AS5600、MT6501、MT6701、MA732、AS5047、SC60224

参考资料

相关推荐
无垠的广袤18 小时前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网
雲烟20 小时前
嵌入式设备EMC安规检测参考
网络·单片机·嵌入式硬件
泽虞20 小时前
《STM32单片机开发》p7
笔记·stm32·单片机·嵌入式硬件
田甲20 小时前
【STM32】 数码管驱动
stm32·单片机·嵌入式硬件
up向上up21 小时前
基于51单片机垃圾箱自动分类加料机快递物流分拣器系统设计
单片机·嵌入式硬件·51单片机
纳祥科技1 天前
Switch快充方案,内置GaN,集成了多个独立芯片
单片机
单片机日志1 天前
【单片机毕业设计】【mcugc-mcu826】基于单片机的智能风扇系统设计
stm32·单片机·嵌入式硬件·毕业设计·智能家居·课程设计·电子信息
松涛和鸣1 天前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法
小曹要微笑2 天前
STM32F7 时钟树简讲(快速入门)
c语言·stm32·单片机·嵌入式硬件·算法
XINVRY-FPGA2 天前
XCVP1802-2MSILSVC4072 AMD Xilinx Versal Premium Adaptive SoC FPGA
人工智能·嵌入式硬件·fpga开发·数据挖掘·云计算·硬件工程·fpga