无刷电机基础
参考:
其余参考在文中以链接形式给出
1. 无刷电机的简要原理
无刷电机相比于有刷电机,最大的特点是没有电刷,这就带来了性能佳,寿命长等优点
1.1 无刷电机的分类
直流无刷电机分为下面两类:
- 无刷直流电机(BLDC):方波驱动,航模上用的都是这种
- 永磁同步电机(PMSM):正弦波驱动,性能比BLDC更优,但算法更复杂
两者大体结构上是相同的,结构上最大的区别是定子的形状不同,这就带来了控制算法的不同
1.2 无刷电机控制系统的基本结构
无刷电机的控制系统包含以下部分
- 无刷电机
- 三项驱动(即六个桥,比有刷电机的多一个桥)
- 控制系统
- 速度反馈(霍尔传感器直接读取转子位置让控制系统进行信号控制)
1.3 无刷电机的转动原理
1.3.1 BLDC六步换向方波控制法
类似于步进电机,每对线圈按一定规律进行通断即可,每次两两导通
驱动简单,但缺点明显,输出转矩不恒定,电机震动大
tips:步进电机转动的最小单位是一个步距角,无刷电机是连续运转,所以两者并不一样
1.3.2 FOC(Field-Oriented Control)
FOC直译是磁场定向控制,也被称作矢量控制,是目前BLDC和PMSM最优的控制方法之一,三相同时工作
FOC精确控制磁场大小与方向,使电机平稳高效运转
FOC的具体过程有点复杂…略 具体可在得捷电子和稚晖君的知乎文章上学习
FOC是一个巨牛逼的算法,用得好可以对电机实现像素级控制,想知道有多牛逼的话可以看稚晖君的这个视频
1.3.3 无传感器无刷电机启动方法
无刷电机需要对速度和位置进行测量,测量就有传感器读取和无传感器估计(有的电机因为条件限制没有能安装传感器)的方案
对于无传感器的电机有专门的启动方法
三段式启动法:
- 预定位:确定转子的初始位置
通过变化磁场, 让转子转到特定的位置
-
加速运行:让转子加速转动起来
-
开环切入闭环
当反电动势检测稳定的时候,说明电机速度达到无位置传感器运行的要求,可以切入闭环状态
2.无刷电机相关参数
2.1 KV值
表示电机电压每升高1V,电机转速提升的数值,在无刷电机中,这个值是常量
2.2 表贴式与内嵌式
表贴式(SPM)的无刷电机的转子在电机表面,定子在电机中心。而内嵌式(IPM)的转子在电机中心,和传统电机一样,定子在电机表面。
SPM和IPM影响反电动势的测量
2.3 尺寸
无刷电机的型号命名中有2216、2814等数字,其中,前两位是指定子的外径,后两位是指定子的高度,越大的电机功率越大,重量也越大
2.4 槽数和级数
- 槽数(N):定子铁芯的数量,因为无刷电机是三相电机,所以N是三的倍数
- 级数(P):定子上磁钢的数量,磁钢是南北极成对使用,所以P是偶数
特性:
- N、P越小,转速越高
- N相同时,P越大,扭矩越大
- N、P越大,电机顿挫越小,震动越小,但槽数多了之后难以做好动平衡
2.5 市面上常用无刷电机型号
因为航模电机不需要精确控制,而且需要控制成本,所以航模电机一般都是BLDC
-
A2212
-
2208
-
3650(感觉这种比较适合用来做小车,这个也是BLDC,驱动板是生成PWM的)
-
野火PMSM
无刷电机型号巨多,要用的时候自己选型就好
3. 无刷电机驱动
3.1 电子调速器
电子调速器即电调(ESC),特指航模行业的无刷电机驱动器,一般体积小,电流大,工作时间短
只能用来调速,往信号口输入PWM即可驱动,具体怎么驱动的没找到资料,把调速器买来测一下输出就知道了
3.2 FOC驱动器
应用于各个行业,功能多样化和复杂
4.使用ST库让无刷电机转起来
我们需要的硬件:
- 无刷电机
- 电机驱动
- 电机控制器(32可满足)
- 电源
tips:通过得捷电子可以查到很多相关资料和硬件选型
软件
- CubeMax
- ST的FOC库 ST Motor Control WorkBenck、ST Motor Profile等
思路:
- 对于没有得到详细参数的电机,先用ST Motor Profile对电机参数进行辨识(即测量),并将参数保存
有参数的可以直接进入下一步
- 在Motor Control WorkBenck中对参数进行修改与确认,基本上是自动填好不用再修改了的
没有问题开始生成工程,选择Keil V5和STM32CubeMax的固件版本
点击GENERRATE开始生成工程,成功后点击Run STM32CubeMax对STM32剩下的引脚进行配置,最后在CubeMax中生成代码即可得到完整的工程
编译没有问题可以直接将代码烧到开发板中
回到Motor Control WorkBenck中,点击功能栏中的仪表盘按钮,可以进入控制无刷电机的上位机程序,这时候就可以自如控制电机了
如果想要编程控制电机,研究一下工程中ST的FOC库,用库函数进行编程即可
如果想不使用库,可能就得自己研究控制算法自己写程序了