FOC电调设计

文章目录

  • 电机绕组以及换相原理
  • 为什么线圈产生的感应磁场与永久磁铁产生的磁场正交时(夹角为90°时电机获得最大力矩)
  • 电机FOC算法的解释
    • FOC控制PMSM四步骤
    • Clark变化和Park变换
    • SVPWM
  • 电子调速器硬件设计
  • 电子调速器软件设计
  • FOC常用算法

电机绕组以及换相原理

刚开始接触无刷电机,对于其实现原理的解释,目前读过的"无感无刷直流电机之电调设计全攻略"一文阐述了常用的电机绕组方式。详情请见文末【附件】
为表示对原作者的尊敬,在此附原作者的联系方式。By: timegate 墨鸢 技术交流 QQ:1181733110/Email:[email protected]

为什么线圈产生的感应磁场与永久磁铁产生的磁场正交时(夹角为90°时电机获得最大力矩)

  • 所有的电机,扭矩的大小正比于内外两个磁场的叉乘,也就是两个磁场围成的平行四边形的面积。于是当两个磁场重合,平行四边形面积为0,此时扭矩为0。当两个磁场呈90度,平行四边形面积最大,扭矩也最大。

    在此摘抄知乎大佬的原有描述知乎:
    所以(敲黑板状),所有电机,注意是所有电机(包括直流电机和任何类型电机),他们的转矩都是正比于内外两个磁场的叉乘(如_ 图),就是两个磁场矢 量围成的平行四边形的面积。如果两个磁铁方向重合(如最开始的第一张图), 那么平行四边形的面积就是零,没有力。如果方向错开点(比如最开始的第二张图),那么就会有力 (因为平行四边形面积不为零啦)。上面这个公式(电机转矩正比于转子磁场叉乘定子磁场)是电机学最最最最最本质的公式!
    FOC电调设计_第1张图片

电机FOC算法的解释

FOC控制PMSM四步骤

  • 第一步,选定q、d轴的值(比如q=2,d=0)。
  • 第二步,用编码器测量转子电角度。
  • 第三步,利用公式计算α,β值。
    在这里插入图片描述
  • 第四步,把α,β输入SVPWM。

Clark变化和Park变换

  • Clark等幅值和等功率变换的推导
    这篇来自百度文库的文章,是我目前读到的讲述Clark变换中等幅值变化和等功率变化系数由来逻辑和理论最为清晰的文章。其中讲述了等幅值变换k=2/3和等功率变换k=sqrt(2/3)系数的由来。

SVPWM

SVPWM:空间矢量脉宽调制——SVPWM,主要思想是把三相交流电机等效为直流电机,然后跟踪圆形磁场。

  • SVPWM的伏秒原理

电子调速器硬件设计

在参加RoboMaster2019机器人大赛深圳总决赛之后,有幸和哈尔滨工业大学负责调试电调的同学交流彼此的经验。之后在设计电调的过程中,曾多次求助于哈工大的老哥。同时在机器人队中,当时和我搭档的电路,分享了他自己的原理图库和常用STM32外围电路的原理图。这些都给予了我莫大的帮助,在此表示衷心的感谢。

  • 器件选型
    在硬件方面,参考本杰明VESC6.4版本的电调电路。主控选用64管脚的STM32F405RGT6,DC-DC降压电路选择TPS5430+AMS1117。采用DRV8301作为三项悬臂桥的驱动芯片,由于DRV8301内部集成自举电路,所以6个MOSET都选用了N沟道的IRFS7530。电机单个相臂的电流采样,通过在象限中串联阻止很小(0.001Ω)的采样电阻,并在电阻两端并AD8418采样采样放大芯片,得到准确电压值。
  • AD常用封装的获取
    立创有开源常用的元器件封装:嘉立创 SMT贴片 可贴列表 Altium Designer 集成库(正式版)
    有Gitee(国内GitHub)账号,可以直接考虑Clone工程到本地。Gitee远端

电子调速器软件设计

  • PMSM电子调速器采用FOC控制理论,代码参考本杰明(VESC)开源电调BLDC驱动代码和MC_SDK-5.4.3。
    • ARM基于keil+Stm32CubeMx开发。并在Cube生成的系统架构上加入Middlewaer/MC_Function和Middleware/IC_Driver,分别用来移植MC_SDK中的核心代码和板载IC芯片的驱动。原计划完全移植MC_SDK,但是MC_SDK是将浮点型转换为int型(其中大部分是以Q15格式参与运算)。
    • 参考StackOverFlow中关于利用FPU进行浮点运算与将浮点转换为整型,再进行运算速度的比较和代码编写难易程度的对比。决定利用STM32F4(Crotex-M4架构)的FPU运算单元,进行浮点运算。所以在进行代码开发的时候,以MC_SDK生成的代码框架为参考,以本杰明VESC_BLCD工程为核心,进行移植。
  • Middleware/MC_Funciton
    • mc_math.c:
      利用arm_crotexM4_math.lib库(其接口API在arm_math.h中申明)实现sin和cos在ARM Crotex-M4架构中的快速实现,以提高CPU运算效率。
    • pid_Regulator.c:
      直接移植在机器人队中的位置式PID算好发和增量式PID算法
    • curr_vol_tempature_fdbk
      相电流采用注入通道采样,由TIM1->CH4产生TRGO时间触发。并且一个ADC只采样一个相臂,进行多次采样。用一个ADC对一个相臂采集多次的原因在于:FOC电调设计_第2张图片
    • enc_speed_pos_fdbk
      利用正交编码器进行速度和位置计算,用于之后速度和位置环。
    • mc_svpwm
      svpwm的实现,利用switch和case语句对不同扇区的MOS管导通时间进行计算,算法参见:SVPWM算法原理及详解
  • Configure/FOC
    利用Configure.h对硬件的常用参数进行宏定义,便于移植修改。
    stm32f4xx_hal_configure.h是cube生成的关于HAL库裁剪的常用定义。

FOC常用算法

  • 在FOC电机控制中,应用到的算法无传感器位置估算算法外,还有转子定位算法、最大转矩、最大电压提速算法、顺风启动算法、逆风启动算法、恒功率算法、缺相检测算法等。以上来自轻动科技说明。

你可能感兴趣的:(FOC电调设计)