1. 课程概述与硬件准备:选型与接线
各位同学,欢迎来到《STM32F407电机控制PID算法调试实战》的第一章。
做电机控制,说白了就是跟硬件打交道。你算法写得再漂亮,硬件没搭对,电机就是不动。我刚开始做这个的时候,就吃过这个亏——编码器线序接反,折腾了一下午才发现。所以这一章,咱们先把家底儿盘清楚。
1.1 整体知识框架
先看一张图,把本章要讲的东西串起来。你心里有个谱,后面学起来就不乱。
1.2 主控板:STM32F407
为什么选F407?说白了,它性价比高。168MHz主频,带硬件浮点,做PID运算绰绰有余。而且定时器资源丰富——高级定时器TIM1/TIM8能直接输出互补PWM,编码器接口模式也是硬件自带的。
我个人习惯用正点原子或野火的板子,资料多,原理图公开。你手头只要是F407VGT6或者F407ZGT6,都行。
1.3 直流减速电机
电机这块,我建议你直接买带编码器的直流减速电机,淘宝上一搜一大把。常见的是JGB37-520系列,减速比1:30到1:90都有。
怎么选?看你的应用场景:
- 1:30:转速快,扭矩小,适合小车跑速度
- 1:90:转速慢,扭矩大,适合做位置控制
我们这门课主要练PID,我推荐用1:50左右的,折中。额定电压选6V或12V,看你驱动板能承受多少。
1.4 编码器
编码器是电机的眼睛。没有它,PID就是瞎调。
常见的电机编码器分两种:
| 类型 | 输出信号 | 线数(常见) | 特点 |
|---|---|---|---|
| 霍尔编码器 | AB两相方波 | 11 ~ 64 | 便宜,低速时精度一般 |
| 光电编码器 | AB两相方波 | 256 ~ 1024 | 精度高,价格稍贵 |
咱们课程里用霍尔编码器就够。11线的霍尔编码器,配合1:50减速比,转一圈能输出 11 × 50 × 4 = 2200 个脉冲(4倍频后)。做位置控制,精度到0.16度,够用了。
1.5 驱动板:L298N vs DRV8833
驱动板的选择,我直接给你对比表:
| 项目 | L298N | DRV8833 |
|---|---|---|
| 工作电压 | 5V ~ 35V | 2.7V ~ 10.8V |
| 最大电流 | 2A(峰值3A) | 1.5A(峰值2A) |
| 逻辑电平 | 5V(需3.3V转5V) | 3.3V 直连 |
| PWM频率 | 建议 ≤ 10kHz | 可达 50kHz |
| 体积 | 大(散热片) | 小(QFN封装) |
| 价格 | 便宜(约5元) | 稍贵(约10元) |
我个人建议:初学用L298N,皮实耐操,不容易烧。但要注意,L298N的逻辑电平是5V,STM32的GPIO是3.3V,直接接可能识别不了。你需要加个电平转换模块,或者用L298N板子上的5V输出给STM32供电(不推荐,容易烧)。
DRV8833就省心多了,3.3V逻辑直接兼容,而且体积小,适合做在PCB上。我现在的项目基本都用DRV8833。
1.6 接线实战
好了,理论说完了,咱们直接上手接线。以L298N + 单路直流减速电机为例:
- 电机电源:L298N的12V输入接外部电源(比如12V锂电池),GND接电源负极。
- 逻辑电源:L298N的5V输出可以给STM32供电吗?不建议。STM32用USB供电或独立稳压。
- 共地:L298N的GND和STM32的GND用杜邦线连起来。
- PWM信号:STM32的TIM1_CH1(PA8)接L298N的ENA(使能A)。
- 方向控制:STM32的PA0接IN1,PA1接IN2。
- 编码器:电机编码器5V(或3.3V)接STM32的5V(或3.3V),GND接GND,A相接PA6(TIM3_CH1),B相接PA7(TIM3_CH2)。
接线图我画个简化的:
1.7 上电前的检查清单
接好线别急着通电。我每次都会过一遍这个清单:
- ☐ 电源正负极:有没有接反?L298N的12V和GND有没有短路?
- ☐ 共地:L298N的GND和STM32的GND连了吗?
- ☐ 编码器线序:A相和B相有没有接反?接反了也能用,但方向反了。
- ☐ PWM引脚:是不是定时器的通道?别接到普通GPIO上。
- ☐ 电机线:OUT1和OUT2有没有短路?电机线有没有破损?