第二章:电机控制基础——直流电机、步进电机、无刷直流电机(BLDC)的工作原理与PWM调速原理
各位同学,欢迎来到电机控制的世界。我是你们这门课的老朋友。今天咱们聊聊电机控制的基础,说白了就是三种最常见的电机:直流电机、步进电机,还有现在特别火的无刷直流电机(BLDC)。
你想想看,不管是机器人、无人机,还是你手里的电动工具,背后都是这些小家伙在干活。我刚开始做嵌入式的时候,总觉得电机嘛,转就完了。结果第一次做项目,电机抖得像筛糠,PID调了一整晚……嗯,从那以后,我再也不敢小看这些基础了。
2.1 直流电机:最朴素的动力源
直流电机,结构最简单。你给它通上电,它就转。电压越高,转得越快。方向反了,它就反转。
它的内部其实就是一个线圈在磁场里转。电流通过电刷和换向器,不断改变线圈里的电流方向,这样线圈就能一直转下去。
核心公式:转速 n ≈ (U - I×R) / K
U是电压,I是电流,R是内阻,K是电机常数。
说白了,电压越高,转速越快;负载越大(电流大),转速会掉。
我在项目中遇到过一个问题:用直流电机驱动一个小车,跑着跑着速度就慢了。一开始以为是电池没电,后来发现是电机发热导致内阻变大。嗯,散热设计真的很重要。
2.1.1 PWM调速原理
直流电机怎么调速?最简单的方法就是调电压。但实际中我们很少用可调电源,而是用PWM。
PWM,脉冲宽度调制。说白了,就是让电源一会儿开一会儿关。开的时间长,平均电压就高,电机转得快;开的时间短,平均电压就低,转得慢。
这里有个关键参数叫占空比。占空比 = 高电平时间 / 整个周期。占空比50%,相当于给电机一半的电压。
我的经验:PWM频率不能太低。我见过有人用50Hz的PWM驱动直流电机,结果电机嗡嗡响,还发热严重。一般直流电机PWM频率选在1kHz到20kHz之间比较合适。我习惯用10kHz,人耳听不到,电机也安静。
// 简单的PWM初始化代码(STM32 HAL库)
void Motor_PWM_Init(void)
{
TIM_HandleTypeDef htim2;
TIM_OC_InitTypeDef sConfigOC = {0};
htim2.Instance = TIM2;
htim2.Init.Prescaler = 71; // 72MHz / 72 = 1MHz
htim2.Init.Period = 999; // 1MHz / 1000 = 1kHz
HAL_TIM_PWM_Init(&htim2);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 500; // 占空比50%
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
}
2.2 步进电机:精准的位置控制
步进电机跟直流电机不一样。它不是连续转,而是一步一步地走。你给它一个脉冲,它就转一个固定的角度,比如1.8度。所以200个脉冲,它就转一圈。
为什么能做到这么精准?因为它内部有很多磁极,定子和转子像齿轮一样咬合。通电顺序变了,转子就跟着走一步。
我个人觉得,步进电机最适合做开环位置控制。比如3D打印机的Z轴,不需要编码器反馈,只要给够脉冲,它就能走到位。
避坑指南:我曾经在一个项目中,步进电机高速运行时丢步了。查了半天,发现是加速太猛,电机扭矩不够。后来加了加减速曲线,问题就解决了。记住,步进电机不能突然从0跳到高速,要慢慢来。
2.2.1 步进电机的驱动方式
步进电机有几种驱动方式:
- 整步驱动:一次走一个步距角,扭矩大,但低速有振动。
- 半步驱动:一次走半个步距角,分辨率翻倍,振动小一些。
- 微步驱动:通过控制电流大小,把一步分成很多小步。比如1/16微步,分辨率极高,运行非常平滑。
我建议初学者先从整步开始,理解原理后再玩微步。微步虽然平滑,但扭矩会下降,要注意。
| 驱动方式 | 步距角 | 分辨率 | 扭矩 | 振动 |
|---|---|---|---|---|
| 整步 | 1.8° | 200步/圈 | 最大 | 大 |
| 半步 | 0.9° | 400步/圈 | 中等 | 中 |
| 1/16微步 | 0.1125° | 3200步/圈 | 较小 | 小 |
2.3 无刷直流电机(BLDC):效率之王
BLDC电机,现在太火了。无人机、电动车、硬盘,到处都是它的身影。
它跟直流电机最大的区别是:没有电刷。转子是永磁体,定子是线圈。线圈通电产生磁场,推着转子转。但因为没有电刷换向,所以需要电子换向器——说白了,就是控制器要知道转子位置,然后按顺序给线圈通电。
为什么会这样?因为转子转的时候,磁场方向在变,线圈的通电方向也得跟着变。这个工作就交给控制器和霍尔传感器(或者无传感器算法)来做。
BLDC的三大优势:
- 效率高:没有电刷摩擦,能量损失小
- 寿命长:没有电刷磨损,几乎免维护
- 噪音低:运行安静,没有电刷火花
我记得第一次调BLDC的FOC(磁场定向控制),光是电流环就调了三天。后来发现是电流采样时序不对,采样点刚好在PWM开关噪声最大的时候。嗯,采样窗口的位置很重要。
2.3.1 BLDC的PWM调速
BLDC的PWM调速比直流电机复杂。因为BLDC有三相,每一相都要用PWM控制。常见的控制方式有:
- 六步换向法:最简单的控制方式。每次只给两相通电,另一相悬空。每60度电角度换一次相。
- 正弦波控制:三相电流呈正弦波变化,运行更平滑,噪音更小。
- FOC(磁场定向控制):最先进的控制方式。把三相电流分解成交轴和直轴分量,独立控制转矩和磁场。
我个人建议,初学者先玩六步换向法。虽然效率不如FOC,但代码简单,容易理解。等把六步换向玩熟了,再上FOC。
一个小技巧:做BLDC控制时,PWM频率一般选在16kHz到20kHz之间。太低会有噪音,太高会增加开关损耗。我习惯用20kHz,人耳听不到,效率也还行。
2.4 三种电机的对比与选择
好了,三种电机都讲完了。你可能会问:那我该用哪种?
我一般这样选:
- 要便宜、控制简单:选直流电机。比如玩具车、小风扇。
- 要精准定位、不需要高速:选步进电机。比如3D打印机、数控机床。
- 要效率高、寿命长、转速高:选BLDC。比如无人机、电动车、吸尘器。
当然,没有绝对的答案。我见过有人用步进电机做高速旋转,结果扭矩掉得厉害。也见过有人用BLDC做位置控制,结果算法复杂到崩溃。选型的时候,一定要看应用场景。
嗯,这一章的内容就到这里。下一章我们会深入聊聊PWM的细节,包括死区时间、互补输出、以及如何在RTOS中管理PWM任务。到时候见。