文档介绍:: .
PID通俗的理解
这是明显的学****方法不对,起码,首先,你要理解PID是个什么东西。
本文以通俗e(k-1)e(k-2)
怎么改变呢?是赋0还是要怎么变?
5是不是PID要一直开着?
6error
为多少时就可以当速度已达到目标?
7PID
的优先级怎么处理,如果和图像采集有冲突怎么办?
8PID
的输入是速度,输出是PWM按理说PWM产生速度,但二者不是同一个东西,有没有
问题?
9PID
计算如何优化其速度?指针,汇编,移位?都可以试!
〃*****************************************************
//定义PID结构体
〃*****************************************************
typedefstructPID
intSetPoint;//设定目标DesiredValuedoubleProportion;//比例常数ProportionalConstdoubleIntegral;//积分常数IntegralConst
intLastError;//Error[-1]
intPrevError;//Error[-2]}PID;
//*****************************************************
//定义相关宏//*****************************************************#definePDATA100##defineD_DATA1#defineHAVENEWVELOCITY0X01
//*****************************************************
//声明PID实体
//*****************************************************
staticPIDsPID;
staticPID*sptr=&sPID;
//*****************************************************
//PID参数初始化
//*****************************************************
voidIncPIDInit(void)
sptr->LastError=0;//Error[-1]
sptr->PrevError=0;//Error[-2]
sptr->Derivative=
DDATA//微分常数DerivativeConst
sptr->SetPoint=100;目标是100)
〃*****************************************************
//增量式PID控制设计
H*****************************************************
in