# 无刷电机学习
**Repository Path**: blue-net--embedded/brushless-motor-learning
## Basic Information
- **Project Name**: 无刷电机学习
- **Description**: 无刷电机作为大学的四大电机之一(舵机,直流电机,步进电机,无刷电机),它学习的必要性可见一般,但是他的学习难度是最大的,为此我新建了一个仓库专门来记录我学习无刷电机的过程。
- **Primary Language**: C
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-02-15
- **Last Updated**: 2024-04-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 无刷电机学习
#### 介绍
- 无刷电机作为大学的四大电机之一([舵机](https://www.bilibili.com/video/BV14K411F7sT/?vd_source=60499a4850284be9bc949c4ca866b892),[直流电机](https://www.bilibili.com/video/BV1Hw411i7Mh/?vd_source=60499a4850284be9bc949c4ca866b892),[步进电机](https://www.bilibili.com/video/BV1cN4y197TG/?vd_source=60499a4850284be9bc949c4ca866b892),无刷电机),它是所有电机的本质,可以实现所有电机的效果,几乎具有所有电机的优点,但是他的学习难度是最大的,为此我新建了一个仓库专门来记录我学习无刷电机的过程。
#### 软件架构
- keil
- arduino
- VScode&platformIO
#### 硬件选择
1. 2208无刷电机
2. [灯哥开源mini无刷电机foc驱动板15块一个](https://item.taobao.com/item.htm?_u=h201e1c51t84d6&id=735220600761&spm=a1z09.2.0.0.3cc32e8dNpGzkS&skuId=5086502193223)
3. AS5600编码器
4. STM32F407ZG
5. ESP32
#### 名词解释&学前知识
- 很多人一开始接触无刷电机的时候也是一头雾水,专有的名词太多了,我们要先了解一遍避免学习时候的“卡顿”
1. **FOC**:所谓FOC就是指无刷电机的一种驱动方式
- 在驱动方式上,FOC是由软件控制的,由软件计算并输出三路pwm,并配合FOC驱动板对电机进行驱动。
- 在PCB设计上,FOC的元件可大可小,驱动板价格少说也是30起步。
- 在功能上,FOC适合低中高速的**高精度**的场合,**噪音小**,精确控制。
2. **电调**:电调也是驱动无刷电机的一种方式。电调就是将输入的两路直流电源自动切换成三相交流电输出。
- 在驱动方式上,电调是纯硬件控制的,只需通过改变电流大小就可以改变电机转速大小,而且电调不需要输入三路pwm。
- 在PCB设计上,电调的元件“占地面积更大”,但是价格会比FOC更便宜。
- 在功能上,电调的兼容性会更高,同一个板子不同的电机都能使用;适合**超高速场合**,比如无人机。***(只管转就完事了)***
- 虽然电调和FOC是两个不同的驱动方式,但是他们可以**[有机结合成一个整体](https://www.bilibili.com/video/BV1n14y127ci/?vd_source=60499a4850284be9bc949c4ca866b892)**,可以实现平滑启动噪音更小的电调。
3. **[SPWM和SVPWM](https://www.bilibili.com/video/BV1Zc411m7y6/?spm_id_from=333.788&vd_source=60499a4850284be9bc949c4ca866b892)**:在学习上,先学SPWM再学SVPWM。SPWM的波形是非常标准的三个相位相差120°的正弦波,SVPWM是波形被优化后的三相波形,呈现波浪的花纹状。因为**SPWM**的波形经过数学计算,他的**驱动能力、效率不是最高的**;为了将**驱动能力拉满**于是就诞生了SVPWM的波形。
4. **云台电机**:虽然云台电机也是无刷电机,但是他是**有限位的**,相当于舵机。购买的时候要看清楚。
5. **磁柱和磁环**:这两个东西是某些无刷电机的一种结构,它是**配合编码器来使用的**,可以读出当前电机的角度。一般来说**优先购买带有磁柱的电机即可**,在某些特殊的场景下要选择磁环,比如电机中间要走线。
#### 电机的比较
1. **无刷电机和直流电机**:无刷电机和直流电机最大的不同是,**直流电机多了个换向器**,这使得直流电机的操作非常简单,通上电就能转,电压电流越大转的越快。但是这种只有转和不转的选择使得直流电机没有太多的应用场景*(虽然给直流电机加上编码器之后可以实现更多的功能,但是他的精度低)*。而无刷电机保留了电机最原始的控制方式——磁场控制,通过人为的操作磁场来使电机旋转,这使得电机不仅可以旋转,还可以在某个想要的位置停下。而且因为无刷电机没有直流电机的碳刷,避免了摩擦,所以他的实际**转速会更高,会更安静平滑**,通常用作无人机的电机。
2. **无刷电机和步进电机**:步进电机是**两相电机**,无刷电机是**三相电机**,驱动两相电机肯定比三相电机简单。精度方面无刷电机更优,普通的步进电机有**1.8°的步进角误差**。个人感觉步进电机更像是单独把无刷电机的部分功能给抽离出来了,并且有着自己一套的新的简化好的驱动方式。无刷电机想要实现步进电机的效果是没有问题的,但是会比较复杂。
3. **舵机和直流电机**:拿无刷电机来和舵机对比不太好对比,所以拿直流电机来对比了。舵机和直流电机的区别就是**舵机由直流电机改装而来**。[舵机结构](https://www.bilibili.com/video/BV1eW4y1H7CT/?vd_source=60499a4850284be9bc949c4ca866b892)在直流电机的输出轴上加入了电位器,电位器与一个纯数电的控制芯片相连,这样就能达到[控制角度](https://www.bilibili.com/video/BV1Fi4y1B7gW/?vd_source=60499a4850284be9bc949c4ca866b892)的效果了。由于舵机是直流电机改装的,所以绝大部分会保留精度稍差的问题。
#### 无刷电机的驱动原理
- 知识浅薄,容我先空着
#### 小技巧&遇到的问题
1. **PWM设置**
- PWM的计数方式要改成**[中心调制方式](https://zhuanlan.zhihu.com/p/377873203)**。一般来说定时器的计数方式是向上或者向下计数,计数计满之后计数归零或者重新重装载计数值,它的波形呈现一个直角三角形。中心调制方式是定时器计数方式是先向上计数,计满之后转为向下计数,它的波形呈现一个等腰三角形。要知道FOC驱动板的原理就是通过开关来调整磁场,在PWM低电平时关断,高电平时开启。普通的PWM计数方式重装载计数的瞬间会导致三路PWM同时置低电平,每个计数周期出现一次,这个瞬间电机的磁力归零,**会造成电机的抖动现象**。而中心调制方式可以很好的分开三路PWM的开关时间,使电机更顺滑。
- **PWM的频率设置不要太高**。既然FOC的工作就是通过PWM不断地开关,在高频的情况下先不说开关的损耗会怎么样,频率太高的情况下开关就相当于没有,严重的情况下会导致电路烧毁***(本人点亮了一个百元级驱动板得出的教训)***
2. **电压输出**
- 正常通过帕克、克拉克变换得出来的电压值有一部分会是负的,这是因为三相的电机波形是三个标准的相位两两之间相差120度的正弦波形。但是单片机的所能输出的电压是没有负值的,所以在计算时要先加上一半的电压,这样才能形成三个没有负半轴的正弦波形。
3. **单片机的选择**
- 选择的单片机的要求有两个:一个是**浮点数运算强的**,一个最好是**一个定时器能输出三路不同pwm的**。FOC算法里面就包含了大量的浮点数运算,对于F1单片机来说稍微有点吃力了。第二个要求就是为了减少变量影响以及节省外设数量,这点要求F1是做不到的,F1的定时器生成的四个输出通道的PWM的波形都是一样的,不可以单独改变,所以F1要三路不同PWM只能使用三个定时器。总的来说用F4就行。
#### 参考资料
1. [灯哥FOC教程](https://www.bilibili.com/video/BV1cj411M7Xu/?vd_source=60499a4850284be9bc949c4ca866b892),这个教程用最简单的代码向我们展示了FOC的代码逻辑。
2. [正点原子的FOC教程](https://www.bilibili.com/video/BV1hv4y1g7s3?p=72&vd_source=60499a4850284be9bc949c4ca866b892),正点原子的教程优先了解其FOC的理论部分就行,在理论方面讲的比灯哥详细。
3. simpleFOC的移植教程,虽然simpleFOC体量大,难懂,但是他仍然是现在的FOC主流。灯哥的FOC虽然简单但是会缺少很多simpleFOC有的功能,并且后续使用其他芯片时的移植会很简单。
#### 与无刷电机相关的项目
1. [智能旋钮](https://www.bilibili.com/video/BV1V64y1P7mM/?vd_source=60499a4850284be9bc949c4ca866b892)
2. [足轮机器人](https://www.bilibili.com/video/BV1bP411k75b/)
3. 手持云台相机
4. 高精度机械臂