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

Angepasst an die Konvention der thk_libs

parent 8a975a02
Branches
No related tags found
No related merge requests found
# BITs PID Controller
# PID Controller
Mit dieser Bibliothek kann ein PID Regler erzeugt werden, der mit Hilfe einer Führungsgröße und dem Ist-Wert die Regelgröße berechnet.
## **Installation:**
Um diese Klassen verwenden zu können, muss dieses Repository geklont und in das Library-Verzeichnis der Arduino-IDE kopiert werden.<br />
<br />
## **Anwendung:**
Zur Verwendung siehe zunächst das Beispiel `pid_example.ino`<br />
<br />
**Einbinden der Bibliothek:**
```Arduino
#include <thk_pid_controller.h>
```
**Instanziieren:**
```Arduino
thk_PIDController pid_controller(proportional_gain, integrational_gain, differential_gain, setpoint);
```
- `proportional_gain`: Proportional Faktor
- `integrational_gain`: Integral Faktor
- `differential_gain`: Differential Faktor
- `setpoint`: Führungsgröße<br />
<br />
### **Funktionen:**
**Übergeben einer neuen Führungsgröße an den Regler:**
```Arduino
pid_controller.set_setpoint(setpoint);
```
**Berechnen der Regelgröße:**
```Arduino
controlled_variable = pid_controller.compute(input_value);
```
**Zurücksetzen von I- und D-Anteil:**
```Arduino
pid_controller.reset();
```
#include <pid_controller.h>
#include <thk_pid_controller.h>
double prop_gain = 0.1;
double int_gain = 0.1;
......@@ -8,7 +8,7 @@ double input_value = 0;
uint8_t step = 0;
uint8_t setpoint = 50;
PIDController pid(prop_gain, int_gain, diff_gain, 0);
thk_PIDController pid(prop_gain, int_gain, diff_gain, 0);
void setup(){
Serial.begin(115200);
......@@ -17,11 +17,7 @@ void setup(){
void loop(){
step++;
// if (input_value < 70)
// {
// pid.set_setpoint(100);
// }
input_value = pid.compute(input_value);
if(setpoint - input_value < 0.01)
......
#include <pid_controller.h>
#include <thk_pid_controller.h>
PIDController::PIDController(double Kp, double Ki, double Kd, double setpoint) : Kp(Kp), Ki(Ki), Kd(Kd), setpoint(setpoint) {}
thk_PIDController::thk_PIDController(double Kp, double Ki, double Kd, double setpoint) : Kp(Kp), Ki(Ki), Kd(Kd), setpoint(setpoint) {}
void PIDController::set_setpoint(double setpoint)
void thk_PIDController::set_setpoint(double setpoint)
{
this->setpoint = setpoint;
}
double PIDController::compute(double input_value)
double thk_PIDController::compute(double input_value)
{
double error_value = setpoint - input_value;
......@@ -18,7 +18,7 @@ double PIDController::compute(double input_value)
return out_p + out_i + out_d;
}
void PIDController::reset()
void thk_PIDController::reset()
{
out_i = 0;
out_d = 0;
......
......@@ -3,10 +3,10 @@
#include "Arduino.h"
class PIDController
class thk_PIDController
{
public:
PIDController(double Kp, double Ki, double Kd, double setpoint);
thk_PIDController(double Kp, double Ki, double Kd, double setpoint);
double compute(double input_value);
void set_setpoint(double setpoint);
void reset();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment