Takumi Nakagawara / PID

PID.h

Committer:
Takkun
Date:
2019-04-14
Revision:
2:c8ab3e8d4c51
Parent:
1:4705d8930670
Child:
3:c690a8974246

File content as of revision 2:c8ab3e8d4c51:

#ifndef PID_H
#define PID_H

#include "mbed.h"

typedef enum{
    pos_PID,
    vel_PID,
    P_D,
    PI_D,
    I_PD
} PID_Mode;

class PID {
public:
  PID(double* _Input, double* _Output, double* _Setpoint, double _Kp, double _Ki, double _Kd, PID_Mode _mode, Timer *_timer);
  void control();
  void setParameter_pid(double new_Kp, double new_Ki, double new_Kd);
  void setParameter_KuPu(double new_Ku, double new_Pu);
  void setPIDMode(PID_Mode);
  void setOutputLimits(double, double);
  void reset(double target);

private:
  void Initialize();

  double Ku;
  double Pu;
  double Kp;
  double Ti;
  double Td;
  double Ki;
  double Kd;

  Timer *timer;

  double *Input;
  double *Output;
  double *Setpoint;

  double lastTime;
  double outMin, outMax;
  double lastInput;
  double lastError;
  double outputSum;
  double SampleTime;
    
  PID_Mode mode;
};

#endif