第三课:驱动板初识——STM32主控板、驱动芯片与拨码开关
好,咱们进入第三课。上一课我们把电机和电源理清楚了,这一课轮到驱动板了。说白了,驱动板就是电机的大脑和肌肉——STM32负责发号施令,驱动芯片负责把命令变成大电流去推电机。
我个人习惯,拿到一块新板子,先不看原理图,而是先看板子上的大芯片和跳线。为什么?因为很多坑其实在硬件布局上就埋下了。今天咱们就一块一块拆开看。
3.1 STM32主控板——这颗“大脑”长什么样?
STM32,意法半导体的王牌MCU。咱们课程里用的是最常见的STM32F103系列,Cortex-M3内核,72MHz主频。嗯,这个性能驱动步进电机绰绰有余。
你拿到板子,先找这几个关键位置:
- 电源接口:一般是5V或3.3V输入。注意看丝印,别插反了。我见过有人把12V怼进3.3V引脚,芯片直接冒烟——那味道,一辈子忘不了。
- 晶振:8MHz和32.768kHz两个。8MHz是主时钟,32.768kHz是RTC用的。如果电机跑起来速度不对,先查晶振有没有起振。
- BOOT0/BOOT1跳线:这两个引脚决定启动模式。默认从Flash启动,如果你不小心把BOOT0拉高,芯片会进系统存储器模式,程序跑不起来。我曾经调试一整天,最后发现是跳线帽插错了位置。
- SWD调试接口:4个引脚——SWDIO、SWCLK、GND、3.3V。这是你烧录和调试的唯一通道。别省这个接口,我建议直接焊排针出来。
重点记住:STM32的GPIO引脚,默认状态是浮空输入。如果你要用它输出PWM,必须先在代码里配置成复用推挽输出。很多新手上来就写PWM代码,结果电机不动,查半天发现引脚没配置——我也干过这事。
3.2 驱动芯片——DRV8825 vs L298N,你选谁?
驱动芯片是电机控制的核心。咱们课程里主要讲两款:DRV8825和L298N。这两款我都用过,各有脾气。
3.2.1 DRV8825——精密、高效、但娇气
DRV8825是TI出的步进电机驱动芯片,最大电流2.5A,支持微步进(最高1/32步)。它内部集成了MOSFET H桥,效率很高。
引脚功能,我按重要程度排个序:
| 引脚名 | 功能 | 我的经验 |
|---|---|---|
| STEP | 步进脉冲输入。每来一个上升沿,电机走一步 | 频率别超过500kHz,否则芯片会丢步 |
| DIR | 方向控制。高电平正转,低电平反转 | 切换方向时,最好等电机停稳再换 |
| ENABLE | 使能引脚。低电平有效 | 不使能时,电机处于自由状态,可以手动转动 |
| M0/M1/M2 | 微步进模式选择 | 见下面的拨码开关配置 |
| FAULT | 故障输出。过流或过热时拉低 | 我建议把这个引脚接到STM32的中断引脚上 |
警告:DRV8825的VREF引脚用来设置电流限制。公式是:I_max = VREF / (5 * R_sense)。R_sense一般是0.1Ω或0.2Ω。如果你不设置VREF,芯片默认电流可能很小,电机没力。我曾经忘了接VREF分压电阻,电机转得像蜗牛爬。
3.2.2 L298N——皮实、便宜、但费电
L298N是老牌驱动芯片,双H桥,最大电流2A(峰值3A)。它内部是双极型晶体管,压降大(约2V),所以发热严重。
引脚功能:
| 引脚名 | 功能 | 我的经验 |
|---|---|---|
| IN1/IN2/IN3/IN4 | 逻辑输入。控制电机正反转 | IN1=1, IN2=0 正转;IN1=0, IN2=1 反转 |
| ENA/ENB | 使能引脚。接PWM可调速 | 如果不接PWM,直接接5V,电机全速转 |
| OUT1/OUT2/OUT3/OUT4 | 电机输出 | 注意别短路,L298N短路保护很弱 |
| VSS | 逻辑电源(5V) | 千万别和VS接反,否则芯片秒烧 |
| VS | 电机电源(最高46V) | 我一般用12V,发热可以接受 |
小技巧:L298N的ENA和ENB引脚,如果你用PWM控制,频率建议在1kHz-10kHz之间。太低了电机会抖动,太高了芯片发热严重。我一般用2kHz,效果不错。
3.3 拨码开关配置——别小看这几个小开关
拨码开关,看起来不起眼,但配置错了,电机要么不动,要么乱动。咱们以DRV8825的M0/M1/M2为例,看看怎么配。
这三个引脚的电平组合,决定了微步进模式:
| M2 | M1 | M0 | 微步进模式 | 每转步数(1.8°电机) |
|---|---|---|---|---|
| 0 | 0 | 0 | 全步进 | 200 |
| 0 | 0 | 1 | 1/2步进 | 400 |
| 0 | 1 | 0 | 1/4步进 | 800 |
| 0 | 1 | 1 | 1/8步进 | 1600 |
| 1 | 0 | 0 | 1/16步进 | 3200 |
| 1 | 0 | 1 | 1/32步进 | 6400 |
你想想看,全步进时电机每转才200步,1/32步进时是6400步。步数越多,运行越平滑,噪音越小。但代价是速度变慢——因为你需要发更多的脉冲才能转一圈。
我的建议:刚开始调试时,先用全步进或1/2步进。为什么?因为步数少,你容易观察电机是否丢步。等电机跑顺了,再切换到高细分模式。我曾经一上来就用1/32步进,结果电机抖得像筛糠,查了半天才发现是脉冲频率不够。
拨码开关的物理位置也要注意。有些板子的拨码开关是“ON=0,OFF=1”,有些是反的。一定要看板子上的丝印,或者用万用表量一下。嗯,这里要注意,别想当然。
3.4 实战连线——把大脑和肌肉接起来
好,理论讲完了,咱们动手连一下。以DRV8825为例:
- STM32的PA0(STEP)接DRV8825的STEP引脚
- STM32的PA1(DIR)接DRV8825的DIR引脚
- STM32的PA2(ENABLE)接DRV8825的ENABLE引脚
- DRV8825的M0/M1/M2接拨码开关(或者直接接GND/3.3V)
- DRV8825的VMOT接电机电源(12V),GND共地
- 电机A+、A-、B+、B-接DRV8825的对应输出
连线时记住一个原则:电源回路和信号回路要分开走。电机的大电流不要和STM32的信号线走在一起,否则干扰会让你怀疑人生。我吃过这个亏——电机一转,STM32就复位,最后发现是电源线太细,压降导致复位。
避坑指南:在VMOT和GND之间并联一个100μF的电解电容,再并联一个0.1μF的瓷片电容。这个组合能滤掉大部分电源噪声。我曾经不加电容,电机在高速时总是丢步,加了电容后问题消失。
3.5 上电前的最后检查
连线完成后,别急着上电。按这个清单检查一遍:
- 电源极性是否正确?用万用表量一下
- STM32和驱动板是否共地?不共地,信号传不过去
- 拨码开关是否拨到了你想要的模式?
- 电机线是否接牢?松动会导致缺相
- VREF是否设置正确?(DRV8825专用)
确认无误后,先给STM32上电,再给电机上电。断电时顺序相反——先断电机电源,再断STM32电源。这个习惯能保护你的驱动芯片。
好了,这一课就到这里。下一课咱们开始写代码,让电机真正转起来。到时候你会发现,硬件连线只是热身,真正的挑战在软件里等着你。