龙空技术网

Arduino实例(二十二)PID 小实例体验

Snail先生 385

前言:

眼前各位老铁们对“单片机pid控制程序设计”大概比较讲究,大家都想要了解一些“单片机pid控制程序设计”的相关知识。那么小编在网络上汇集了一些有关“单片机pid控制程序设计””的相关内容,希望姐妹们能喜欢,各位老铁们快快来学习一下吧!

每个玩单片机的人,包括Arduino,肯定是需要攀登PID高峰的,所谓高峰,是因为它确实有点难度。

如下这个视频,浅显易懂地讲解了PID,便于理解,有空看看,可以加深对PID的理解。

PID我的理解,就是系统通过不断的迭代,系统输出无限逼近目标设定值的过程。

【Arduino 101】五分钟搞懂PID控制算法_哔哩哔哩_bilibili

如下这个程序,相当于运用arduino做了下数学迭代的计算器,并将数据通过串口输出出来,可以对PID有更近一步的理解。

int setpoint = 1000;//设定值long sumerror;//总的误差double kp = 1.3,ki = 0.15,kd = 0.1;int lasterror=0;//上次误差,起始值设为0int input = 10;//输入起始值,这个可以理解为项目中我们要控制的目标,int output;int nowerror;int count=0;//加入计数器,观察迭代多少次后,input达到目标值void setup() {  // put your setup code here, to run once:    Serial.begin(9600);}void loop() {  // put your main code here, to run repeatedly:  nowerror = setpoint - input;//求出现在的误差  sumerror += nowerror; //累积误差  output = kp*nowerror + ki*sumerror + kd*(lasterror - nowerror);  lasterror = nowerror;  input += output;  count+=1;  Serial.println(input);  Serial.println(count);  delay(500);  }

打开串口观察,通过多少次迭代后,系统输出值达到了目标设定值

标签: #单片机pid控制程序设计 #单片机的pid控制