1. 课程导论与硬件准备:STM32与PWM基础概念、舵机与直流电机选型、开发板与工具清单

各位同学,欢迎来到《STM32 PWM驱动舵机与电机控制实战》的第一章。

我是你们这门课的主讲工程师。说实话,做嵌入式这么多年,我接触过不少控制方案。但要说最常用、最实用的,PWM(脉冲宽度调制)绝对排在前三。你想想看,从舵机打角到电机调速,从LED调光到开关电源,几乎处处都有它的影子。

这一章,我们不急着写代码。先把地基打牢——搞懂PWM到底是什么,舵机和直流电机怎么选,以及我们手头需要准备哪些家伙什。我个人习惯是:硬件没理清之前,绝不碰代码。否则出了问题,你都不知道是程序写错了,还是线接反了。

1.1 什么是PWM?为什么它能控制电机?

PWM,全称Pulse Width Modulation,中文叫脉冲宽度调制。说白了,就是通过调节一个方波信号里“高电平”占整个周期的比例,来模拟出不同的电压效果。

这个比例,我们叫它占空比(Duty Cycle)。比如一个5V的方波,如果占空比是50%,那等效电压就是2.5V;如果是100%,那就是5V。

核心公式:

占空比 = 高电平时间 / 周期 × 100%

等效电压 = 高电平电压 × 占空比

为什么会这样?因为电机和舵机内部的惯性系统,会对这种快速切换的脉冲做“平均化”处理。你给一个50%占空比的PWM信号,电机感受到的就是一半的电压,转速自然就降下来了。

我在项目中遇到过一位新手,死活调不好舵机角度。后来发现他把PWM频率设成了50kHz——舵机根本反应不过来。嗯,这里要注意:舵机通常需要50Hz的PWM频率,而直流电机可以跑到几千甚至几万赫兹。

参数 舵机控制 直流电机控制
PWM频率 50Hz(周期20ms) 1kHz ~ 20kHz
占空比范围 2.5% ~ 12.5%(对应0°~180°) 0% ~ 100%
控制对象 角度位置 转速/转向
是否需要驱动板 通常可直接驱动 需要H桥或MOS管驱动

1.2 舵机与直流电机选型指南

选型这件事,我吃过不少亏。有一次为了省几块钱,买了一批杂牌舵机,结果上电就抖,角度根本稳不住。后来换成了MG996R,问题立刻解决。所以我的建议是:学习阶段,选主流型号,别贪便宜。

舵机选型要点

  • SG90(9g微型舵机):最常用的学习级舵机,扭矩0.18kg·cm,5V供电。适合做机械臂小关节、摄像头云台。
  • MG996R(金属齿轮舵机):扭矩大(10kg·cm),耐造。适合做机器人底盘转向、大型模型。
  • 关键参数:工作电压(4.8V~6V)、堵转电流(SG90约700mA,MG996R约2.5A)、控制信号(PWM 50Hz)。

避坑指南:我曾经因为没注意舵机的堵转电流,直接用STM32的GPIO引脚驱动,结果烧了IO口。记住:舵机的电源绝对不能从STM32的3.3V或5V引脚取,必须外接独立的电源模块。

直流电机选型要点

  • N20微型减速电机:带减速箱,转速适中(100~300rpm),扭矩不错。适合做小车驱动轮。
  • 370/540电机:转速高(5000~10000rpm),扭矩小,需要配减速器。适合做风扇、泵类。
  • 关键参数:额定电压(3V~12V)、空载电流、堵转电流、减速比。

我个人习惯是:做小车底盘,首选N20电机+编码器版本。这样后续做闭环控制时,还能用编码器测速,一举两得。

1.3 开发板与工具清单

好,接下来我们清点一下装备。这门课我推荐使用STM32F103C8T6(蓝色 pill 板)或者STM32F407VET6。F103够用,F407性能更强,带硬件定时器也更丰富。

硬件/工具 推荐型号 数量 备注
主控板 STM32F103C8T6 1块 性价比之王
舵机 SG90 + MG996R 各1个 一大一小,覆盖学习场景
直流电机 N20微型减速电机(带编码器) 2个 做差速驱动
电机驱动板 L298N 或 TB6612FNG 1块 TB6612更小巧高效
电源模块 LM2596 可调降压模块 1块 输入7~12V,输出5V/3.3V
面包板+杜邦线 830孔面包板 + 公对公/公对母杜邦线 各1套 方便快速搭电路
调试工具 USB转TTL模块(CH340G) 1个 串口打印调试信息
示波器/逻辑分析仪 Saleae逻辑分析仪(24MHz采样) 1个 强烈推荐,看PWM波形必备

我的小建议:如果你预算有限,逻辑分析仪可以先买一个几十块的USB版本。虽然采样率低一些,但看50Hz的舵机PWM信号完全够用。示波器嘛,等后面做高频电机控制时再升级也不迟。

1.4 本章知识体系总览

下面这张图,是我自己梳理的本章知识结构。你可以把它当成一张地图,后面每学一个知识点,都能在这张图上找到它的位置。

第1章 知识体系总览 PWM驱动舵机与电机 PWM基础概念 占空比 / 频率 / 分辨率 等效电压原理 舵机选型与控制 SG90 / MG996R 参数对比 50Hz PWM 角度映射 直流电机选型 N20 / 370 / 540 参数 减速比与扭矩关系 开发板与工具清单 STM32F103 / F407 选型 驱动板 / 电源 / 调试工具

这张图把本章内容分成了四个模块:PWM基础概念、舵机选型与控制、直流电机选型、开发板与工具清单。每个模块之间都有联系——PWM是控制手段,舵机和电机是被控对象,而开发板和工具是我们实现控制的物质基础。

1.5 开发环境与接线准备

最后,简单说一下开发环境。这门课我使用STM32CubeIDE(免费,官方出品,集成了CubeMX配置工具)。当然,如果你习惯Keil或者IAR,也没问题,代码逻辑是一样的。

接线方面,记住一个原则:先接电源,再接信号。具体来说:

  1. 舵机红线(VCC)接5V电源正极,棕线(GND)接GND,橙线(信号)接STM32的TIM通道引脚。
  2. 直流电机通过驱动板(如L298N)连接:驱动板IN1/IN2接STM32 GPIO,ENA接PWM引脚,电机两端接驱动板OUT1/OUT2。
  3. 共地!所有模块的GND必须连在一起,否则信号乱跳。

血的教训:我曾经有一次忘记共地,结果舵机乱转,逻辑分析仪抓到的波形全是毛刺。查了整整两个小时,最后发现就是一根GND线没接。所以,接线完成后,第一件事就是拿万用表测一下各模块之间的GND是否导通。