电赛控制类PID算法实现

这篇具有很好参考价值的文章主要介绍了电赛控制类PID算法实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是PID

学过自动控制原理的对PID并不陌生,PID控制是对偏差信号e(t)进行比例、积分和微分运算变换后形成的一种控制规律。PID 算法的一般形式:

电赛控制类PID算法实现

  • PID控制系统原理框图
    电赛控制类PID算法实现

二、PID离散化

对PID连续系统离散化,从而方便在处理器上实现,PID 离散表示形式:

电赛控制类PID算法实现

离散化后最终得到位置式PID:
电赛控制类PID算法实现

u(k)为控制器输出的控制量;(输出)
e(k)为偏差信号,它等于给定量与输出量之差;(输入)
Kp 为比例系数;
Ti 为积分时间常数;
Td 为微分时间常数。


1. 位置式PID公式

电赛控制类PID算法实现

2. 增量式PID公式

电赛控制类PID算法实现


三、两种PID的不同点

  • 位置式
    是一种非递推算法,输出值U(k)和执行机构的实际位置一一对应,在不带积分部件的对象中可以很好的应用。但是每次输出均与过去的状态有关,计算量大。
  • 增量式
    输出的是增量,控制增量的值仅与最近3次采样值有关,不需要累计偏差,运算量小,计算错误影响小。但会积分截断效应大,有稳态误差。

四、C语言程序实现文章来源地址https://www.toymoban.com/news/detail-462333.html

  • pid.c
#include "pid.h"

/*定义PID参数结构体*/
typedef struct _PID
{
    float Kp,Ki,Kd;//比例系数、积分系数、微分系数
    float SetValue,ActualValue;//目标值、实际值
    float Error;//第K次误差
    float LastError;//第K-1次误差
    float PreError;//第K-2次误差
    float SumError;//累计偏差
    float Integral,MaxI;//积分、积分限幅
    float Output,MaxOut;//输出、输出限幅
}PID;

/************************************************
*@brief  :位置式PID控制器
*@param  :PID结构体变量地址,当前实际值
*@retval : 期望输出值
*************************************************/
int32_t Position_PID_Control(PID *pid,float Cur_Value)
{
    pid->Error=pid->SetValue-Cur_Value; //计算偏差      
    pid->SumError +=pid->Error;//累计偏差
    pid->ActualValue=(pid->Kp*(pid->Error-pid->LastError))//比例环节
    +(pid->Ki*pid->SumError)//积分环节
    +(pid->Kd*(pid->Error-pid->LastError);//微分环节
    pid->LastError=pid->Error;
    return ((int32_t)pid->ActualValue); //返回计算值	 
}

/************************************************
*@brief  :速度闭环PID控制
*@param  :PID结构体变量地址,当前实际值
*@retval : 期望输出值
*************************************************/
int32_t Inc_Pid_Ctrl(PID *pid,float Cur_Value)
{
    pid->Error=pid->SetValue-Cur_Value; //计算偏差
    pid->ActualValue +=(pid->Kp*(pid->Error-pid->LastError))//比例环节
    +(pid->Ki*(pid->Error))//积分环节
    +(pid->Kd*(pid->Error-2*pid->LastError+pid->PreError));//微分环节 
    pid->PreError=pid->LastError;//存储偏差,进行下次计算                                                             
    pid->LastError=pid->Error;                                                            	
    return ((int32_t)pid->ActualValue); //返回计算值
}

到了这里,关于电赛控制类PID算法实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年电赛---运动目标控制与自动追踪系统(E题)OpenMV方案

    如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效 (1)废话少说,很多人可能无法访问GitHub,所以我直接贴出可能要用的代码。 此博客还会进行更新,

    2024年02月14日
    浏览(44)
  • matlab自动控制状态反馈 设计PID控制回路、保证控制效果

    1、内容简介 略 36-可以交流、咨询、答疑 2、内容说明 系统描述 已知系统的传递函数为  ,以T=0.25s对系统采样,要求: 1)设计PID控制回路,能够实现闭环系统   ,稳态误差在斜坡输入情况下为0。 理论分析 2.1 极点求解 已知闭环系统的性能要求为  , ,则系统的2个闭环极

    2024年01月23日
    浏览(39)
  • 2023年电赛---运动目标控制与自动追踪系统(E题)关于网友的问题回复

    如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效 (1) 各位私信问问题之前,看看自己的问题是不是在这个里面再问! (2) 12023年8月3日,10点25分。

    2024年02月14日
    浏览(48)
  • 2023年电赛---运动目标控制与自动追踪系统(E题)OpenART mini的代码移植到OpenMV

    如果有嵌入式企业需要招聘校园大使,湖南区域的日常实习,任何区域的暑假Linux驱动实习岗位,可C站直接私聊,或者邮件:zhangyixu02@gmail.com,此消息至2025年1月1日前均有效 (1)已经有不少同学根据我上一篇博客完成了前三问,恭喜恭喜。有很多同学卡在了第四问。 (2)我

    2024年02月14日
    浏览(38)
  • MPC自动驾驶横向控制算法实现 c++

    参考博客: (1)无人车系统(十一):轨迹跟踪模型预测控制(MPC)原理与python实现【40行代码】 (2)【自动驾驶】模型预测控制(MPC)实现轨迹跟踪 (3)自动驾驶——模型预测控制(MPC)理解与实践 (4)MPC算法学习(1) 0 前言 前面介绍的PID、Pure pursuit、Stanley都只是利用当前的

    2024年02月22日
    浏览(44)
  • 基于PID算法下STM32控制的坡道行驶电动小车(2020年电赛)

    本题源于2020年TI杯大学生电子设计竞赛C题-----坡道行驶电动小车 由于手上没有MSP430/MSP432 板子,所以本篇采用stm32实现 任务 利用 TI 的 MSP430/MSP432 平台,设计制作一个四轮电动小车。要求小车能沿着指定路线在坡道上自动循迹骑线行驶。小车必须独立运行,车外不能使用任何

    2024年02月16日
    浏览(48)
  • 自动驾驶控制算法——基础控制算法原理

    Pure Pursuit算法是一种通过车辆运动几何学(阿克曼转向几何)对前轮转角进行调整来消除横向偏差的横向控制算法,其参考点为后轴中心点。 该算法的思想是:基于当前车辆后轴中心位置,在参考路径上向前 l d l_d l d ​ 的距离匹配一个预瞄点,将此预瞄点作为该周期的goal

    2024年01月17日
    浏览(38)
  • 自动泊车的自动驾驶控制算法

    自动泊车系统(AutomatedParkingASSiSt,APA)利用车辆搭载的传感器感知车辆周边环境,扫描满足当前车辆停放的障碍物空间车位或线车位,并通过人机交互(HumanMachine Interface,HMI)获取驾驶员对目标车位的选择或自动确定目标车位,自动规划泊车路径,通过控制器向车辆执行机构发送横向及纵

    2024年02月11日
    浏览(38)
  • 【自动驾驶】【零基础】基础自动驾驶控制算法笔记

    本文接近25000字 从理论到实践,全部零基础开始,一步一步完成自动驾驶车辆控制基础 感谢:忠厚老实的老王 下面是他的主页:忠厚老实的老王的个人空间_哔哩哔哩_bilibili 目录 第一讲  绪论 第二讲  三个坐标系与运动学方程 一、控制原理 二、三个坐标系 三、左手系与右

    2023年04月21日
    浏览(49)
  • 自动驾驶:控制算法概述

    PID(Proportional-Integral-Derivative)控制是一种经典的反馈控制算法,通常用于稳定性和响应速度要求不是特别高的控制系统。PID控制基于三个主要组成部分:比例项(P),积分项(I),和微分项(D)。比例项根据当前误差来产生控制输出,积分项处理历史误差的总和,微分项

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包