PID arduino

gembaknb

Active member
  • Oct 13, 2014
    899
    50
    28
    Machan Two wheels line following robot kenekuta PID use karanne kohomada bn? Poddak tutorial ekak dapnko kohomada program eka run wenne kiyala..
    Kp, Kd values ekka error eka ganne kohomada? Kohomada errors calculate karanne?

    Thawa mata oona..
    Sensors anuwa, motors wala pwm speed eka wenas karanne kohomada kiyna eka.. mokada left side, right side hareddi eeka oonane..

     

    RandomGuy

    Well-known member
  • Oct 15, 2014
    17,361
    16,191
    113
    First of all, does the robot likes it? Don't use anything on him against his will or he will switch himself to terminator mode and then you know what will happen, right? I'm just kidding.

    BUMP!
     

    gembaknb

    Active member
  • Oct 13, 2014
    899
    50
    28
    First of all, does the robot likes it? Don't use anything on him against his will or he will switch himself to terminator mode and then you know what will happen, right? I'm just kidding.

    BUMP!

    :D :D :D
    Yeah.. I'm sure he will not switch to terminator mode
     

    gembaknb

    Active member
  • Oct 13, 2014
    899
    50
    28

    Code:
     void loop()
    {
      int lastError;
    
      // read calibrated sensor values and obtain a measure of the line position from 0 to 5000
      unsigned int position = qtrrc.readLine(sensorValues);
    
      //compute error from line position. error will be near-zero when robot is centered
      //over line.
    
      int error = position - 2460;
    
      delay(250);
    
      // set the motor speed based on proportional and derivative PID terms (experimentally determined)
      // KP is the a floating-point proportional constant
      // KD is the floating-point derivative constant
    
      float KP = 0.05;
      float KD = 2.0;
    
      lastError = error;
    
      int motorSpeed = KP * error + KD * (error - lastError);
    
      //change our motor speeds based on PD calculation
      int m1Speed = 100 + motorSpeed;
      int m2Speed = 100 - motorSpeed;
    
      //force motor speeds to be positive
      if (m1Speed < 0)
        m1Speed = 0;
      if (m2Speed < 0)
        m2Speed = 0;
    
      // set motor speeds using the two motor speed variables above
      digitalWrite(E1, m2Speed);
      digitalWrite(E2, m1Speed);
    }

    machan meke error eka gannawa.. ita passe laaterror=error walata..
    Motorspeed eka ganiddi KD(error-lasterror )wenawa.. e kiyanne eeka always 0 ne bn.. ithn eeka wadak na ne.. ai bn ehema karala thiyenne?
     

    kazunsanjaya

    Well-known member
  • Mar 23, 2011
    932
    119
    63
    :)
    Code:
     void loop()
    {
      int lastError;
    
      // read calibrated sensor values and obtain a measure of the line position from 0 to 5000
      unsigned int position = qtrrc.readLine(sensorValues);
    
      //compute error from line position. error will be near-zero when robot is centered
      //over line.
    
      int error = position - 2460;
    
      delay(250);
    
      // set the motor speed based on proportional and derivative PID terms (experimentally determined)
      // KP is the a floating-point proportional constant
      // KD is the floating-point derivative constant
    
      float KP = 0.05;
      float KD = 2.0;
    
      lastError = error;
    
      int motorSpeed = KP * error + KD * (error - lastError);
    
      //change our motor speeds based on PD calculation
      int m1Speed = 100 + motorSpeed;
      int m2Speed = 100 - motorSpeed;
    
      //force motor speeds to be positive
      if (m1Speed < 0)
        m1Speed = 0;
      if (m2Speed < 0)
        m2Speed = 0;
    
      // set motor speeds using the two motor speed variables above
      digitalWrite(E1, m2Speed);
      digitalWrite(E2, m1Speed);
    }

    machan meke error eka gannawa.. ita passe laaterror=error walata..
    Motorspeed eka ganiddi KD(error-lasterror )wenawa.. e kiyanne eeka always 0 ne bn.. ithn eeka wadak na ne.. ai bn ehema karala thiyenne?

    ow ethana awulak thiyenawa machan error eka lastError ekata ekata assign kalata passe error eke value eka apahu update karala ganna ona. Oya lestError kiyana eka error kiyana udin dala loop ekata udin define kalanam hari wage.

    *meka mama balala neme demme github eke search kalama apu ekak demme