基于STM32F407GTZ的pid电机控制代码(光电编码器)

本文主要介绍如何在STM32F407GTZ单片机上实现PID电机控制,侧重于代码实现而非理论,推荐了一篇详述PID原理的博客。在位置控制的PID中,利用编码器读数作为输入,避免在读取时清零以防止计算速度。目标设定为使电机在受到阻扰后能返回原位,编码器读数在定时器中断中更新,约每5ms触发一次。文章提供了定时器配置、编码器读取和PWM输出的配置,并分享了主函数代码,所有代码经过实际测试并可正常工作。
摘要由CSDN通过智能技术生成

注意:本篇博客主要是为了代码相关的实现进行讲解,不再过多的赘述pid相关的原理部分,如果有需要原理部分的知识,

指路一篇博客:

https://blog.csdn.net/qq_43743762/article/details/105827410?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162877665716780274161232%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162877665716780274161232&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-105827410.pc_search_download_positive&utm_term=pid%E6%8E%A7%E5%88%B6%E7%94%B5%E6%9C%BA&spm=1018.2226.3001.4187

这篇博客对于pid的原理阐述的非常详细,大家可以基于这个进行学习。

本篇博客不会给出所有的工程文件代码,如果需要可以关注我,并在评论区留下你的邮箱看到之后会立马发送工程文件

首先我们最先关注位置版的pid控制:

int Position_PID (int Encoder,int Target)
{ 	
	 float Position_KP=8,Position_KI=0.001,Position_KD=500;
	 static float Bias,Pwm,Integral_bias,Last_Bias;
	 Bias=Encoder-Target;                                  //计算偏差
	 Integral_bias+=Bias;	                                 //求出偏差的积分
	 Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);       //位置式PID控制器
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值