智能车PID

PID学习笔记——2021.3.20

PID原理

一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)

bilibili:通俗易懂的PID控制算法讲解

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

PID系数调节

  1. 比例环节
  • P参数越小比例作用越强,动态响应越快,消除误差的能力越强。

  • 由于实际系统是有惯性的,比例作用不宜太强,比例作用太强会引起系统振荡不稳定。

  • P参数的大小应在以上定量计算的基础上根据系统响应情况,现场调试决定,通常将P参数***由大向小调***,以能达到最快响应又无超调(或无大的超调)为最佳参数。

  1. 积分环节
  • 由于实际系统是有惯性的,输出变化后,y(t)值不会马上变化,须等待一段时间才缓慢变化,因此积分的快慢必须与实际系统的惯性相匹配

  • 惯性大、积分作用就应该弱,积分时间I就应该大些,反之而然。如果积分作用太强,积分输出变化过快,就会引起积分过头的现象,产生积分超调和振荡。

  • I参数也是***由大往小调***,即积分作用由小往大调,观察系统响应以能达到快速消除误差,达到给定值,又不引起振荡为准。

  1. 微分环节
  • D越大,微分作用越强,D越小,微分作用越弱。系统调试时通常把D***从小往大调***,具体参数由试验决定。
  • 微分作用可以在产生误差之前一发现有产生误差的趋势就开始调节,是提前控制,所以及时性更好,可以最大限度地减少动态误差,使整体效果更好。
  • 但微分作用只能作为比例和积分控制的一种补充,不能起主导作用,微分作用不能太强,太强也会引起系统不稳定,产生振荡,微分作用只能在P和I调好后再由小往大调,一点一点试着加上去。

在低频段,主要是PI控制规律起作用,提高系统型别,消除或减少稳态误差;在中高频段主要是PD规律起作用,增大截止频率和相角裕度,提高响应速度。因此,控制器可以全面地提高系统的控制性能。

PID控制器的参数整定

  1. 理论计算整定法

依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。

  1. 工程整定方法

主要依赖工程经验,直接在控制系统的试验中进行

主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比例法。

临界比例法

步骤如下:

  1. 首先预选择一个足够短的采样周期让系统工作;

2.

### 智能车 PID 控制原理及实现 #### 什么是PID控制? 比例-积分-微分(Proportional-Integral-Derivative, PID)控制器是一种广泛应用于工业自动化和控制系统中的经典控制方法[^2]。它通过实时采集误差信号,并利用比例、积分和微分三个部分来调整输出量,从而使系统达到期望的目标。 对于智能车而言,PID控制器通常用于速度控制、方向控制以及路径跟踪等方面。其核心在于通过对传感器数据的处理,动态调整电机的速度或转向角度,以保持车辆沿着预定轨迹行驶。 --- #### 智能车PID控制的具体实现 ##### 数据采样与中断机制 为了满足PID控制所需的等间隔采样,在实际开发过程中,通常会设置一个定时器中断服务程序,每隔固定时间周期(如2毫秒)执行一次数据采样和PID运算逻辑[^3]。这种高精度的时间管理有助于提高控制系统的响应速度和平稳性。 同时,为了监测电机的实际运行状态,还会配置另一个专门负责转速脉冲检测的外部中断源。该功能允许系统精确获取当前轮子旋转频率的信息,进而作为输入变量参与后续计算过程。 以下是基于C语言的一个典型定时中断框架示例: ```c #include <reg52.h> // 定义全局变量存储上次偏差值和累积误差项 float prev_error = 0; float integral_term = 0; void Timer_Init() { TMOD |= 0x01; // 设置TMR0为模式1 (16位计数器) TH0 = (65536 - 2000) / 256; // 配置初值对应约2ms溢出周期 TL0 = (65536 - 2000) % 256; ET0 = 1; // 开启TMR0中断使能 EA = 1; // 总中断开关打开 } void main() { Timer_Init(); // 初始化定时器模块 while(1){ // 主循环可用于其他任务或者等待事件触发 } } void T0_ISR(void) interrupt 1 { static float error = 0; // 假设target_speed为目标速度,setpoint为设定点 error = target_speed - setpoint; integral_term += error * 0.002f; // 积分项更新 float derivative_term = (error - prev_error)/0.002f; // 微分项更新 prev_error = error; // 计算最终输出PWM占空比 float output_pwm = Kp*error + Ki*integral_term + Kd*derivative_term; } ``` 上述代码片段展示了如何借助硬件资源完成基本的数据收集流程,并结合软件算法得出驱动指令的过程。 --- ##### 参数调优的重要性 尽管标准形式下的PID表达式看似简洁明了,但在具体应用场景下却往往面临诸多挑战——比如外界环境变化引起的扰动因素影响或是内部机械部件磨损带来的非线性特征等问题都需要特别考虑进去。因此合理选择合适的增益系数Kp,Ki,Kd显得尤为重要[^1]。 一种常用的方法是从经验出发逐步试探最佳组合;另一种更为科学严谨的方式则是运用现代优化技术寻找全局最优解。例如遗传算法(Genetic Algorithm),粒子群优化(Particle Swarm Optimization)等都可以有效提升寻参效率的同时兼顾稳定性表现。 --- #### 结论 综上所述,PID作为一种历史悠久但仍充满活力的技术手段,在智能车载平台上的成功部署离不开扎实的基础理论支撑以及细致入微的操作实践相结合的结果。无论是从软硬件协同工作的层面还是针对特定问题域展开深入探讨的角度来看,都值得进一步挖掘探索其中蕴含的价值潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值