Skip to content
Snippets Groups Projects
Commit 9bb7a06b authored by Pascal Engeler's avatar Pascal Engeler
Browse files

Added turn on/off functionality

parent 70bb59fb
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,7 @@ std::vector<double> Pid_controller::pid_vec_ = {0., 0., 0.}; //current values of ...@@ -23,6 +23,7 @@ std::vector<double> Pid_controller::pid_vec_ = {0., 0., 0.}; //current values of
std::vector<double> Pid_controller::kpid_vec_ = {0., 0., 0.}; //coefficients Kp Ki Kd std::vector<double> Pid_controller::kpid_vec_ = {0., 0., 0.}; //coefficients Kp Ki Kd
double Pid_controller::I_reset_ = 0.; //reset value of I double Pid_controller::I_reset_ = 0.; //reset value of I
double Pid_controller::I_reset_errsq_ = 0.5; //value of error*error above which the I-term is held in reset double Pid_controller::I_reset_errsq_ = 0.5; //value of error*error above which the I-term is held in reset
bool Pid_controller::enabled_ = true;
void Pid_controller::init(double setpoint, std::vector<double> kpid, double I_reset, double I_reset_errsq){ void Pid_controller::init(double setpoint, std::vector<double> kpid, double I_reset, double I_reset_errsq){
...@@ -33,6 +34,11 @@ void Pid_controller::init(double setpoint, std::vector<double> kpid, double I_re ...@@ -33,6 +34,11 @@ void Pid_controller::init(double setpoint, std::vector<double> kpid, double I_re
} }
void Pid_controller::update_pid(double temperature){ void Pid_controller::update_pid(double temperature){
if(!enabled_){ //if we have been turned off, stay off
output_ = 0.09;
Ltc6992::set_level(output_);
return;
}
//calculate error from setpoint //calculate error from setpoint
double error = setpoint_ - temperature; double error = setpoint_ - temperature;
//update P,I,D //update P,I,D
...@@ -92,3 +98,12 @@ double Pid_controller::get_I_reset(){ ...@@ -92,3 +98,12 @@ double Pid_controller::get_I_reset(){
double Pid_controller::get_setpoint(){ double Pid_controller::get_setpoint(){
return setpoint_; return setpoint_;
} }
void Pid_controller::turn_off(){
output_ = 0.09;
enabled_ = false;
}
void Pid_controller::turn_on(){
enabled_ = true;
}
\ No newline at end of file
...@@ -21,6 +21,9 @@ public: ...@@ -21,6 +21,9 @@ public:
static double get_I_reset(); static double get_I_reset();
static double get_setpoint(); static double get_setpoint();
static void turn_off();
static void turn_on();
private: private:
static double setpoint_; //target temperature in °C static double setpoint_; //target temperature in °C
static double output_; //output to LTC6992 static double output_; //output to LTC6992
...@@ -28,6 +31,8 @@ private: ...@@ -28,6 +31,8 @@ private:
static std::vector<double> kpid_vec_; //coefficients Kp Ki Kd static std::vector<double> kpid_vec_; //coefficients Kp Ki Kd
static double I_reset_; //reset value of I static double I_reset_; //reset value of I
static double I_reset_errsq_; //value of error*error above which the I-term is held in reset static double I_reset_errsq_; //value of error*error above which the I-term is held in reset
static bool enabled_;
}; };
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment