Drehzahlregelung PID Regler

Gast #1447163
Lesenswert?

Hallo,
ich habe hier ein kleines Gefährt mit 2 Getriebemotoren, dem ich zur 
Geradeausfahrt verhelfen will.
Zur Drehzahlregelung bietet sich ja ein PID-Regler an, aber damit regel 
ich ja nur die Drehzahl eines Motors. Wie kann ich das mit dem anderen 
Motor verknüpfen, sodass ich zu einer Geradeausfahrt gelange?
Bitte um Denkanstöße
Gruß
Martin
Gast #1447185
Lesenswert?

Zwei Dinge sind nötig:

Identische Sensorik zur Drehzahlerfassung an den Rädern und identische 
Regelungen für jedes Rad.

Erfassung der Fahrtrichtung (kleines Rad, das mitläuft, gekoppelt mit 
Drehwinkelerfassung) als Istwert für die Regelung.

Weiterdenken erwünscht. ;)
Gast #1447210
Lesenswert?

Ja ich habe Encoderscheiben an jedem Rad, jede liefert 40 Impulse pro 
Umdrehung, die werden mit Lichtschranken generiert.
Mein Ansatz  ist auch eher genereller Natur. Ziel ist zu sagen fahre x 
Impulse geradeaus, und zwar wirklich geradeaus. Und hier ist das Problem 
für mich, ich stelle gerade mal exemplarisch etwas Code ein:
[c]
while(bisherige_Impulse<gewünschte Impulse)
{
diff=impulse_links - impulse_rechts
if(diff>0) rechts mehr spannung oder links weniger
if(diff<0) rechts weniger spannung oder links mehr
wait_ms(300) zb.
}
Leider komme ich so nicht auf einen guten Geradeauslauf, da bricht es 
immer mal wieder zu Seite weg.
Persönliche Seite #1447215
Lesenswert?

Wenn du einen Regler für die Geschwindigkeit hast, der einen Motorwert 
ausspuckt und einen Regler für die Lenkung hast, musst du die Ergebnisse 
der Regler kombinieren. Das macht man mit einem Mixer. Im einfachsten 
Falle ist das einfach
Motor1 = MotorReglerAusgang - LenkReglerAusgang;
Motor2 = MotorReglerAusgang + LenkReglerAusgang;

Wenn der LenkReglerAusgang 0 ist werden beide Motoren gleich 
angesteuert.
Gast #1447226
Lesenswert?

Dein exemplarischer Code gibt auch nicht sonderlich viel her.
Wie sind die Variablen z.B. deklariert? Bei 'unsigned' führt ein 
negatives Ergebnis z.B. zu Überraschungen. ;)

Es ist vermutlich einfacher, die Richtung per Sensor zu erfassen und 
diesen als Istwert zu verwenden, da 'Schlaglöcher' an nur einem Rad 
einen weiteren Weg zur Folge haben, als das andere Rad zurücklegen muss, 
um das Fahrzeug auf Kurs zu halten.
Gast #1447229
Lesenswert?

Nein ich glaube so einfach ist es nicht, einen Regler für die Lenkung 
brauche ich für die Geradeausfahrt ja nicht, es ist quasi eine 
Panzersteuerung. Die Regelparameter die ich beeinflussen kann sind 
lediglich die 2 PWM Werte die ich den Motoren vorgebe. Und hier komme 
ich nicht weiter, wie ich das am Besten mache.
Gast #1447238
Lesenswert?

>es ist quasi eine Panzersteuerung

Ist das ein Differentialgetriebe, das per Motor gesteuert wird (wie im 
original-Panzer)?

Du musst die Regelabweichung (Verstärkung) auf die PWM-Bereiche 
anpassen, z.B. PWM 0..1023 entspricht einer Regelabweichung von 0..10 
Impulsen für den einen Motor, PWM 0..1023 entspricht einer 
Regelabweichung von 0..-10 Impulsen für den anderen Motor.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren