nannan

注册会员
  • 主题:12
  • 回复:16
  • 金钱:91
  • 积分:107
    今天给大家推荐用 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);

}