Synchronisierung.

This commit is contained in:
2024-07-18 11:57:11 +02:00
parent 7aad80b38e
commit d62c0e58a9
13 changed files with 2503 additions and 4 deletions

57
main_v4/main_v4.ino Normal file
View File

@@ -0,0 +1,57 @@
#include <PID_v1.h>
#include <prg_342.h>
#define PIN_INPUT A0
#define PIN_OUTPUT DAC0
#define K_FAKTOR 1.0995380532183
#define ALPHA 1
PRG_342 prg = PRG_342(K_FAKTOR);
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
int angle;
int lastAngle;
unsigned long timer1;
//Specify the links and initial tuning parameters
double Kp = 0, Ki = 0.04, Kd = 0;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup() {prg.setOutput(4095*0.5, false);
delay(3000);
prg.setOutput(0, false);
delay(2000);
Serial.begin(115200);
angle = prg.getAngle();
Input = prg.getTorque(true, ALPHA);
prg.updateActOut(Input);
Setpoint = 15000;
//turn the PID on
myPID.SetOutputLimits(0, 4095);
myPID.SetMode(AUTOMATIC);
}
void loop() {
angle = prg.getAngle();
Input = abs(prg.getTorque(true, ALPHA));
prg.updateActOut(Input);
if (SPEEDCHECK() >= 400) {
myPID.Compute();
}
prg.setOutput(Output, false);
}
float SPEEDCHECK() {
// Überprüfen der Rotationsgeschwindigkeit
if (millis() - timer1 >= 200) {
timer1 = millis();
int deltaAngle = angle - lastAngle;
lastAngle = angle;
return abs(deltaAngle * 5); // Umrechnen in Winkel pro Sekunde
}
}