单片机C语言,需要一个编写封装好的PID算法头文件,寻求帮助。

如题所述

#ifndef _PID_H_
#define _PID_H_

typedef struct PID

{

int SetPoint; //设定目标

float Kp; //比例常数

float Ki; //积分常数

int eKT; //上次差值

} PID;
static PID sPID;

static PID *sptr = &sPID;

void IncPIDInit(void)

{
sptr->eKT = 0; //上次差值

sptr->Kp = 0; //比例常数

sptr->Ki = 0; //积分常数

sptr->SetPoint = 0; //设定值

}

int IncPIDCalc(int NextPoint)

{
static
int iError,uKT; //当前误差
iError = sptr->SetPoint - NextPoint; //增量计算

uKT=uKT+sptr->Kp*(iError-sptr->eKT)+sptr->Ki*iError;//存储本次PID值

sptr->eKT = iError;
//返回增量值

return(
uKT);

}

#endif

希望对你有帮助。追问

那头文件名称有固定么?一般取名什么

追答

我这里是命名PID.h

温馨提示:内容为网友见解,仅供参考
无其他回答

温度控制的PID算法的C语言程序
struct PID spid; \/\/ PID Control Structure unsigned int rout; \/\/ PID Response (Output) unsigned int rin; \/\/ PID Feedback (Input) sbit data1=P1^0; sbit clk=P1^1; sbit plus=P2^0; sbit subs=P2^1; sbit stop=P2^2; sbit output=P3^4; sbit DQ=P3^3; unsigned char flag,flag_1=0...

单片机实现pid控制中 pid是一种算法吗
1.可以直接套用PID公式,无论增量还是绝对的。PID算法是根据误差来控制的算法,不依赖系统的模型,故不用算系统的传递函数。有的书提到传递函数,一般是用于理论建模仿真,从而直接用Matlab一类的仿真软件进行PID参数调试。得到的参数可以为实际应用提供一定参考价值。2.PID参数整定有一套原则。首先要了解各...

8位单片机PID控制PWM的算法如何实现,C语言计算?
if(set_temper-temper>1) \/\/设置的温度比实际的温度是否是大于1度 { high_time=100; \/\/如果是,则全速加热 low_time=0; } else \/\/如果是在1度范围内,则运行PID计算 { for(i=0;i<10;i++) { get_temper(); \/\/获取温度 rin = s; \/\/ Read Input rout = PIDCalc ( &spid,...

如何用PID算法编程,使单片机通过控制继电器来实现恒温功能。
\/\/ PID Feedback (Input)sbit output=P1^4;unsigned char high_time,low_time,count=0 ;\/\/占空比调节参数unsigned char set_temper ;void PIDInit(struct PID*pp){ memset(pp,0,sizeof(struct PID)); \/\/PID参数初始化全部设置为0}unsigned int PIDCalc(struct PID*pp,unsigned int NextPoint){ unsigned...

单片机PID控制问题
首先弄清楚PID是一种控制算法!!!1,“如果用单片机恒温可以使温度到达预定值就停止加热,低了就加热,用一个温度传感器反馈,这样算是一个自动控制吗”你这是控制系统,但是效果会非常差,尤其是对于温度控制这种大惯性系统,达到预定值就停止加热,但是由于惯性,温度肯定会继续上升,电炉烧水的时候,水...

紧急求助单片机温控系统思路,光耦控制可控硅,PID算法
一、单向可控硅是一种可控整流电子元件,能在外部控制信号作用下由关断变为导通,但一旦导通,外部信号就无法使其关断,只能靠去除负载或降低其两端电压使其关断。单向可控硅是由三个PN结PNPN组成的四层三端半导体器件与具有一个PN结的二极管相比,单向可控硅正向导通受控制极电流控制;与具有两个PN结的...

位置式PID解释(含公式拆解、物理解释、C语言框架)
微分控制算法:[公式],通过计算误差的变化率,算法起到削弱比例控制影响的作用,帮助系统减小震荡,提高稳定性。C语言代码框架涉及单片机编程,包括PID结构体定义、初始化、输入输出函数、定时器初始化、中断处理以及主函数。总结,PID控制以P(比例)主管响应,I(积分)减小静差,D(微分)抑制震荡,但...

变速积分pid 算法
control applications. PID Calc performs one iteration of the PID algorithm.While the PID function works, main is just a dummy program showing a typical usage.PID功能 在PID功能主要用于控制应用。 PID 计算器执行一个PID的迭代算法。虽然PID功能的工程,主要只是一个虚拟程序显示一个典型的使用...

PID算法原理介绍
PID参数调整需要根据具体应用场景调整,如比例度的增减影响系统响应速度,积分时间的调整影响误差的累积,微分时间则控制系统的动态响应。合适的参数设置能够使系统趋于稳定,实现精准调控。关于PID的详细调优技巧和应用实例,可以参考相关学习资源,如C语言、Linux开发、STM32单片机等教程资料。原文链接:mp....

单片机控制PWM,用到双向可控硅。怎样设计相关电路图和程序(C语言...
\\x0d\\x0a可控硅触发一般使用MOC3021,相关手册上有典型电路,CPU端接一个GPIO就可以。\\x0d\\x0a闭环控制时过零检测不需要很精确,一般用一个双向光耦就足够,光耦输入接交流电输入,输出接CPU中断,用史密特整形一下输出信号最好。\\x0d\\x0a中断程序的结构分成两部分,过零中断与延时中断。\\x0d\\...

相似回答