标签:毕设 课设 int float PID duk error Kp speed
对无刷直流电机进行加减速控制、启动停止控制、正反转控制。
#include "reg51.h"
#include "math.h"
#include "1602.h"
int e=0,e1=0,e2=0;
float uk=0,uk1=0.0,duk=0.0; //pid输出值
float Kp=5,Ki=1.2,Kd=0.2; //pid控制系数
int out=0;
/*
float error[3]={0,0,0};
float sum;
int pid(int speed,float result)
{
float Kp=0.9,Ki=0.75,Kd=0.05,ut=0;
error[0]=speed-spd;
sum=sum+(ki*error[0]);
ut=sum+kp*error[0]+kd*(error[0]-error[1]);
return ut;
}
*/
extern unsigned int spd;
extern unsigned int speed;
extern unsigned char set;
int speed_pid()
{
e=speed-spd;//设置速度-实际速度,两者的差值
// duk=(Kp*(e-e1))/100;//只调节P
duk=(Kp*(e-e1)+Ki*e)/100;//只调节PI
// duk=(Kp*(e-e1)+Ki*e+Kd*(e-2*e1+e2))/100;//调节PID
uk=uk1+duk;//uk=u(k-1)+Δuk
if(e>20)
{
out=250;
标签:毕设,课设,int,float,PID,duk,error,Kp,speed 来源: https://www.cnblogs.com/ythero/p/14426090.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。