• 位置式PID


    1. // 单环PID参数
    2. float Position_KP = 0.0180, Position_KI = 0.0013, Position_KD = 0.11425; /* 位置式PID系数 */
    1. /**************************************************************************
    2. * @brief 位置式PID控制器
    3. * @param 实际位置reality,目标位置target
    4. * @retval 电机PWM
    5. * @attention
    6. * @describe 根据位置式离散PID公式
    7. pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]
    8. e(k)代表本次偏差
    9. e(k-1)代表上一次的偏差
    10. ∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,...,k;
    11. * @matters pwm代表输出
    12. **************************************************************************/
    13. long Position_PID_Left(long reality, long target)
    14. {
    15. static long Bias, Last_Bias; // 偏差Bias,上次偏差Last_Bias
    16. static long Integral_bias = 0; // 偏差的积分
    17. static long PWM_OUT;
    18. Bias = target - reality; /* 计算偏差 */
    19. Integral_bias += Bias; /* 偏差累积 */
    20. if (Integral_bias > 5000)
    21. Integral_bias = 5000; /* 积分限幅 */
    22. if (Integral_bias < -5000)
    23. Integral_bias = -5000;
    24. PWM_OUT = (Position_KP * Bias) /* 比例环节 */
    25. + (Position_KI * Integral_bias) /* 积分环节 */
    26. + (Position_KD * (Bias - Last_Bias)); /* 微分环节 */
    27. Last_Bias = Bias; /* 保存上次偏差 */
    28. return PWM_OUT; /* 输出结果 */
    29. }
    30. //右轮的位置式PID --- 写两个函数,是为了编码器数据不干扰
    31. long Position_PID_Right(long reality, long target)
    32. {
    33. static long Bias, Last_Bias; // 偏差Bias,上次偏差Last_Bias
    34. static long Integral_bias = 0; // 偏差的积分
    35. static long PWM_OUT;
    36. Bias = target - reality; /* 计算偏差 */
    37. Integral_bias += Bias; /* 偏差累积 */
    38. if (Integral_bias > 5000)
    39. Integral_bias = 5000; /* 积分限幅 */
    40. if (Integral_bias < -5000)
    41. Integral_bias = -5000;
    42. PWM_OUT = (Position_KP * Bias) /* 比例环节 */
    43. + (Position_KI * Integral_bias) /* 积分环节 */
    44. + (Position_KD * (Bias - Last_Bias)); /* 微分环节 */
    45. Last_Bias = Bias; /* 保存上次偏差 */
    46. return PWM_OUT; /* 输出结果 */
    47. }

  • 相关阅读:
    22.C++之类模板
    C#进阶高级语法之LINQ:深入分析LINQ的查询表达式、延迟执行与PLINQ高级特性
    有效的括号(LeetCode 020)
    利用Cpolar永久免费内网穿透软件实现IStoreOS安装与远程访问
    (附源码)计算机毕业设计Java大学生学科竞赛报名管理系统
    随手记录: 扩展M.2硬盘,从1T换到2T 硬盘clone ubuntu设置等注意事项
    C++ enum与enum class对比
    抓包工具fiddler的基础知识
    第4/100天 阅读笔记
    通过chatgpt 学习React的useEffect
  • 原文地址:https://blog.csdn.net/weixin_63135906/article/details/134016571