اطلاعیه

Collapse
No announcement yet.

مشکل در کنترل دور و جهت موتور DC

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در کنترل دور و جهت موتور DC

    سلام دوستان
    من برنامه ای نوشتم که باهاش دور و جهت موتور DC به روش PID کنترل کنم
    مشکل اینجاست که در یک طرف موتور خوب کار میکنه ولی یک جهت سرعت موتور آروم آروم زیاد میشه کسی می دونه مشکل کجاست؟





    #include <PID_v1.h>
    #include <Wire.h>
    #include <MPU6050.h>


    MPU6050 mpu;
    double Setpoint, Input, Output;
    double consKp=50, consKd=1.4, consKi=60;
    PID myPID(&Input, &Output, &Setpoint, consKp, consKi, consKd, DIRECT);
    void setup()
    {
    Serial.begin(115200);


    Setpoint = 0;
    Input= map(Input,-180,180,-150,150);
    myPID.SetMode(AUTOMATIC);
    myPID.SetSampleTime(10);
    myPID.SetOutputLimits(-150, 150);

    while(!mpu.begin(MPU6050_SCALE_1000DPS, MPU6050_RANGE_2G))
    {
    Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
    delay(500);
    }
    }




    void loop()
    {


    Vector normAccel = mpu.readNormalizeAccel();
    int roll = (atan2(normAccel.YAxis, normAccel.ZAxis)*180.0)/M_PI;
    Input=roll;
    myPID.Compute();
    Serial.print(" Roll = ");
    Serial.print(roll);
    Serial.println();
    Serial.print(" out:");
    Serial.print(Output);


    Serial.println();

    if(Output>0)
    {
    analogWrite(2, Output);
    digitalWrite(3,LOW);
    }
    else
    {
    int out=Output*(-1);


    analogWrite(3,out);
    digitalWrite(2,LOW);
    }
    delay(100);
    }
لطفا صبر کنید...
X