第二章:电机控制基础——直流电机、步进电机、无刷直流电机(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任务。到时候见。