1. STM32直流电机PID控制系统概述
在工业控制和自动化领域,直流电机因其良好的调速性能被广泛应用。而要实现精确的转速控制,PID算法无疑是最经典且实用的解决方案。本文将详细介绍基于STM32F103C8T6微控制器的直流电机PID闭环控制系统,从硬件选型到软件实现,再到参数整定和调试技巧,分享我在实际项目中的完整经验。
这个系统的核心功能是通过霍尔编码器实时检测电机转速,使用位置式PID算法计算控制量,最终通过PWM调节L298N驱动模块的输出电压,形成完整的闭环控制。同时,系统还配备了128×160分辨率的液晶显示屏,用于实时显示设定转速和实际转速的对比曲线,极大方便了调试过程。
提示:选择STM32F103C8T6作为主控,不仅因为其性价比高(市场价约10元),更因其丰富的外设资源——多达4个通用定时器(其中TIM1和TIM8是高级定时器),特别适合电机控制应用。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件系统设计与关键部件选型
2.1 主控制器:STM32F103C8T6
这款ARM Cortex-M3内核的微控制器运行频率可达72MHz,具有64KB Flash和20KB SRAM,完全能满足电机控制的需求。其外设资源分配如下:
- TIM1(高级定时器):生成PWM波驱动L298N
- TIM3(通用定时器):配置为编码器接口模式,读取霍尔信号
- TIM2/TIM4:用于系统定时和速度计算
- SPI1:连接ST7735驱动的LCD屏幕
- GPIO:用于按键输入和状态指示
2.2 电机与驱动模块选型
25GA-260编码器减速电机是一款性价比极高的直流减速电机,主要参数如下:
| 参数 | 值 | 说明 |
|---|---|---|
| 额定电压 | 12V | 工作电压范围6-12V |
| 空载转速 | 260RPM | 减速后输出轴转速 |
| 编码器类型 | 霍尔AB相 | 每转输出13个脉冲(减速前) |
| 减速比 | 1:30 | 电机轴到输出轴的减速比 |
L298N双H桥驱动模块是最经典的电机驱动方案,虽然效率不如新型MOSFET驱动,但其稳定性好、驱动能力强(峰值电流2A),非常适合初学者使用。需要注意的是,L298N内部是双H桥结构,驱动单个电机时建议并联使用以提高电流能力。
2.3 转速检测方案
系统采用霍尔编码器检测电机转速,其工作原理是:
- 电机旋转时,霍尔传感器输出AB两相正交脉冲信号
- STM32的TIM3定时器配置为编码器接口模式,自动根据AB相信号增减计数器
- 通过定时读取计数器值,计算得到实际转速
这种硬件计数方式相比软件中断计数更加精确可靠,特别是在高速情况下不会丢失脉冲。
3. 软件系统实现与核心代码解析
3.1 编码器接口配置
编码器接口的初始化是整个转速检测的基础,必须正确配置:
c复制void Encoder_Init(void){
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStructInit(
