Skip to content
Snippets Groups Projects
Commit 8a975a02 authored by Orhan-Timo Altan's avatar Orhan-Timo Altan
Browse files

init

parent 57a0f070
Branches
No related tags found
No related merge requests found
.vscode
build
\ No newline at end of file
#include <pid_controller.h>
double prop_gain = 0.1;
double int_gain = 0.1;
double diff_gain = 0.01;
double input_value = 0;
uint8_t step = 0;
uint8_t setpoint = 50;
PIDController pid(prop_gain, int_gain, diff_gain, 0);
void setup(){
Serial.begin(115200);
pid.set_setpoint(setpoint);
}
void loop(){
step++;
// if (input_value < 70)
// {
// pid.set_setpoint(100);
// }
input_value = pid.compute(input_value);
if(setpoint - input_value < 0.01)
{
Serial.print("Reached setpoint after ");
Serial.print(step);
Serial.print(" steps");
exit(0);
}
else
{
Serial.print(step);
Serial.print(": ");
Serial.print(input_value);
Serial.print("\n");
}
delay(100);
}
\ No newline at end of file
#include <pid_controller.h>
PIDController::PIDController(double Kp, double Ki, double Kd, double setpoint) : Kp(Kp), Ki(Ki), Kd(Kd), setpoint(setpoint) {}
void PIDController::set_setpoint(double setpoint)
{
this->setpoint = setpoint;
}
double PIDController::compute(double input_value)
{
double error_value = setpoint - input_value;
out_p = Kp * error_value; // P-Anteil
out_i += Ki * error_value; // I-Anteil
out_d -= Kd * error_value; // D-Anteil
return out_p + out_i + out_d;
}
void PIDController::reset()
{
out_i = 0;
out_d = 0;
}
\ No newline at end of file
#ifndef PID_CONTROLLER_H
#define PID_CONTROLLER_H
#include "Arduino.h"
class PIDController
{
public:
PIDController(double Kp, double Ki, double Kd, double setpoint);
double compute(double input_value);
void set_setpoint(double setpoint);
void reset();
private:
double Kp, Ki, Kd;
double setpoint;
double out_p, out_i, out_d;
};
#endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment