不明觉厉![]() |
今天给大家推荐用 PID 控制机械手到精确位置,当然动力是电机。说白了就是控制电机的运转。![]() ![]() 第二幅图里的黑色东西就是滑动变阻器,这个将作为反馈信号,告诉我们机械手的实时位置。 void AD(int AD_V) { int V1=analogRead(AD_V); angle=V1*(5.0/1023.0); //将采回来的阻值转换为电压 // angle=map(V1,0,1023,0,360); } void Angle_control(float jiaodu) //参数是我们想要机械手所在的位置,这里是用 0~5 V 等分,比如想要机械手到一半就写 2.5。 { error=jiaodu-angle; //偏差 error_I+=error; //偏差的积和 Now_error=error; deviation=Now_error-Last_error; Angle_PD=error*Angle_P+error_I*Angle_I+deviation*Angle_D; Last_error=Now_error; Angle_PD/=2; if(Angle_PD>19) { Angle_PD=19; } if(Angle_PD<-19) { Angle_PD=-19; } Motor_forward_back((int) Angle_PD); } |