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

    文章

    1446

    浏览量

    83813
  • 函数
    +关注

    关注

    3

    文章

    3881

    浏览量

    61310
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66772
  • 控制算法
    +关注

    关注

    4

    文章

    156

    浏览量

    21495
收藏 人收藏

    评论

    相关推荐

    什么是PIDPID算法代码实现

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

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

    算法的原理,然后带大家使用FPGA来实现(C语言实现过程特别简单)。 二. PID算法 PID
    的头像 发表于 07-20 09:23 1394次阅读
    <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算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在我所接触的控制
    发表于 06-22 11:37

    什么是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

    C51如何实现PID算法

    真正要用PID算法的时候,发现书上的代码在我们51上来实现还不是那么容易的事情。简单的说来,就是不能直接调用。仔细分析
    发表于 07-17 11:36 4648次阅读

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

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

    PID算法实现

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

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

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

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

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

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

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

    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>