Forum: Mikrocontroller und Digitale Elektronik Abstandsregelung durch PID-Regler


von Waschbaer86 (Gast)


Lesenswert?

Hallo,

zuerst einmal Hab ich schon gegoogelt und auch hier das Forum durchsucht 
komm aber nicht weiter, deswegen bräuchte ich eure Hilfe.

Ich muss fürs Studium für einem Lego Mindstorm NXT 2.0 Bausatz eine 
Abstandsregelung durch einen PID-Regler in C++ programmieren. Dies 
bedeutet das durch einen Ultraschallsensor überprüft wird ob vor dem 
Fahrzeug ein Hindernis ist, wenn ja dann verringere die Geschwindigkeit.

Zuerst hätte ich eine Fragen:

Was liefert mir die Berechnung durch einen PID-Regler? Die neue 
Geschwindigkeit oder einen Prozentsatz oder den Wert um den ich die 
aktuelle Geschwindigkeit verringern muss?

Gibt es irgendwo zufälliger Weise den Code für sowas, speziell für 
Abstandsregelung?

Hab bis jetzt den Code:
1
double w = 0.0;  //  Sollwert
2
double x = 0.0;  //  Istwert
3
double e = 0.0;  //  Regelabweichung
4
double y = 0.0;  //  Stellgröße
5
double z = 0.0;  //  Störgröße
6
7
double Kp = 0.6 * 0.379;
8
double Ki  =2*Kp/Ta;  
9
double Kd = Kp*Ta/8;  
10
11
e = w - dist;
12
13
w=dist;
14
15
if (y < 100 && y > 0)
16
  esum = esum + e;
17
18
y = Kp*e + Ki*Ta*esum + Kd/Ta*(e-e_alt);
19
20
e_alt = e;

Weiß einfach nicht mehr was ich noch testen oder ändern soll.

Vielen Dank schon für die Hilfe!

von Karl H. (kbuchegg)


Lesenswert?

Waschbaer86 schrieb:

> Ich muss fürs Studium für einem Lego Mindstorm NXT 2.0 Bausatz eine
> Abstandsregelung durch einen PID-Regler in C++ programmieren. Dies
> bedeutet das durch einen Ultraschallsensor überprüft wird ob vor dem
> Fahrzeug ein Hindernis ist, wenn ja dann verringere die Geschwindigkeit.

Hä?
Und inwiefern 'regelt' da jetzt der Abstand die Geschwindigkeit?

Eine Regelung wäre zb. dass der Regler die Geschwindigkeit konstant 
hält, indem er die momentane Geschwindigkeit feststellt und dem Motor 
mehr oder weniger Gas gibt um die Geschwindigkeit zb bei der Fahrt über 
einen Berg konstant zu halten.
Aber wenn vor einem Fahrzeug ein Hinderniss auftaucht, dann gibts 
eigentlich nur eines: bremsen.

Oder ist das Ziel, dass ein Fahrzeug einem anderen Fahrzeug nachfährt 
und dabei den Abstand zum Vordermann konstant hält? Sprich: ist es zu 
weit entfernt, kann schneller gefahren werden - ist es zu knapp, dann 
wird die Geschwindigkeit reduziert damit der Abstand größer wird.

> Was liefert mir die Berechnung durch einen PID-Regler?

Allgemein: eine Stellgröße. Was immer die auch physikalisch 
repräsentiert. Zb. wie stark die Heizwendel eines Tauchsieders bestromt 
wird um eine Temperatur konstant zu halten; wieviel aufs Gas gedrückt 
wird um eine Geschwindigkeit konstant zu halten; wie stark ein Magnet 
bestromt wird, damit ein im Magnetfeld hängendes Teil in Schwebe 
gehalten wird; ....
Eine Stellgröße, die auf den Aktuator einwirkt um irgendwas zu bewirken.

von Waschbaer86 (Gast)


Lesenswert?

Danke erstmal für die schnelle Antwort.

Ja, genau es soll einem anderen Auto nach gefahren werden.

Also würde in meinem Fall die Berechnung als Ergebnis bringen, das die 
Geschwindigkeit um 30% erhöht werden soll oder z.B. von 100 auf 130 
(irgendeine Geschwindigkeits-Einheit) erhöht werden soll?

von Karl H. (kbuchegg)


Lesenswert?

Waschbaer86 schrieb:

> Also würde in meinem Fall die Berechnung als Ergebnis bringen, das die
> Geschwindigkeit um 30% erhöht werden soll

Der Regler bringt nicht als Ergebnis, dass du 30% erhöhen sollst. Der 
Regler bringt einen Wert, der in eine Geschwindkeit umszusetzen ist (wie 
auch immer).
So wie du das ja auch machst beim Autofahren. Bist du zu weit weg, 
drückst du das Gaspedal stärker durch. Bist du zu knapp drann, lässt du 
das Pedal weiter raus. Wieviele Prozent das sind ist dir 
piepschnurzegal. Die Gasstellung korrespondiert mit der Geschwindigkeit 
mit der gefahren wird. Du denkst ja auch nicht darüber nach, was jetzt 
die physikalische Bedeutung dafür ist, wie weit dein Gaspedal 
reingedrückt ist.


Gaspedal ist tatsächlich gar keine so schlechte Analogie. Das Gaspedal 
ist deine Stellgröße. Aus dem PID Regler kommt raus, wie stark er aufs 
Pedal treten will. Das kann von 0 (überhaupt nicht) bis zum 
Vollausschlag des Pedals gehen (mehr als Vollgas geht nun mal nicht)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.