www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Drehzahlregelung PID Regler


Autor: Regelmeister (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. ;)

Autor: Regelmeister (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Regelmeister (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Regelmeister (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt haben wir usn überschnitten ;) Die Variable diff ist im richtigen 
code int, und das klappt auch.

Autor: Thilo M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: volly (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.