为了实现 PID 控制所需要的等间隔采样,我们使用了一个定时中断,每 2ms 进行一次数据采样和 PID 计算。与此并行,系统中还设计了一个转速脉冲检测中断,从而实现了转速检测。为了调试的需要,程序中还在 main{}函数中加入了相关的调试代码,这部分代码有最低的优先级,可以在保证不影响控制策略的情况下实现发送调试数据等功能。检测环节对整个控制系统的质量起到至关重要的作用
4.3.2 PID控制调整速度
本系统采用的是增量式数字 PID 控制,通过每一控制周期(10ms)读入脉冲数间接测得小车当前转速 vi_FeedBack,将 vi_FeedBack 与模糊推理得到的小车期望速度 vi_Ref 比较,由以下公式求得速度偏差error1 与速度偏差率 d_error。
error1 = vi_Ref– vi_FeedBack; (公式3)
d_error = error1 –vi_PreError; (公式4)
公式 4 中, vi_PreError 为上次的速度偏差。考虑到控制周期较长,假设按 2.5m/s 的平均速度计算,则一个控制周期小车大概可以跑过 2.5cm,如果按这种周期用上述 PID 调节速度,则会导致加速减速均过长的后果,严重的影响小车的快速性和稳定性。为了解决这个问题,可以在 PID 调速控制中加入 BANG-BANG 控制思想:根据 error1 的大小,如果正大,则正转给全额占空比;如果负大,则自由停车或给一个反转占空比;否则就采用 PID 计算的占空比。
完整的pdf格式文档51黑下载地址:
智能车PID_算法实现原理讲解.pdf
(500.71 KB, 下载次数: 350)
PID精讲.pdf
(460.82 KB, 下载次数: 204)
|