eefas 发表于 2024-4-21 18:20

c语言实现PID算法

#include <stdio.h>
struct _pid
{
       floaterror;      //差值
       float error_last;    //上一次差值
       float integral;      //差值的和
}

float Kp =0.01;    //比例系数,提升速度
float Ki = 1;      //积分系数,稳定输出
float Kd =0.01;    //微分系数,减小振荡

float cur_speed = 0;      //当前的速度
float level = 0;            //用于输出pwm
float set_speed = 50;       //设定的速度

struct _pid pid;
void pid_init()
{
   pid.error = 0;
   pid.error_last = 0;
   pid.integral = 0;
}

void pid_control()
{
   pid.error=set_speed-cur_speed;
   pid.integral +=pid.error;

   level =Kp*pid.error+Ki*pid.integral+Kd*(pid.error-pid.error_last);
   pid.error=pid.error_lasst;

}
int main()
{
   pid_init();
   for(i=0;i<10;i++)
   {
         pid_control();
         printf("当前速度%f等级 %f\n",cur_speed,level);

   }
   return 0 ;

}

zhengshuai888 发表于 2024-4-21 18:59

PID算法本身不复杂,难的是参数调优。

lidi911 发表于 2024-4-22 08:47

有关PID算法的教程有很多,基础的知识其实就那么多,关键是怎么用好。

小夏天的大西瓜 发表于 2024-4-22 20:23

PID算法重在参数调优

suncat0504 发表于 2024-4-30 17:42

PID的调试很麻烦吗?所谓的参数调优,针对不同设备,需要单独调试吗?

地瓜patch 发表于 2024-4-30 22:18

参数整定才是重点

eleg34ance 发表于 2024-9-18 14:40

C语言开发PID算法确实会更好 一些,C语言是一种编译型语言,生成的机器码执行效率高,适合对实时性要求较高的控制系统

pe66ak 发表于 2024-9-18 15:53

这种pid还行,但是调参的时候就麻烦了

miltk 发表于 2024-9-18 17:01

这是就适用于电机方面的PID操作吗?

wamed 发表于 2024-9-18 18:11

这套代码具有较好的可移植性,可以在不同的硬件平台和操作系统上运行,便于跨平台开发

teaccch 发表于 2024-9-18 19:21

PID在嵌入式系统、机器人控制、自动化设备等领域应用广泛,有大量的开发资源和社区支持

canfeil 发表于 2024-9-19 08:48

我觉得这种算法挺好,简单易懂,很不错

canfeil 发表于 2024-9-19 10:12

写的好简单啊,PID有这么简单的吗?

suiziq 发表于 2024-9-19 10:14

这种就调节当前速度是不是就可以了?

twinkhahale 发表于 2024-9-19 12:45

看这个代码真的简单,以前移植的PID都是好麻烦的啊

nqty 发表于 2024-9-19 14:46

话说,微分系统减小震荡这个是怎么玩的?

shenxiaolin 发表于 2024-9-20 18:18

还是不错,现在这个算法很多了,关键是调试

szt1993 发表于 2024-9-24 11:23

C语言开发PID算法确实会更简单,PID算法涉及的层面还是很多的

星辰大海不退缩 发表于 2024-9-25 18:38

PID参数优化确实很复杂重点就在参数调试

OKAKAKO 发表于 2024-9-28 16:25

PID算法其实重在参数的调节
页: [1] 2
查看完整版本: c语言实现PID算法