【BLDC】同步电机控制器【STM32】

整个文章分为三部分 1.大概原理 2.硬件部分 3.程序部分

大概原理

永磁同步电机转动过程

如图所示,就是通过切换不同方向的定子在不同时刻的磁极方向和磁场强度来拉动转子旋转。

驱动方式

其中驱动方式有两大派系 一是连续出招 讲究一套接化发(FOC PMSM  Idq 正弦波马鞍波 矢量连续转矩控制 这个比较复杂不适合萌新快速实现 我也是菜鸡在这挖个坑年底有时间的话出个FOC)另一个就是简单粗暴大力出奇迹的BLDC了,其实BLDC也可以做阶梯逐渐连续不过那都是后话,本文介绍的是最简单的驱动方式——直接PWM-方波 控制。

II.硬件部分


三相永磁同步电机,肯定是三相,三相控制三个电磁铁的磁极变换 肯定要用到三个桥,如下图所示:

三相驱动电路
通过三个上下桥臂的分别导通来给线圈两端施加不同方向和大小的压差来产生电磁力拉动线圈,图中还包含了 电流采样和霍尔传感器。


III.程序部分

接下来才是本文的终点,前面都是热身。驱动程序主要分了几个函数:

1.六路PWM控制

2.BLDC波形输出

3.(同步)驱动换相

注:由于插入代码文本格式会很乱,想要代码文本可以截图OCR(QQ提取图中文字)。

PWM控制输出

控制PWM的时候我选择的6PWM模式 可以分别控制上下桥壁这样更灵活,程序如下6PWM控制函数

传统的是6步控制输出 然后我在此基础上又增加到了十二步
BLDCPWM输出

这里输入参数更加灵活可以自由变换输出方式,下面是驱动换向,换向就是step自增然后到最大值回到第一个,反转就是step自减然后最小值回到最大值就完事了。
换向控制

到这里 我们已经成功的把他变成了一个步进电机 一步一步走,如果要连续让他转起来呢,可以使用一个定时器中断通过调整周期来控制转速,当然假设负载不变 转速和占空输出是正相关的,所以在调整转速的时候也需要调整占空输出。
调速控制

当然这一些都是开环的,以上步骤均未采用任何反馈,有小伙伴会问如果出现了丢步或者其他情况导致转子位置异常呢?在开环情况下 只能让电流尽可能大然后大力出奇迹就完了,如果你只是想让电机转起来,那么以上的步骤已经可以让你的电机转起来了,下面要介绍的同步控制。

说起同步控制那门门道道可多了巴拉巴拉,我只是个萌新所以希望能抛砖引玉,各位大佬不喜勿喷。在同步控制里,最关键的就是知道当前转子的位置也就是角度是多少可以是相对定子也可以是绝对角度总之知道了转子的位置咱们就可以同步控制了。

同步控制,并非定子的磁场方向和转子始终是正对着的如果正对着那就是一直互相吸引根本不会动,想让他转起来就需要定子始终和转子的牵引有一个角度这样他才能转起来。下面举一个例子才更好的理解驱动的方式。

定子磁场与转子磁场的关系

常见获取转子角度的方式有 无感 电流位置速度观测器,还有就是外加传感器的 霍尔 光栅。其中霍尔有电机内部的三相霍尔 还有外部输出轴上后加的,前者可以直接找驱动表驱动,后者得根据具体情况通过比例和偏置得到转子相对定子的位置才能控制输出,其中有又可分为线性霍尔和数字霍尔。

这里我用的是数字霍尔且是在输出轴后加的需要经过比例和偏置得到相对角度,程序中我又增加了同步调整时间的速度计算来反馈调解电流输出这样可以实现调整电流环来稳定速度,其中cmd  1是调整位置 0是锁定位置。下面是我的同步BLDC控制程序。
同步位置调整

点赞

发表评论

Title - Artist
0:00