首先定义 pid结构体:

typedef struct PID
{long SumError; //误差累计int32 LastError;  //Error[-1]int32 PrevError; //Error[-2]int32 LastSpeed; //Speed[-1]float KP;                              //比例常数 Proportional Constfloat KI;                                //积分常数 Integral Constfloat KD;                              //微分常数 Derivative Const
} PID;


在舵机,电机,编码器中,为了在面对不同的赛道的变化时做出相应的精确变化,通常采用PID控制,可以使它们在面对不同的赛道类型时达到闭环控制的效果。其中,主要用到2种PID。

代码如下:

float PlacePID_Control(PID *sprt, int32 NowPiont, int32 SetPoint)
{       int iError; //当前误差      float   Kp=0,Actual=0;        //动态PiError = SetPoint - NowPiont; //计算当前误差Kp = 1.0 * (iError*iError) / S3010[Set][T] + S3010[Set][P];   //P值与差值成二次函数关系Actual = Kp * iError + S3010[Set][D] * (iError - sprt->LastError);//只用PDsprt->LastError = iError;        //更新上次误差return  S3010_MID - Actual;}


代码如下:

int32 PID_Realize(PID *sptr, int32 ActualSpeed, int32 SetSpeed)
{int32 iError,Increase;     //当前误差     最后得出的实际增量iError = SetSpeed - ActualSpeed;//计算当前误差Increase = sptr->KP * (iError - sptr->LastError)+ sptr->KI * iError+ sptr->KD * (iError - 2 * sptr->LastError + sptr->PrevError);sptr->PrevError = sptr->LastError;   //更新前次误差sptr->LastError = iError;           //更新上次误差return Increase;
}

软件设计(舵机电机的PID控制)相关推荐

  1. tec控制pid程序_利用 SPICE 设计 TEC 温度环路 PID 控制

    使用模拟比例积分微分 (PID) 控制器的温度控制是一种非常简单的电路,是确保热电冷却器 (TEC) 的设置点能够对温度或者激光进行调节的有效方法.比例积分项协同工作,精确地伺服TEC的电流,以维持控 ...

  2. 大疆A型板使用经验分享(七)——大疆M3508电机和PID控制

    一. 大疆M3508电机 大疆M3508电机可以从RM官网下载很多相关资料,这里不做过多赘述.关于电机配套电调使用的时候,重点是如下两张图: 第一张图是电调接收报文的格式,即如果要发送数据给1号到4号 ...

  3. 模糊PID控制在自动光电整纬装置中的应用

    模糊PID控制在自动光电整纬装置中的应用 摘要:针对纺织品在运行过程中的变形是非线性.时变的特点,提出一种新型自动整纬装置的设计方法.采用高性能的TMS320LF2407A芯片作为主处理单元,软件采用 ...

  4. SLAM导航机器人零基础实战系列:(四)差分底盘设计——2.stm32主控软件设计

    SLAM导航机器人零基础实战系列:(四)差分底盘设计--2.stm32主控软件设计 摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买 ...

  5. 变速积分pid控制器matlab,变速积分PID控制系统设计.docx

    课程设计报告 设计题目变速积分PID控制系统设计 课程名称计算机控制技术B 姓名 苏丹学号 2008100731 班级自动化0803 教师闫高伟 摘 要 错误!未定义书签. Abstract 第1章数 ...

  6. matlab simulink四旋翼无人机模糊PID控制姿态

    1.内容简介 略 532-可以交流.咨询.答疑 2.内容说明 四旋翼无人机控制灵活.安全性能较高,能够实现空中悬停.翻滚.任意角度横 向飞行,常常替代人们从事高空危险作业,给我们的生活与工作带来了很多 ...

  7. PLC控制系统的软件设计

    软件设计就是编写满足生产控制要求的plc用户程序,即绘制梯形图或编写语句表. PLC的软件设计包括系统初始化程序.主程序.子程序.中断程序.故障应急措施和辅助程序的设计.首先应根据总体要求和控制系统的 ...

  8. pid调节软件_(四)差分底盘设计——5.底盘PID控制参数整定

    运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为底盘包 ...

  9. SLAM导航机器人零基础实战系列:(四)差分底盘设计——5.底盘PID控制参数整定

    SLAM导航机器人零基础实战系列:(四)差分底盘设计--5.底盘PID控制参数整定 摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买 ...

最新文章

  1. Parallax Mapping Shader 凸凹感【转】
  2. loadrunner- winsock 函数总结
  3. php zval_copy_static_var(),深入理解 PHP7 中全新的 zval 容器和引用计数机制
  4. html生成自定义表格,自定义js的表格插件
  5. 3.1 采购管理规划
  6. python中字典的find_python中的字典
  7. 字典-dict(无序)
  8. 计算机无法安装蓝牙驱动,windows10系统安装蓝牙驱动图文教程|windows10系统如何安装蓝牙驱动...
  9. Petalinux移除module或app的方法
  10. 40163 php,微信支付授权获取 openId {quot;errcodequot;:40163,quot;errmsgquot;:quot;code been used, hints:...
  11. vim中实现大小写转换
  12. VUE中导出Excel功能的实现
  13. smart 完成安装之前向导中断
  14. 使用李跳跳·自动关闭运动校园广告
  15. Java 中的 T,E,K,V, 别傻傻分不清楚!
  16. JavaScript核心知识总结(下)
  17. 好好聊聊Docker
  18. 关于风机滑环的寿命以及工作原理
  19. Java平滑处理什么意思_photoshop画笔选项里的“平滑”到底是什么意思?
  20. 圆周率250亿位资源

热门文章

  1. 微擎jsapi支付必须传openid怎么解决_支付宝如何做到免费提现?(最新最全的图文介绍)...
  2. 到google面试 google的21道面试问题
  3. 11.2.0.4rac service_name参数修改
  4. vue-cli2项目:mimi-music
  5. IC Insights:2020年全球物联网芯片市场将超过310亿美元
  6. C语言/C++编程学习:不找C/C++的工作也要学C/C++的原因!
  7. 全球开发者薪酬榜单新鲜出炉,看看咱们排第几
  8. 蓝桥杯 ADV-226 9-3摩尔斯电码 java
  9. 文案润色软件-文案润色的技巧
  10. 服务器和客户端程序(流星程序集之五)