Hi, schon mal danke für deine Antwort!
Ta habe ich mithilfe dieses Codes gemessen (am Ende der Loop platziert):
Code:
unsigned long cycleTime;
unsigned int cycleCount;
cycleCount++;
if (cycleCount>=100)
{
Serial.print("Cycle Time: ");
Serial.print((micros()-cycleTime)/cycleCount);
Serial.println(" microseconds");
cycleCount=0;
cycleTime=micros();
Dabei kamen dann Werte zwischen 17000 und 25000 µs raus, was ich als Taktzeit interpretiert habe. Ich habe dann für Ta einfach mal einen Wert in der Mitte angenommen. Meine Variablen sind wie folgt definiert:
Code:
float d_soll = 0.4, d_ist;
float e, esum = 0, ealt = 0;
unsigned long TaMicros = 20000; //Abtastzeit in Mikrosekunden
float Ta = (float)TaMicros/1000000;
unsigned long currentMicros;
unsigned long previousMicros = 0;
float vy = 0;
float Kp = 1.5;
float Ki = 0;
float Kd = 0;
Die Loop-Schleife sieht dann so aus:
Code:
currentMicros = micros();
d_ist = ultraSensor.distanceCm()/100; //Methode des Herstellers (eigene Library) zum Auslesen des Sensors
regelung(); //ist in meinem ersten Post enthalten
motor1.runSpeed(vy,0); //Methoden des Herstellers zum Ansteuern der Motoren
motor2.runSpeed(vy,0); //Umrechnung in für den Motor zu verarbeitende Drehzahlen findet an anderer Stelle statt
motor3.runSpeed(vy,0);
motor4.runSpeed(vy,0);
Hoffe das ist ausreichend, um dir eine Ahnung zu von dem was ich treibe zu verschaffen
Lesezeichen