智能车制作
标题:
电机控制求指导
[打印本页]
作者:
(]forever`_Y
时间:
2013-7-8 22:01
标题:
电机控制求指导
本帖最后由 (]forever`_Y 于 2013-7-8 22:14 编辑
怎么才能让加减速更线性点 现在加减速老一冲一冲的 很影响车子行驶时的稳定 不知道程序有没问题
int IncPIDCalc(int NextPoint)
{
int iError, iIncpid; //当前误差
yy= NextPoint;
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;
xx=iError;
return(iIncpid); //返回增量值
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0Interrupt(void)//测速的中断程序
{
DDRB=0XFF;
n++;
if(n>10)
{
n=0;
PORTB_PB4=~PORTB_PB4;
}
Pulse_Count=PACNT;
mapan=Pulse_Count;//车速度值
PITTF_PTF0=1; //定时器 0 标志位清零
PACNT=0X0000;
sptr->SetPoint =Dianji_data;
//目标是Dianji_data
Ideal_Speed+=IncPIDCalc(Pulse_Count);
nn=Ideal_Speed;
if(Ideal_Speed>0&&Ideal_Speed<75)
Ideal_Speed=75;
if(Ideal_Speed>170)
Ideal_Speed=170;
if(Ideal_Speed<=0)
Ideal_Speed=0;
;
PWMdian_Duty(Ideal_Speed);
PITTF_PTF0=1;
//定时器 1 标志位清零
}
作者:
蓝色调
时间:
2013-7-9 09:51
同求
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2