1、课程导论与硬件准备:工业MCU选型(STM32/GD32)、电机驱动板(L298N/DRV8825)、直流有刷电机与步进电机基础、示波器与逻辑分析仪准备
各位同学,欢迎来到《工业MCU的PWM输出与电机驱动实战》的第一课。
我是你们的讲师,一个在嵌入式与电机控制领域摸爬滚打了十几年的老工程师。说实话,每次带新人,我最怕的就是他们一上来就对着芯片手册和电机数据表发懵。所以这第一节课,咱们不急着写代码,先把家伙事儿认全了。
你想想看,做电机控制,本质上就是让MCU去指挥电机干活。MCU是大脑,驱动板是肌肉,电机是手脚,示波器就是你的眼睛。这几样东西搞不明白,后面全是瞎忙活。
1.1 工业MCU选型:为什么是STM32和GD32?
市面上MCU那么多,为什么我偏偏推荐STM32和GD32?
说白了,就两个字:生态。
STM32,意法半导体的王牌产品。它的定时器模块设计得非常精巧,高级定时器能输出6路互补带死区的PWM,专门为三相电机控制而生。我在项目中用过F103、F407、G4系列,G4系列带Cordic数学加速器,算Park变换和Clark变换快得飞起。
GD32,国产之光,兆易创新的产品。它跟STM32的引脚基本兼容,但主频更高、价格更低。我去年帮一个客户做成本优化,把STM32F103换成了GD32F103,代码几乎不用改,成本直接砍掉30%。
选型建议:
- 学习入门:STM32F103C8T6(蓝色小板子)或GD32F103C8T6,性价比极高
- 工业级应用:STM32G431(带运放和比较器,适合FOC)
- 多轴控制:STM32F407(主频168MHz,定时器资源丰富)
我的经验:千万别小看GD32。有一次我在一个振动给料机项目里用GD32F303,环境温度55度,连续跑了三个月没死机。国产芯片现在真的能打。
1.2 电机驱动板:L298N与DRV8825的恩怨情仇
驱动板是MCU和电机之间的桥梁。MCU的GPIO只能输出3.3V或5V的微弱信号,电流也就几毫安。电机呢?动不动就要几安培的电流。所以必须靠驱动板来放大功率。
L298N,老将了。双H桥,能驱动两个直流有刷电机,或者一个四线步进电机。优点是皮实耐操,缺点是效率低、发热大。我记得刚入行时,用L298N驱动一个12V的直流电机,散热片烫得能煎鸡蛋。
DRV8825,TI的步进电机驱动芯片,后来国产替代也很多。它支持微步进,最高能到1/32步。什么意思呢?就是一个步进电机原本转一圈需要200步,用了1/32微步进,一圈就是6400步,精度高得吓人。
| 参数 | L298N | DRV8825 |
|---|---|---|
| 驱动类型 | 双H桥 | 单H桥(步进专用) |
| 最大电流 | 2A(峰值) | 2.5A(峰值) |
| 微步进 | 不支持 | 支持1/32步 |
| 工作电压 | 5V-46V | 8.2V-45V |
| 典型应用 | 直流有刷电机、两相步进 | 两相步进电机(3D打印机、CNC) |
避坑指南:我曾经在L298N的使能引脚上直接接了3.3V的MCU输出,结果发现电机转不起来。后来一查手册,L298N的使能引脚需要5V逻辑电平。所以用STM32驱动L298N时,记得加电平转换,或者用三极管搭个简单的电平匹配电路。
1.3 直流有刷电机与步进电机基础
这两种电机,是咱们课程里的主角。
直流有刷电机,结构简单,两根线,通电就转。改变电压高低调速度,改变正负调方向。控制起来非常直观。我在做智能小车项目时,最喜欢用这种电机,因为PID调参特别方便。
但它的缺点也很明显:有电刷,会磨损。而且低速时扭矩不够大,容易抖动。
步进电机,就不一样了。它内部有多个线圈,通过给不同线圈轮流通电,让转子一步一步地转动。每步的角度是固定的,比如1.8度。所以步进电机天生就是开环位置控制的料。
你想想看,3D打印机的喷头移动、CNC雕刻机的刀具进给,为什么都用步进电机?因为不需要编码器反馈,给多少个脉冲,它就转多少步,简单可靠。
核心区别:
- 直流有刷电机:适合速度控制、大力矩场景(如电钻、风扇)
- 步进电机:适合位置控制、低速高精度场景(如3D打印机、机械臂)
1.4 示波器与逻辑分析仪:工程师的第三只眼
做电机控制,没有示波器,就像瞎子摸象。
你写好了PWM程序,电机不转。是MCU没输出?还是驱动板没响应?还是电机坏了?
拿示波器一测就知道了。
示波器,看模拟信号。比如PWM的波形对不对?频率准不准?占空比是不是你设定的值?有没有毛刺?
逻辑分析仪,看数字信号。比如步进电机的脉冲序列、方向信号、使能信号,时序对不对?有没有丢步?
我个人习惯,调试时示波器和逻辑分析仪一起上。示波器挂电机电流,逻辑分析仪挂控制信号。两边一对比,问题出在哪一目了然。
省钱方案:如果预算有限,买个几十块钱的USB逻辑分析仪(比如Saleae的国产克隆版),配合开源的PulseView软件,抓个PWM波形、分析个步进电机时序,完全够用。示波器的话,最低买个100MHz带宽、1GSa/s采样率的,别买太便宜的,否则测高频PWM时波形全是锯齿。
1.5 硬件清单与连接示意
好了,理论说完了,咱们看看实际要准备哪些东西。
必备清单:
- MCU开发板:STM32F103C8T6 或 GD32F103C8T6(带USB转串口)
- 电机驱动板:L298N模块(直流有刷) + DRV8825模块(步进)
- 电机:直流有刷电机(12V,带减速器更好) + 42步进电机(两相四线)
- 电源:12V/2A直流电源(给电机供电) + 5V/1A(给MCU供电,或者直接用USB)
- 工具:示波器 + 逻辑分析仪 + 杜邦线若干 + 面包板
连接示意(直流有刷电机):
MCU PA0 (PWM) → L298N IN1
MCU PA1 (方向) → L298N IN2
MCU PA2 (使能) → L298N ENA
L298N OUT1/2 → 直流电机两端
L298N VCC → 12V电源正极
L298N GND → 12V电源负极 + MCU GND(共地!)
重要提醒:共地!共地!共地!MCU和驱动板的地必须连在一起,否则信号无法形成回路。我曾经有个学生,折腾了一下午电机不转,最后发现就是地线没接。这种低级错误,咱们别犯。
嗯,第一节课的内容就到这里。东西比较多,但都是基础中的基础。你把这些硬件摸透了,后面讲PWM生成、讲PID控制、讲FOC,你才能跟得上。
下一节课,咱们开始真正写代码,用STM32的定时器输出PWM,让直流电机转起来。到时候记得带上你的示波器,咱们现场测波形。