annotate core/Pid.cpp @ 151:e9c9404e3d1f ClockSync

Pff partially working. No PID. When setting the audio clock on the bbb to 44098 the master and slave clock keep diverging instead of converging ...
author Giulio Moro <giuliomoro@yahoo.it>
date Tue, 22 Sep 2015 04:10:07 +0100
parents 134bff10e561
children 8f98b32d0e23
rev   line source
giuliomoro@149 1 /*
giuliomoro@149 2 * Pid.cpp
giuliomoro@149 3 *
giuliomoro@149 4 * Created on: 14 Sep 2015
giuliomoro@149 5 * Author: giulio
giuliomoro@149 6 */
giuliomoro@149 7
giuliomoro@149 8 #include "Pid.h"
giuliomoro@149 9
giuliomoro@149 10 Pid::Pid(){
giuliomoro@149 11 integralError = 0;
giuliomoro@149 12 pastError = 0;
giuliomoro@149 13 error = 0;
giuliomoro@149 14 differentialError = 0;
giuliomoro@149 15 kp = 5;
giuliomoro@149 16 ki = 2;
giuliomoro@149 17 kd = 0.8;
giuliomoro@149 18 idleTimeout = 0;
giuliomoro@149 19 timeoutCount = 0;
giuliomoro@149 20 output = 0;
giuliomoro@149 21 // printf("----------%f %f %f %f %f %f\n", kp, error, ki, integralError, kd, differentialError);
giuliomoro@149 22 }
giuliomoro@149 23 void Pid::updateIntegralError(){
giuliomoro@149 24 integralError += (error + pastError) * 0.5 * ts;
giuliomoro@149 25 }
giuliomoro@149 26 void Pid::updateDifferentialError(){
giuliomoro@149 27 differentialError = (error - pastError) / ts;
giuliomoro@149 28 }
giuliomoro@149 29 float Pid::setError(float anError){
giuliomoro@149 30 pastError = error;
giuliomoro@149 31 error = anError;
giuliomoro@149 32 ts = 1; //TODO: this should be passed as a parameter, unless setError() gets always called at constant intervals
giuliomoro@149 33 updateIntegralError();
giuliomoro@149 34 updateDifferentialError();
giuliomoro@149 35 output= kp * error + ki * integralError + kd * differentialError;
giuliomoro@149 36 // printf("%f %f %f %f %f %f %f\n", output, kp, error, ki, integralError, kd, differentialError);
giuliomoro@149 37 return output;
giuliomoro@149 38 }
giuliomoro@149 39 float Pid::getOutput(){
giuliomoro@149 40 return output;
giuliomoro@149 41 }
giuliomoro@149 42
giuliomoro@149 43