【嵌入式开发】STM32电机闭环控制实战:PID算法与PWM调优详解

【PID】STM32通过闭环PID控制电机系统 STM32通过闭环PID控制电机系统 阅读详情

1. 电机闭环控制:从玩具车到工业级的精准掌控

记得我第一次玩智能小车的时候,电机总是忽快忽慢,转弯时更是飘忽不定。后来才知道,开环控制就像蒙着眼睛开车——你给了指令,但根本不知道电机实际转得多快。而闭环控制才是真正的"睁眼开车",通过实时反馈来精准调节电机转速。

STM32的闭环控制其实就是让电机变得"聪明"起来。系统会不断检测电机的实际转速,与期望转速进行比较,然后自动调整PWM输出,让电机始终保持在理想状态。这种控制方式在智能小车、机械臂、工业传送带等场景中特别重要,毕竟谁都不希望自己的小车跑着跑着就偏离赛道。

2. 硬件搭建:让STM32与电机完美对话

2.1 核心组件选型指南

我在项目中最常用的是STM32F103系列,性价比高且资源丰富。电机驱动芯片推荐TB6612,比传统的L298N发热量小很多,而且支持更大电流。编码器建议选择AB相输出的类型,精度足够一般应用。

电源部分要特别注意:电机和单片机最好分开供电。我吃过亏,曾经因为共用一个电源,电机启动时的电压波动导致单片机不断重启。建议电机用12V独立电源,STM32用3.3V稳压模块,中间用光耦或者电平转换芯片隔离。

2.2 接线实战经验分享

接线时最容易出错的是编码器部分。AB相输出需要接到STM32的定时器编码器接口,通常TIM2/TIM3/TIM4/TIM5都支持这个功能。具体来说:

  • 编码器A相接TIMx_CH1
  • B相接TIMx_CH2
  • 记得开启上拉电阻,避免信号抖动

电机驱动部分,TB6612的PWMA接STM32的PWM输出引脚,AIN1/AIN2接普通GPIO控制方向。这里有个小技巧:PWM频率建议设置在10-20kHz,太低会有噪音,太高则驱动芯片可能响应不过来。

3. PWM基础:不仅仅是开关那么简单

3.1 PWM的工作原理揭秘

PWM(脉冲宽度调制)本质上是通过快速开关来控制平均电压。假设我们设置PWM周期为1000个计数单位,当占空比为50%时,前500个计数周期输出高电平,后500个输出低电平,这样电机得到的平均电压就是电源电压的一半。

在STM32中配置PWM很简单,以TIM1为例:

void PWM_Init(void)
{
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_OCInitTypeDef TIM_OCInitStructure;
    
    // 时钟使能省略...
    
    TIM_TimeBaseStructure.TIM_Period = 999;        // 自动重装载值
    TIM_TimeBaseStructure.TIM_Prescaler = 71;      // 预分频器
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStruct
STM32CubeIDE自平衡小车教程6.电机转速闭环控制 开始之前我们需要了解的是完成闭环控制输出任务前提是必须要有printf输出功能和PWM输出功能。 1)其中printf功能是为了在最后阶段,监测实时的PWM值,检测是否实现闭环控制。 关于printf功能的实现可参考教程4的内容: STM32CubeIDE自平衡小车教程4.配置串口并实现字符的输出 2)PWM输出功能是为了实现最后车轮能按照设定的转速转动。 关于PWM输出功能的实现可参考教程5的内容: STM32CubeIDE自平衡小车教程5.直流电机转速开环控制 以下是实现电机转速闭环控制的 阅读详情

相关推荐

第九章-PID整定方法 STM32PID驱动编码器 STM32PID控制电机转速 STM32循迹小车PID算法 STM32智能小车 STM32电磁小车 STM32PID控制PWM电机 STM32平衡小

后续章节也放这里 持续更新中,

2501_91880063的博客 1448

STM32电机PID速度控制

2.3 STM32电机PID速度控制 之前的文章,完成了直流减速电机的PWM控制、电机测速。本篇文章,将实现电机的速度闭环控制。 在公众号:小白学移动机器人,发送:速度PID,即可获得本篇文章的STM32工程文件以及相关资料。 2.3.1 解决的问题 解决带编码器直流电机的速度闭环问题。 2.3.2 PID理论 将偏差的比例、积分、微分,通过线性组合构成控制量,用控制量对被控对象进行控制,这样的控制器称为PID控制器。在连续空间中,我们通常探讨模拟PID的控制原理,如图所示: 我们这里用电机速度控制为例,

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 6万+

STM32通过PID调节器实现速度闭环控制

采用stm32使用PID控制器实现对步进电机转速的控制。

TAosjdjfnjffkd的博客 3055

STM32实现PID闭环控制的深度解析

STM32微控制器是STMicroelectronics公司生产的一款广泛应用于嵌入式系统的32位微控制器。它采用ARM Cortex-M系列处理器,具有高性能、低功耗的特点,支持丰富的外设接口,能够满足从简单到复杂的嵌入式应用需求。本章将从基本概念、核心特性、以及其在行业中的应用三个方面对STM32微控制器进行简要介绍。在自动控制领域中,控制系统根据信号的流向可以被分为开环控制系统和闭环控制系统。开环控制系统是指控制信号仅有一个方向流动,即从控制器输出到被控对象,没有反馈回路。

weixin_42594419的博客 1262

基于STM32的PID电机闭环控制实战参考代码

看完这一整套流程,你会发现,所谓“高端控制”,其实是由一个个看似简单的模块组成的:硬件提供能力(定时器、ADC、PWM)软件组织逻辑(中断、PID、滤波)工程把握尺度(参数、优先级、抗干扰)当你能把这些元素揉合在一起,让一台电机听话地启停、稳速、抗扰,那一刻,你会感受到一种独特的成就感。而这,正是嵌入式控制的魅力所在。“好的控制系统,不该让人注意到它的存在。—— 它只是默默地,把一切维持在恰到好处的状态。

weixin_35935514的博客 1168

PID控制STM32 PWM输出

本文介绍如何利用PID算法结合STM32的PWM功能实现精确闭环控制,适用于恒温、电机调速等场景。通过反馈调节占空比,解决过冲、稳态误差等问题,并详细讲解PID参数整定、抗饱和处理及系统优化方法。

w3x4y的博客 1375

STM32 PID电机闭环控制参考代码

采用STM32F103平台,代码包含绝对式和增量式PID 控制, 实现速度电流闭环控制

基于战舰STM32开发简易直流电机速度环PID闭环控制

基于战舰STM32开发简易直流电机速度环PID闭环控制 内有详细说明

STM32 PID电机闭环控制代码

STM32 PID电机闭环控制代码 包括: //绝对式PID算法 /*增量式PID计算*/

电机位置闭环控制(STM32F1)

这是基于STM32F1,利用位置环实现对电机的控制的代码。代码是STM32F1寄存器版本的,有明确的注释,适用于初学STM32F1,实现电机位置环控制的人。

Proteus仿真实战:用AT89C51+L298N搭建直流电机PID调速系统(附完整工程文件)

本文详细介绍了使用Proteus仿真平台结合AT89C51单片机和L298N驱动模块搭建直流电机PID闭环调速系统的全过程。从硬件选型、电路连接到PID算法实现与参数整定,提供了完整的开发指南和工程文件,帮助读者快速掌握闭环调速系统的设计与调试技巧。

weixin_28724661的博客 447

OpenIddict实战:5步搞定.NET Core应用的OIDC单点登录集成

本文详细介绍了如何使用OpenIddict在.NET Core应用中快速实现OIDC单点登录集成。通过五个关键步骤,包括环境准备、数据库集成、客户端注册、令牌配置和多应用SSO集成,帮助开发者高效构建安全的企业级单点登录解决方案。

lambda的博客 726

3D高斯泼溅实战:如何用自采数据集训练出高质量3D模型(附COLMAP避坑指南)

本文详细介绍了使用自采数据集训练高质量3D高斯泼溅模型的完整实战流程。从数据采集规范、COLMAP稀疏重建的深度配置与避坑指南,到数据格式转换及3DGS训练调优策略,提供了针对自采数据的关键参数调整与问题排查方案,帮助读者高效构建专属3D场景。

g9h0i1的博客 975

RingBuffer 环形缓冲区----镜像指示位

称作环形缓冲区,也称作环形队列(circular queue),是一种用于表示一个固定尺寸、头尾相连的缓冲区的数据结构,适合缓存数据流。这个宏定义用于计算向下对齐的地址。size和align。size是要对齐的内存大小,align是所需的对齐大小。这个宏返回一个值,该值是size向下对齐到align边界后的地址。例如,假设我们有一个 32 位的系统,并且我们需要将数据对齐到 64 位的边界。我们可以使用在这个例子中,data数组的大小为 10 个元素,我们需要将其对齐到 8 字节边界。宏返回data。

呵呵哒!的博客 2405

systrace分析 之 问题初步定位

如下surfaceflinger空缺点,上面对应的bufferTX 中有buffer,但VSYNC-SF 过来后,SurfaceFlinger却没有去取,检查测试app “android.settings”, 也没有GPU completion 时间长的问题,所以该部分可以请SurfaceFlinger的owner 进一步确认为何不取buffer。. GPU拿的是acquireFence HWC拿的是releaseFence, GPU是绘图,HWC是合成显示,这两个是互相等待的关系,

yangzex的专栏 3191

【AutoCAD中实现双击文本编辑功能】

例如:以下是官方博客例子浅析先加入相关的头文件和库文件。在AutoCAD中有一个很重要的功能,就是双击图形尺寸或文本后会出现一个文本编辑框,用户可在该编辑框中修改文字。本文介绍了如何使用AcEdInplaceTextEditor来实现该功能。实现cad的消息监听。创建一个消息监听的类并在cad中注册来实现消息监听。主要是监听键盘输入。提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了的函数和方法。

我的博客 1148

从win系统远程使用服务器中的nsight system、nsight compute

本文介绍了如何在Windows系统中远程使用服务器上的Nsight System和Nsight Compute工具。主要内容包括:1)双系统同步安装相同版本的Nsight工具,配置环境变量;2)命令行生成profile文件或直接运行分析;3)Windows远程连接服务器的配置方法;4)解决权限问题的具体方案,如修改文件夹权限或调整NVIDIA驱动配置。文章提供了详细的安装步骤和常见问题解决方案,适用于需要进行GPU性能分析和调试的开发人员。

Justinyh的博客 401

使用MATLAB和Simulink来设计并仿真一个智能家居多传感器数据融合系统

智能家居多传感器数据融合系统旨在通过集成来自多种不同类型的传感器的数据,以提供更精确和可靠的环境信息或用户状态监测。例如,将温度、湿度、光照强度、运动检测等多种传感器的数据结合起来,可以更好地了解家庭内部的状态,并做出相应的调整或响应。在这个教程中,我们将使用MATLAB和Simulink来设计并仿真一个智能家居多传感器数据融合系统。

amy_mhd的博客 187

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: BUUCTF ciscn_2019_s_3:利用ret2csu与系统调用绕过NX防护
下一篇: STM32按键输入与GPIO读取函数深度解析
水果削皮艺术家
博客等级 码龄3年 47粉丝 1437原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值