0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PID算法的代码实现

麦辣鸡腿堡 来源:古月居 作者:Carry_qing 2023-11-28 15:57 次阅读

PID算法的代码实现

舵机控制

在对舵机的控制中,我采用的是位置式PD算法。

将左右电感的偏差值赋给error,再代入公式进行解算,最后传给舵机输出子函数,控制舵机正确打角。

void steer_control()  
{
    error=AD_M_Left[0]-AD_M_Right[0];
    
    direction_controlout=dirP*error+dirD*(error-lasterror);
    angle=mid_angle+direction_controlout;
    
    angle=angle >right_angle?right_angle:angle;
    angle=angle< left_angle?left_angle:angle;
    
    PWM_SetSteer((int)angle); 
    lasterror=error;
    
}

另外,如果想使舵机更顺滑,可以对偏差error的计算进行处理,如将归一化后的值开方处理等。

电机控制

在对电机的控制中,我采用的是增量式PID算法。

首先要设定一个目标速度set_speed,再将当前速度与其比较,得出的差值代入公式计算,得到最终需要输出的电机占空比,从而控制电机转速。

需要注意的是,电机PID控制作为闭环控制,最好将其放入PIT定时器中断,同时在中断中用左右两个编码器分别测出实时速度,这样可以使其控制的更精确。

void PID_computer_newL(int left_speed_in)
{
    ec_left=set_speed-left_speed_in;
    
    pwm_L+=speedL_P*(ec_left)+speedL_I*(ec_left-eb_left)+speedL_D*(ec_left-2*eb_left+ea_left);
    if(pwm_L > 600)  pwm_L=600;  
    if(pwm_L< -600)  pwm_L=-600; 
    
    PWM_SetMotorL((int)pwm_L);  
    
    ea_left=eb_left;
    eb_left=ec_left;
    
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PID
    PID
    +关注

    关注

    35

    文章

    1472

    浏览量

    85585
  • 函数
    +关注

    关注

    3

    文章

    4333

    浏览量

    62708
  • 代码
    +关注

    关注

    30

    文章

    4793

    浏览量

    68701
  • 控制算法
    +关注

    关注

    4

    文章

    166

    浏览量

    21737
收藏 人收藏

    评论

    相关推荐

    什么是PIDPID算法代码实现

    在直流有刷电机的基础驱动中,如果电机负载不变,我们只要设置固定的占空比(电压),电机的速度就会稳定在目标范围。
    发表于 03-23 12:32 1572次阅读

    PID控制算法代码 PID控制算法的原理

    算法的原理,然后带大家使用FPGA来实现(C语言实现过程特别简单)。 二. PID算法 PID
    的头像 发表于 07-20 09:23 2768次阅读
    <b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b><b class='flag-5'>代码</b> <b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>的原理

    C51实现PID算法代码

    C51实现PID算法代码真正要用PID算法的时候,发现书上的
    发表于 01-10 14:27

    什么是PID控制算法PID控制算法C语言是如何实现的?

    什么是PID控制算法PID控制算法C语言是如何实现的?特殊情况下的控制算法该如何去调整?比例、
    发表于 06-29 09:24

    PID算法代码实现

    目录一. 绪论二. 角度环串级PID原理1. PID基本算法2. 姿态角串级PID原理三. 如何用STM32实现角度-角速度的串级
    发表于 08-17 06:44

    使用C语言进行PID算法实现

    前文对PID算法离散化和增量式PID算法原理进行来探索,之后又使用Matlab进行了仿真实验,对PID三个参数又有了更深入的认识,接下来我们
    发表于 09-15 09:20

    基于遗传算法PID整定_源代码

    基于遗传算法PID整定_源代码
    发表于 09-26 16:31 14次下载

    PID算法实现

    PID算法实现
    发表于 12-20 22:54 3次下载

    位置式PID算法的C语言代码

    本文主要介绍位置式PID算法的C语言代码以及它的写法,具体的一起来了解一下。
    发表于 02-26 10:17 1.3w次阅读
    位置式<b class='flag-5'>PID</b><b class='flag-5'>算法</b>的C语言<b class='flag-5'>代码</b>

    PID控制算法原理是什么?pid控制算法的c语言实现介绍和测试代码概述

    最近两天在考虑一般控制算法的C语言实现问题,发现网络上尚没有一套完整的比较体系的讲解。于是总结了几天,整理一套思路分享给大家。 在工业应用中PID 及其衍生算法是应用最广泛的
    发表于 08-23 08:00 46次下载
    <b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>原理是什么?<b class='flag-5'>pid</b>控制<b class='flag-5'>算法</b>的c语言<b class='flag-5'>实现</b>介绍和测试<b class='flag-5'>代码</b>概述

    使用C语言实现51单片机中的PID算法代码免费下载

    本文档的主要内容详细介绍的是使用使用C语言实现51单片机中的PID算法代码免费下载。
    发表于 09-25 17:17 31次下载
    使用C语言<b class='flag-5'>实现</b>51单片机中的<b class='flag-5'>PID</b><b class='flag-5'>算法</b><b class='flag-5'>代码</b>免费下载

    PID算法原理_调试经验以及代码总结

    PID算法原理_调试经验以及代码总结分享。
    发表于 05-25 15:59 16次下载

    PID算法原理、调试方法及源代码

    PID算法原理、调试方法及源代码
    发表于 07-06 10:25 17次下载

    PID算法原理、调试经验以及代码资料

    PID算法原理、调试经验以及代码资料
    发表于 11-21 10:25 15次下载

    PID控制算法的C语言实现

    PID算法C实现1、PID算法简介1.1、各个环节的作用2、位置型PID
    发表于 01-13 13:39 45次下载
    <b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>的C语言<b class='flag-5'>实现</b>