【PID设计思路】

要在原本的项目上新增PID控速。

由于四个麦轮虽然相同的PWM调控,但是受到各种因素导致无法直行、转弯的旋转角太大,并且希望小车在爬坡的时候保持速度不变。

对电机控制,定速控制。

encode.c

init_encode();

get_encode(); //获取霍尔编码器的边沿数量,用来作为速度或位置。这里的速度和位置没有指定单位,而是用数字来表示一个程度。

motor.c

init_motor() ;

motor( PWM_num )

{

if ( PWM_num > 0)

{ // 编码器正向输出 }

else

{ // 编码器反向输出 }

}

PID.c

init_PID();

float error0 , error1;

float Actal , Target;

error1 = error0;

error0 = Target0 - Actal ;

errorInt += error0;

out = Kp * error0 + Ki * errorInt + Kd * ( error0 - error1 ) ;

if( out >100) { out =100 ; }

if(out < -100) { out = -100 ; }

motor ( out );