資源簡介
一個能讓電機抱死的mega128c程序,同時含有pid調節,代碼不是復制粘貼來的,編譯器為AVR Studio 5.0,親測通過。

代碼片段和文件信息
/*
?*?PID.c
?*
?*?Created:?2012/7/16?14:04:55
?*??Author:?Administrator
?*/?
#include?“PID.h“
void?IncPIDInit(void)
{
sptr->SumError?=?0;
sptr->LastError?=?0;?//Error[-1]
sptr->PrevError?=?0;?//Error[-2]
sptr->Proportion?=?0;?//比例常數?Proportional?Const
sptr->Integral?=?0;?//積分常數Integral?Const
sptr->Derivative?=?0;?//微分常數?Derivative?Const
sptr->SetPoint?=?0;
}
void?PIDSetPoint(int?point_value)//設置PID調節的目標值
{
sptr->SetPoint?=?point_value;
}
int?PIDGetSetpoint(void)//讀取PID調節設置的目標值
{
return?sptr->SetPoint;
}
void?PIDSetKp(double?dKpp)//設置PID的Kp值
{
sptr->Proportion?=?dKpp;?
}
double?PIDGetKp(void)//讀取PID中所設置的Kp值
{
return?sptr->Proportion;
}
void?PIDSetKi(double?dKii)//設置PID的Ki值
{
sptr->Integral?=?dKii;
}
double?PIDGetKi(void)//讀取PID中所設置的Ki值
{
return?sptr->Integral;
}
void?PIDSetKd(double?dKdd)//設置PID的Kd值
{
sptr->Derivative?=?dKdd;
}
void?PIDGetKd(double?dKdd)//讀取PID中所設置的Kd值
{
return?sptr->Derivative;
}
int?IncPIDCalc(int?NextPoint)//增量式PID計算
{
int?iError?iIncpid;?//當前誤差
iError?=?sptr->SetPoint?-?NextPoint;?
????//增量計算
iIncpid?=?sptr->Proportion?*?iError;?//E[k]項
-?sptr->Integral?*?sptr->LastError?//E[k-1]項
+?sptr->Derivative?*?sptr->PrevError;?//E[k-2]項
//存儲誤差,用于下次計算
sptr->PrevError?=?sptr->LastError;
sptr->LastError?=?iError;
//返回增量值
return(iIncpid);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????249??2012-07-16?14:09??電機抱死-c程序\test\Debug\makedep.mk
?????文件???????3333??2012-07-18?13:38??電機抱死-c程序\test\Debug\Makefile
?????文件?????????51??2012-07-17?16:41??電機抱死-c程序\test\Debug\PID.d
?????文件???????5532??2012-07-17?16:41??電機抱死-c程序\test\Debug\PID.o
?????文件???????3894??2012-07-18?13:38??電機抱死-c程序\test\Debug\test.d
?????文件?????????13??2012-07-18?13:38??電機抱死-c程序\test\Debug\test.eep
?????文件??????21379??2012-07-18?13:38??電機抱死-c程序\test\Debug\test.elf
?????文件???????6739??2012-07-18?13:38??電機抱死-c程序\test\Debug\test.hex
?????文件??????45469??2012-07-18?13:38??電機抱死-c程序\test\Debug\test.lss
?????文件??????40382??2012-07-18?13:38??電機抱死-c程序\test\Debug\test.map
?????文件??????10892??2012-07-18?13:38??電機抱死-c程序\test\Debug\test.o
?????文件???????1501??2012-07-17?16:41??電機抱死-c程序\test\PID.c
?????文件????????917??2012-07-16?14:51??電機抱死-c程序\test\PID.h
?????文件???????5239??2012-07-18?13:41??電機抱死-c程序\test\test.c
?????文件???????4161??2012-07-16?14:09??電機抱死-c程序\test\test.cproj
?????文件????????883??2012-07-13?11:01??電機抱死-c程序\test.atsln
????..A..H.?????10240??2012-07-19?17:46??電機抱死-c程序\test.atsuo
?????目錄??????????0??2012-07-29?19:13??電機抱死-c程序\test\Debug
?????目錄??????????0??2012-07-29?19:13??電機抱死-c程序\test
?????目錄??????????0??2012-07-29?19:13??電機抱死-c程序
-----------?---------??----------?-----??----
???????????????160874????????????????????20
評論
共有 條評論