Hi, schon mal danke für deine Antwort!
Ta habe ich mithilfe dieses Codes gemessen (am Ende der Loop platziert):
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: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();
Die Loop-Schleife sieht dann so aus: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;
Hoffe das ist ausreichend, um dir eine Ahnung zu von dem was ich treibe zu verschaffenCode: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);![]()







Zitieren


Lesezeichen