基于STM32的位置速度环PID控制伺服电机转动位置及程序说明

PID控制原理

PID控制原理是一种广泛应用于工业自动化和其他领域的控制算法。PID控制器的名字来源于其三个主要组成部分:比例(Proportional)、积分(Integral)和微分(Derivative)。PID控制器实现的是输入信号和期望信号的零误差。比例控制就是对误差成比例放大,让输出信号按照线性规律接近期望值,比例控制的目的就是让输出值无限接近期望值;积分控制就是对误差随着时间的积分值按一定比例输出,让输出信号能够到达期望值,积分控制的目的就是让输出值在期望值附近振荡;微分控制就是对误差的变化按一定比例输出,微分控制的目的就是为了消除振荡,让输出信号保持稳定。完整的PID控制就是将比例控制的输出值、积分控制的输出值和微分控制的输出值加起来。让输出的信号等于期望信号,并保持稳定。

位置速度环PID原理

位置速度环控制如上图所示,输入信号是期望的目标位置,输出是电机的驱动信号,控制电机的旋转启停、旋转速度。通过旋转编码器作为传感器获取电机的转动情况,并经过一定的计算过程得到实际转轴的位置以及实际转轴的速度。

内环是速度环,内环的输入是速度误差,就是期望速度减去实际转轴速度,速度误差输入到速度PID控制器中经过计算得到输出值,该输出值就是对电机驱动信号的控制,电机的控制一般以PWM信号来控制,于是输出值就是PWM信号的占空比。

外环是位置环,上述内环中的期望速度其实就是外环的输出,是通过外环计算出来的而不是固定的,外环的输入是位置误差,就是期望位置减去实际转轴位置。外环的输入就是电机最终期望达到的位置。

内环和外环的关系有两点需要注意:第一点是内环的期望值,也就是输入,是外环PID计算后得到的输出;第二点是外环控制对象是内环控制对象的积分,这里外环的控制对象是实际转轴的位置,内环的控制对象是实际转轴的速度,它俩存在一个积分的关系。

代码解析

实践是检验真理的唯一标准。下面用实际使用过的代码来解释一下位置速度环PID的实现过程。

硬件方面,主控选择的是STM32单片机,电机驱动模块选择TB6612模块还有电机及编码器。软件方面,选择利用CubMX生成HAL库的工程,具体生成过程大同小异。

首先第一步是获取电机编码器的脉冲数,这里通过STM32内部的计数器实现。在总的定时器回调函数中,htim7是20ms的定时器,如下图所示,每20ms进入中断函数一次。

首先获取电机每20ms内电机编码器输出脉冲数。hitm3和htim8都设置为encoder mode,即定时器编码器模式,获取两个电机编码器的脉冲值。获取到的脉冲值用于计算实际转轴的位置和速度。

后再看总的位置速度环PID控制函数Location_Speed_control()。总的PID控制函数的关键部分包括位置环PID控制函数location_pid_control()和速度环PID控制函数speed_pid_control()。

有了实际速度之后,再通过速度环PID运算函数speed_pid_realize得到PID输出控制值。该函数通过一个结构体传递目标值、误差、上一个偏差值、PID系数以及积分值等参数,这些参数中,目标值是通过位置环PID运算函数计算得到的,PID系数是要提前设置好的。

速度环PID运算函数speed_pid_realize得到PID输出控制值其实就是PWM输出。如下图所示,speed_Outval和speed2outval就是速度环PID运算函数的计算结果,它们的值传入MotorOutput电机输出函数中。

在MotorOutput电机输出函数中,主要是判断方向以及限制PWM输出上限值。

最后我们再介绍一下位置环PID控制函数location_pid_control()。该函数也需要通过编码器脉冲数先获取电机转轴实际位置。

有了实际位置后,通过location_pid_realize函数调用位置PID结构体和实际位置计算得到目标速度,目标速度输出给速度环的输入,这样就完成闭环了。

其他说明

上述介绍的代码在电子设计竞赛中实际应用过,可以稳定运行,需要相关文件用于借鉴学习可以私聊。

相关推荐
仰望星空的凡人1 小时前
探秘MCU最小系统中的晶振部分是如何工作的?
单片机·嵌入式硬件
羽获飞2 小时前
从零开始学嵌入式之STM32——8.流水灯
stm32·单片机·嵌入式硬件
蓬荜生灰10 小时前
STM32(13)-- 位带操作
stm32·单片机·嵌入式硬件
哎呦 你干嘛~12 小时前
plc单片机485通讯
单片机·嵌入式硬件
szxinmai主板定制专家12 小时前
基于 PC 的控制技术+ethercat+linux实时系统,助力追踪标签规模化生产,支持国产化
arm开发·人工智能·嵌入式硬件·yolo·fpga开发
泡泡糖的中文规格书15 小时前
【硬件设计】LM358DR2G中文文档深度解读:高质量翻译与芯片特性全解析
嵌入式硬件·规格说明书·电路设计·运放·中文翻译·datasheet
czwxkn16 小时前
2STM32(stdl)GPIO输入
stm32·单片机·嵌入式硬件
码农三叔17 小时前
(9-1)电源管理与能源系统:电池选择与安全
人工智能·嵌入式硬件·安全·机器人·能源·人形机器人
qq_2466461919 小时前
openclaw快速安装-windows版
windows·stm32·单片机
染予21 小时前
13.AD软件操作:原理图如何导入PCB及导入常见错误
嵌入式硬件