運(yùn)動(dòng)控制系統(tǒng)是通過(guò)控制電機(jī)電壓、電流、頻率等輸入量,來(lái)滿(mǎn)足工作機(jī)械的轉(zhuǎn)矩、速度、位移等機(jī)械量,使各種工作機(jī)械按照人們期望的要求運(yùn)行,以滿(mǎn)足生產(chǎn)及應(yīng)用的需要。
運(yùn)動(dòng)控制系統(tǒng)由電機(jī)、功率變換裝置、控制器及相應(yīng)的傳感器構(gòu)成,其框圖及涉及學(xué)科領(lǐng)域如下圖:
對(duì)照運(yùn)動(dòng)控制系統(tǒng)的結(jié)構(gòu)框圖,可以推斷出智能車(chē)中的運(yùn)動(dòng)控制系統(tǒng)如下:
被控對(duì)象
電機(jī)是門(mén)深?yuàn)W的學(xué)問(wèn)號(hào)稱(chēng)自動(dòng)化專(zhuān)業(yè)的天書(shū)之最(筆者當(dāng)初被電機(jī)學(xué)折磨的有陰影,故有關(guān)電機(jī)不做分析)。
(此處所提到的電動(dòng)機(jī)都是車(chē)模上指定的普通直流電機(jī),不包括十七屆中的無(wú)刷電機(jī))智能車(chē)中的電機(jī)都是用于調(diào)速系統(tǒng)的拖動(dòng)電機(jī),而舵機(jī)則是用于伺服系統(tǒng)的伺服電動(dòng)機(jī)的一種。
執(zhí)行機(jī)構(gòu)
功率放大與變換裝置在智能車(chē)系統(tǒng)之中指的是電機(jī)驅(qū)動(dòng),能夠根據(jù)主控輸出的信號(hào),動(dòng)態(tài)的調(diào)節(jié)被控對(duì)象(直流電機(jī))的驅(qū)動(dòng)電壓來(lái)控制電機(jī)的轉(zhuǎn)速?gòu)亩_(dá)到控制車(chē)身速度的作用。
控制器
智能車(chē)運(yùn)動(dòng)控制的控制器一般采用數(shù)字PI控制(關(guān)于PI控制器后面會(huì)出一篇PID的文章描述),大家姑且先把PI控制器當(dāng)做一個(gè)公式,只用輸入誤差,輸出的就是根據(jù)內(nèi)部算法計(jì)算后的結(jié)果。這里借用龍邱科技的 代碼片。
// An highlighted block
typedef struct
{
float kp; //P
float ki; //I
float kd; //D
float imax; //積分限幅
float out_p; //KP輸出
float out_i; //KI輸出
float out_d; //KD輸出
float out; //pid輸出
float integrator; //< 積分值
float last_error; //< 上次誤差
float last_derivative;//< 上次誤差與上上次誤差之差
unsigned long last_t; //< 上次時(shí)間
}pid_param_t;
pid_param_t Speed_PID;
Speed_PID.kp = 130;
Speed_PID.ki = 2.5;
Speed_PID.kd = 0.25;
/*************************************************************************
* 函數(shù)名稱(chēng):void Motor_Control(void)
* 功能說(shuō)明:電機(jī)控制
* 參數(shù)說(shuō)明:
* 函數(shù)返回:
* 修改時(shí)間:
* 備 注:這類(lèi)設(shè)計(jì)PID運(yùn)算的函數(shù)一定要放在定時(shí)器中斷內(nèi)保持控制周期穩(wěn)定
*************************************************************************/
void Motor_Control(void)
{
MotorDuty1 = (int)PidIncCtrl(&Speed_PID, Target_Speed - ECPULSE1);
if(MotorDuty1 > 8000)MotorDuty1 = 8000;else if(MotorDuty1 < -8000)MotorDuty1 = -8000;
if(Speed_PID.out > 8000)Speed_PID.out = 8000;else if(Speed_PID.out < -8000)Speed_PID.out = -8000;
Motor1Ctrl(MotorDuty1);
// 電機(jī)閉環(huán)控制
}
/*************************************************************************
* 函數(shù)名稱(chēng):float constrain_float(float amt, float low, float high)
* 功能說(shuō)明:pid增量式控制器輸出
* 參數(shù)說(shuō)明:
* @param pid pid參數(shù)
* @param error pid輸入誤差
* 函數(shù)返回:PID輸出結(jié)果 注意輸出結(jié)果已經(jīng)包涵了上次結(jié)果
* 修改時(shí)間:2020年4月1日
* 備 注:
*************************************************************************/
float PidIncCtrl(pid_param_t * pid, float error)
{
pid- >out_p = pid- >kp * (error - pid- >last_error);
pid- >out_i = pid- >ki * error;
pid- >out_d = pid- >kd * ((error - pid- >last_error) - pid- >last_derivative);
pid- >last_derivative = error - pid- >last_error;
pid- >last_error = error;
pid- >out += pid- >out_p + pid- >out_i + pid- >out_d;
return pid- >out;
}
-
電機(jī)控制
+關(guān)注
關(guān)注
3534文章
1879瀏覽量
268816 -
運(yùn)動(dòng)控制
+關(guān)注
關(guān)注
4文章
581瀏覽量
32870 -
智能車(chē)
+關(guān)注
關(guān)注
21文章
403瀏覽量
76962
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論