1. PWM 基础与电机控制概述

各位同学,咱们今天聊聊 PWM 控制与电机驱动。说实话,我入行那会儿,第一次调电机驱动板,板子一上电,电机嗡嗡响就是不转。后来才发现,是 PWM 频率没设对。从那以后,我就明白了一个道理——搞电机控制,PWM 是基本功,信号完整性是命根子。

1.1 PWM 基本原理

PWM,全称 Pulse Width Modulation,脉冲宽度调制。说白了,就是用数字信号模拟模拟信号。你想想看,单片机只能输出 0 或 1,怎么控制电机转得快慢?答案就是——让高电平的时间占比变化。

核心概念:PWM 信号由周期固定的方波组成,通过改变高电平的宽度(即占空比)来调节平均电压。

我习惯把 PWM 比作水龙头:周期就是开关一次的时间,占空比就是开多久。开的时间长,水流大;开的时间短,水流小。电机转速也是这个道理。

参数 定义 单位
周期 (T) 一个完整 PWM 波形的时间长度 秒 (s)
频率 (f) 1/T,每秒完成的周期数 赫兹 (Hz)
占空比 (D) 高电平时间 / 周期 × 100% 百分比 (%)
分辨率 占空比可调节的步进精度 位 (bit)

1.2 占空比与频率的实战选择

占空比决定了电机的平均电压。比如 12V 供电,50% 占空比,平均电压就是 6V。但这里有个坑——频率选不对,电机要么啸叫,要么发热。

我的经验:直流有刷电机,频率选 10kHz~20kHz 比较稳妥。低于 10kHz,人耳能听到啸叫;高于 20kHz,MOS 管开关损耗会明显增加。

我曾经在一个项目中,为了追求低噪声,把频率设到了 40kHz。结果 MOS 管烫得能煎鸡蛋。后来查资料才发现,频率每翻一倍,开关损耗就翻一倍。嗯,这个教训挺深刻的。

// 以 STM32 定时器为例,设置 10kHz PWM,占空比 50%
// 假设定时器时钟 72MHz,预分频 71,ARR = 99
TIM_HandleTypeDef htim2;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 71;        // 72MHz / (71+1) = 1MHz
htim2.Init.Period = 99;           // 1MHz / (99+1) = 10kHz
htim2.Init.ClockDivision = 0;
HAL_TIM_PWM_Init(&htim2);

TIM_OC_InitTypeDef sConfigOC;
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 50;             // 占空比 50%
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);

1.3 电机驱动系统组成

一个完整的电机驱动系统,不是只有单片机和电机。我画了一张图,你看看就明白了。

电机驱动系统组成框图 MCU 控制单元 PWM 生成 + 逻辑 隔离单元 光耦 / 磁耦 驱动单元 MOSFET / 预驱 功率单元 H 桥 / 三相桥 电机本体 有刷 / 无刷 / 步进 反馈单元 编码器 / 霍尔 电源模块 注意 隔离单元 不能省略 否则容易烧 MCU

从图上你能看到,信号从 MCU 出来,经过隔离、驱动、功率级,最后到电机。每个环节都可能引入噪声。我见过不少新手,直接拿 MCU 的 GPIO 去推 MOS 管,结果不是烧 IO 就是电机抖得厉害。

1.4 信号完整性的重要性

信号完整性,英文叫 Signal Integrity,简称 SI。说白了,就是保证 PWM 波形从发出到接收,形状不变、时序不乱。

常见问题:PWM 信号在长线传输中会出现过冲、振铃、边沿变缓。这些问题会导致 MOS 管开关不干脆,轻则发热,重则炸管。

我曾经调试一个 24V 直流电机驱动板,PWM 频率 20kHz,线长 30cm。示波器一看,上升沿有个 5V 的过冲,直接把 MOS 管的栅极击穿了。后来加了栅极电阻和 TVS 管才解决。

信号完整性主要关注三个指标:

  • 过冲/下冲:信号超过或低于目标电压的幅度,通常要求 < 10%
  • 振铃:信号边沿后的振荡,持续时间越短越好
  • 边沿速率:上升/下降时间,太快则 EMI 大,太慢则开关损耗大

我的建议:初次调试时,先用示波器抓一下 PWM 波形。看看上升沿有没有毛刺,下降沿有没有拖尾。这一步能省下后面很多排查时间。

好了,这一章咱们把 PWM 的基础概念、电机驱动系统的组成、信号完整性的重要性都过了一遍。你想想看,这些知识点是不是环环相扣?占空比选不对,电机转不起来;频率选不对,MOS 管发热;信号完整性不好,系统不稳定。搞电机控制,每一步都得扎实。