An incomplete quadcopter control programme.

Dependencies:   mbed

DaclePID/DaclePID.cpp

Committer:
Gurvan
Date:
2013-07-17
Revision:
0:9cb9445a11f0

File content as of revision 0:9cb9445a11f0:

#include "DaclePID.h"


DaclePID::DaclePID(float Kc, float Ti, float Td, float interval) {

    setCoeff(Kc, Ti, Td);
    dT_ = interval;

    accError_ = 0.0;
    pidSortie_ = 0.0;
    erreurPres_ = 0.0;
    minInput_=0; maxInput_=3.3;
    minOutput_=0; maxOutput_=3.3;
    consigne_=0;
    biais_=0;
    
}

void DaclePID::setCoeff(float Kc, float Ti, float Td){

    Kc_ = Kc;
    Ti_ = Ti;
    Td_= Td;

}

void DaclePID::setInputLimits(float minInput, float maxInput){
    minInput_=minInput; maxInput_=maxInput;
}

void DaclePID::setOutputLimits(float minOutput, float maxOutput){
    minOutput_=minOutput; maxOutput_=maxOutput;
}

float DaclePID::dacalcul(float erreur){
    
    float _erreur = to01(erreur)-to01(consigne_);
    
    accError_ += _erreur;
    float dErreur = (_erreur - erreurPres_) /dT_;

    pidSortie_ = Kc_ * (_erreur + (Ti_ * accError_ * dT_) + (Td_ * dErreur));

    erreurPres_ = _erreur;

    return from01(pidSortie_) - from01(biais_);

}

float DaclePID::to01(float x){
        return (x-minInput_)/(maxInput_-minInput_);
}
    
float DaclePID::from01(float x){
        return (maxOutput_-minOutput_)*x + minOutput_;
}