Drehzahlregelung PID Regler

Gast #1447163
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
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
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
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
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
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
>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.
Gast #1447283
Ich habe diese Reglung mal für Linearantriebe simuliert, es hat richtig 
gut funktioniert. Ich hoffe ich habe keinen Fehler in der Zeichnung.

Ursprüngliche Version: Altenburg / Mobile Roboter

Gruß
Volly
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.