智能车制作

标题: 电机控制求指导 [打印本页]

作者: (]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