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

PID程序实现

文章目录

  • 调控周期
  • 位置式PID程序实现
  • 增量式PID程序实现

调控周期

  • 一般取决于被控对象变化的快慢,倒立摆,平衡车,飞行器变化得很快,一般50ms,20ms,10ms,1ms就要进行一次调控,
  • 姿态传感器,每隔5ms才能更新一下,太快也没用,
  • 电机控速20~100ms都可以
  • 一般就在定时器中断中实现定时调控,注意中断中不能和主循环调用同一个硬件资源,因为中断和主循环相当于多线程,等同于访问临界资源(或者可以在定时器中断中置标志位,在主循环中不断检查标志位可以避免同时访问临界资源)

位置式PID程序实现

	// 获取实际值Actual = 读取传感器();// 获取本次误差和上次误差Error1 = Error0;Error0 = Target - Actual;// 误差积分(累加)ErrorInt += Error0;// PID计算Out = Kp * Error0 + Ki * ErrorInt + Kd * (Error0 - Error1);// 输出限幅if (Out > 上限) {Out = 上限;}if (Out < 下限) {Out = 下限;}

增量式PID程序实现

  • 输出全量式(与上面的位置式PID实现功能一样)
	// 获取实际值Actual = 读取传感器();// 获取本次误差和上次误差、上上次误差Error2 = Error1;Error1 = Error0;Error0 = Target - Actual;// PID计算Out += Kp * (Error0 - Error1) + Ki * Error0 + Kd * (Error0 - 2 * Error1 + Error2);// 输出限幅if (Out > 上限) {Out = 上限;}if (Out < 下限) {Out = 下限;}
  • 输出增量式
	// 获取实际值Actual = 读取传感器();// 获取本次误差和上次误差、上上次误差Error2 = Error1;Error1 = Error0;Error0 = Target - Actual;// PID计算DeltaOut = Kp * (Error0 - Error1) + Ki * Error0 + Kd * (Error0 - 2 * Error1 + Error2);// 输出限幅if (Out > 上限) {Out = 上限;}if (Out < 下限) {Out = 下限;}
http://www.xdnf.cn/news/2236.html

相关文章:

  • 高速系统设计理论基础
  • (done) 吴恩达版提示词工程 4. 摘要 (生成摘要,指定信息摘要,提取指定信息,多条评论摘要)
  • 什么是智能导诊知识库?
  • Pinia 详细解析:Vue3 的状态管理利器
  • 【油猴脚本 2】bilibili 视频合集标题搜索
  • 软件维护类型四大类型(IEEE 14764 标准)
  • Java基础 4.26
  • Dijkstra‘s Algorithm Implementation
  • Compose笔记(十九)--NestedScroll
  • Pygame核心概念解析:Surface、Clock与事件循环
  • 教育领域的AIGC革命:构建多模态智能教学系统
  • Dify + Mermaid 实现自然语言转图表
  • Rule.issuer(通过父路径配置loader处理器)
  • Windows怎样改变鼠标指针方案
  • 使用FME生成Delaunay三角形
  • 《淘宝API数据治理实践:采集字段标准化与数据质量监控体系》
  • 戴维斯双击选股公式如何编写?
  • Makefile---自动化构建和管理项目的文件
  • Java基础 — 循环
  • BS架构与CS架构的对比分析:了解两种架构的不同特点与应用
  • C语言函数调用与声明
  • HTML基础
  • QNX/LINUX/Android系统动态配置动态库.so文件日志打印级别的方法
  • 悟空统计平台在教育行业的落地:课程转化路径优化实践
  • Python 实现从 MP4 视频文件中平均提取指定数量的帧
  • vue3学习之防抖和节流
  • module.noParse(跳过指定文件的依赖解析)
  • Spring Boot安装指南
  • Qt 5.15 编译路径吐槽点
  • QML Date:日期处理示例