新闻详情

新闻详情

首页 / 资讯中心 / 详情

【STM32踩坑日记】电机速度闭环与 PID 控制

发布时间:2026/9/30 7:23:59来源:尧图网络
【STM32踩坑日记】电机速度闭环与 PID 控制
一、电机速度闭环整体流程电机通过编码器测速获得实际转速与设定的目标转速进行比较通过 PID 计算控制电压再转换成 PWM 驱动电机。目标转速 Ω* ↓ PID控制 ↓ 目标电压 Ua ↓ Ua / Vbat → PWM占空比 ↓ 电机 ↓ 编码器 ↓ 实际转速 Ω └────反馈二、App_Motor.c1. PID初始化左右电机分别使用一个 PIDPID_Init(pid_motor_l,0.5,7,0);PID_Init(pid_motor_r,0.5,7,0);参数Kp 0.5 Ki 7 Kd 0由于Kd 0所以实际是PI控制器。同时限制输出PID_LimitConfig(pid_motor_l,8.4f,-8.4f);即控制电压范围−8.4V∼8.4V-8.4V \sim 8.4V−8.4V∼8.4V2. 电机速度控制App_Motor_Proc()每1ms执行一次① 编码器获取实际转速 ② PID计算控制电压 Ua ③ 根据电池电压计算PWM占空比 ④ 输出PWMPWM计算DutyUaVbat×100%Duty\frac{U_a}{V_{bat}}\times100\%DutyVbat​Ua​​×100%这样可以根据当前电池电压调整占空比。3. 设置目标转速App_Motor_SetOmega_L(Omega);App_Motor_SetOmega_R(Omega);本质上就是修改 PID 的SP 目标转速4. 电机开关App_Motor_Cmd(On);除了控制 PWM还会PID_Reset()清除 PID 的历史误差、积分和时间状态避免重新启动时继承之前的 PID 状态。三、pid_simple.c1. PID基本计算首先计算误差eSP−FBeSP-FBeSP−FB其中SP目标值FB实际反馈值然后计算 P、I、D 三部分PKpePK_p ePKp​eIKi∫e dtIK_i\int e\,dtIKi​∫edtDKddedtDK_d\frac{de}{dt}DKd​dtde​最后COPIDCOPIDCOPID在本项目中Kd0K_d0Kd​0所以实际使用COKpeKi∫e dtCOK_peK_i\int e\,dtCOKp​eKi​∫edt即PI控制。2. 离散算法实现程序运行在 STM32 上需要每次采样时计算一次所以使用离散形式。时间间隔deltaT(t_k-t_k_1)*1e-6f;积分采用梯形积分IkIk−1ekek−12ΔtI_kI_{k-1}\frac{e_ke_{k-1}}{2}\Delta tIk​Ik−1​2ek​ek−1​​Δt微分Dkek−ek−1ΔtD_k\frac{e_k-e_{k-1}}{\Delta t}Dk​Δtek​−ek−1​​因此 PID 每次计算都需要保存上一次时间 上一次误差 上一次积分值3. 限幅PID 输出进行限幅if(COUpperLimit)COUpperLimit;if(COLowerLimit)COLowerLimit;防止输出超过电机允许范围。同时对积分值进行限制避免积分不断累积造成积分饱和。四、两个文件的关系App_Motor.c │ ├── 编码器 → 获取实际转速 │ ├── PID → 计算 Ua │ ├── 电池 → 获取 Vbat │ └── PWM → 驱动电机其中App_Motor.c负责整个电机速度控制流程pid_simple.c负责具体的 PID 算法。最终记住这一条就够了目标转速 ↓ 速度误差 ↓ PI计算 ↓ Ua ↓ Ua / Vbat ↓ PWM ↓ 电机 ↓ 编码器测速 ↓ 反馈
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

油气领域多智能体协同与领域大模型落地实践 2026/9/30 9:18:58

油气领域多智能体协同与领域大模型落地实践

1. 项目概述:油气行业正迎来一场静默却深刻的“智能体革命”最近在几个能源行业技术沙龙里,我反复听到一个词被拎出来讨论——不是“数字孪生”,也不是“工业互联网”,而是“多智能体协同”。这个词乍一听像科幻小说里的设定&…

阅读更多 →
大模型服务器部署实战:显存估算、推理框架选型与生产级流程 2026/9/30 9:18:58

大模型服务器部署实战:显存估算、推理框架选型与生产级流程

这两年我帮团队和外部客户落地了十多个大模型推理服务,从最初几个人围着一台 4090 折腾,到后来用多卡 GPU 机器扛线上流量,框架选型、云服务配额、部署流程这些事基本都踩过一遍。到了 2026 年,大模型服务器部署其实已经有一套成熟…

阅读更多 →
金融客服合规引擎:实时情绪识别与敏感词拦截实战 2026/9/30 9:18:58

金融客服合规引擎:实时情绪识别与敏感词拦截实战

简介:这份资料面向金融科技从业者、客服系统产品经理及大模型应用开发者,聚焦金融客服场景下质效提升与合规管控的双重难题,给出基于DeepSeek的完整技术方案。内容围绕对话情绪识别与敏感词实时拦截两条主线展开,涵盖语料特征提取…

阅读更多 →
动态规划、多目标优化与启发式算法:工程调度问题求解实战 2026/9/30 9:18:58

动态规划、多目标优化与启发式算法:工程调度问题求解实战

复杂场景下的规划问题,我做了这么多年,最大的感受就是它从来不是"一个目标、一个约束、一个最优解"的教科书题目。无论是物流车辆调度、生产线排程、芯片布图,还是电力系统的机组组合规划,实际碰到的需求几乎全是多目标…

阅读更多 →
规划问题三板斧:动态规划、多目标优化与启发式算法实战解析 2026/9/30 9:18:58

规划问题三板斧:动态规划、多目标优化与启发式算法实战解析

“3.45”这个编号,看着像是某份讲义或者课程大纲里的一个小节号,但它背后站着的,其实是计算机科学里三座绕不开的山头:多目标优化、动态规划、启发式算法。这几年不管是面算法岗,还是自己做实际项目,我越来…

阅读更多 →
TensorFlow核心原理与生产级部署实战指南 2026/9/30 9:18:48

TensorFlow核心原理与生产级部署实战指南

1. 这不是“装个库”那么简单:TensorFlow到底在解决什么问题?你搜“tensorflow安装”,页面跳出一堆报错截图——CUDA版本不匹配、pip install卡死、import失败红字满屏。但真正卡住你的,从来不是那行命令本身。我带过三十多个从零…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉