当前位置: 首页 > news >正文

2-2 PID-代码部分

目录

1、位置式PID定速控制

(1)按键控制PWM驱动电机(在主程序中)

(2)编码器测速(定时器中断)

(3)加入PID闭环控制

1)主程序

2)定时器中断函数

3)调试Kp,Ki,Kd的值

4)通过串口观察波形来调参比较直观

2、增量式PID定速控制

3、位置式PID定位置控制

4、增量式PID定位置控制


1、位置式PID定速控制

(1)按键控制PWM驱动电机(在主程序中)

(2)编码器测速(定时器中断)

编码器的读取周期和PID调控周期最好保持一致,可做到最大化利用编码器的分辨率

(3)加入PID闭环控制

1)主程序

按键不再控制PWM,而是控制Target

2)定时器中断函数

3)调试Kp,Ki,Kd的值

调试过程中可能会出现按一下按键,电机满转的现象,原因是电机和编码器的极性相反(给电机一个正向驱动力,编码器测速的值却是负的,计算公式就会认为应该加大Out使速度为正,此时本来我们想要的负反馈就变成了正反馈,即误差变得更大了,最终电机满转),将它们都改成顺时针为正或者都为逆时针为正就行了

Kp的数量级由(输出范围/输入范围)确定,即Out/Actual,如100/180大概等于零点几,则K的数量级大概就是0.几

Target的值可适当加大一点范围[-100,100]设成[-150,150]:由于电位器显示的值有点抖动,因此没必要把范围设置的那么死

4)通过串口观察波形来调参比较直观

最后可根据波形考虑是否要加入Kd,下面的情况就需要加入Kd

Kp,Ki,Kd都为0时,Out为0,电机速度为0

2、增量式PID定速控制

Error2表示上上次误差

用PD控制

Kp,Ki,Kd都为0时,ΔOut为0,但Out不为0,电机速度不为0(维持在当前值)

增量式PID的输出限幅的同时,也同时对积分进行了限幅,因此不存在积分饱和的问题

增量式PID适合自动控制和手动控制切换的场景

3、位置式PID定位置控制

定速控制:Actual给的是实际速度;让转盘以指定速度转动

定位置控制:Actual给的是实际位置;让转盘转指定的角度

4、增量式PID定位置控制

在增量式PID定速控制代码基础上将=改成+=;

增量式PID的Out比较依赖上一次Out,如果上一次的Out是错误的,那么增量式PID后续的调节就会持续受到这个错误影响,没有积分项的增量式PID,容易出现实际值与目标值偏移的问题,增量式PID的Ki最好不要设为0。

http://www.dtcms.com/a/266530.html

相关文章:

  • Fiddler 中文版怎么配合 Postman 与 Wireshark 做多环境接口调试?
  • Hawk Insight|美国6月非农数据点评:情况远没有看上去那么好
  • 如何将FPGA设计验证效率提升1000倍以上(2)
  • 应急响应靶场——web2——知攻善防实验室
  • 大带宽服务器中冗余技术的功能
  • 新能源汽车功率级测试自动化方案:从理论到实践的革命性突破
  • Python常用医疗AI库以及案例解析(2025年版、上)
  • Nginx + ModSecurity + OWASP CRS + Lua + GEOIP2 构建传统WAF
  • 【ACP】阿里云云计算高级运维工程师--ACP
  • 服务器的IO性能怎么看?
  • 【机器学习3】机器学习(鸢尾花分类)项目核心流程与企业实践差异分析
  • 【问题记录】MySQL错误1140深度解析:聚合查询中的GROUP BY问题解决方案
  • PP-OCR:一款实用的超轻量级OCR系统
  • LINUX74 LAMP5
  • Poetry 在 Linux 和 Windows 系统中的安装步骤
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的超级文化符号构建路径研究
  • WPF学习笔记(23)Window、Page与Frame、ViewBox
  • OneCode采用虚拟DOM结构实现服务端渲染的技术实践
  • 负载均衡--四层、七层负载均衡的区别
  • java中this. 和 this::的区别和用法
  • Apache RocketMQ进阶之路阅读笔记和疑问
  • RabbitMQ用法的6种核心模式全面解析
  • 论文解析:AutoMedPrompt框架的核心与实现示例
  • 【Qt】在windows环境下,配置QtCreator中的clang-format
  • P/Invoke 在默认封送(marshalling)规则下,常见托管 ⇄ 非托管类型的对应关系
  • Jenkins-Publish HTML reports插件
  • Oracle DB和PostgreSQL,OpenGauss主外键一致性的区别
  • 强化学习 (10)蒙特卡洛
  • SRE - - PV、UV、VV、IP详解及区别
  • Web基础关键_008_JavaScript 的 BOM、ES6、构造函数、原型