Updates error values

Dependents:   locomotion_pid_action_refactor_EMG

errorFetch.cpp

Committer:
tvlogman
Date:
2017-10-20
Revision:
0:cb9eda46a58c
Child:
1:9e2c9237d88b

File content as of revision 0:cb9eda46a58c:

#include "errorFetch.h"
#include "mbed.h"
#include "QEI.h"
#include "refGen.h"

// Member function definitions
errorFetch::errorFetch(QEI Encoder, float N, float TS, refGen REF):motorEncoder(Encoder), gearRatio(N), Ts(TS), e_pos(0), e_int(0), e_der(0), e_prev(0), ref(REF){

    }
    
void errorFetch::getError(){
    // Getting encoder counts and calculating motor position
    int counts = motorEncoder.getPulses();
    double motorPosition = 2*3.14*(counts/(gearRatio*64.0f));

    // Computing position error
    e_pos = ref.getReferencePosition(ref.maxAngle, ref.r_direction) - motorPosition;
    
    // Limiting the integral error to prevent integrator saturation
    if(fabs(e_int) <= 5){
        e_int = e_int + Ts*e_pos;    
        }
    
    // Derivative error   
    e_der = (e_pos - e_prev)/Ts;
    e_prev = e_pos; // Store current position error as we'll need it to compute the next derivative error
    }