Forum: Mikrocontroller und Digitale Elektronik Lenkung mit zwei Motoren


von Student (Gast)


Lesenswert?

Hallo Zusammen,

ich baue für eine Studienarbeit einen roboter mit zwei Motoren.
Dieser soll je nach Steuerung durch einen Joystick gelenkt werden.
Vom Joystick bekomme ich Werte für die Auslenkung der X- sowie der 
Y-Achse. Anhand dieser Werte sollen die Motoren angesteuer werden.

Nun ist das vorwärts und rückwärtsfahren sowie das auf der Stelle drehen 
kein Problem. Jedoch fehlt es mir an einer Formel für das Fahren nach 
z.B. recchts vorne, rechts hinten, links vorne oder links hinten.
Hatte eventuell jemand hier schon einmal das selbe Problem und hat eine 
gute Formel als Lösung für das Problem des Lenkausschlags in relation 
zur Geschwindigkeit gefunden?

Mit freundlichen Grüßen

von Max D. (max_d)


Lesenswert?

Geschwindigkeit = Lenkauschlag * 42

Mehr Hilfe kanns nur mit mehr Infos geben.
Evtl suchst du funktional etwas V-Mischer ähnliches, aber das ist mehr 
geraten...

von RP6conrad (Gast)


Lesenswert?

Ja, ist relatif einfach : die Motoren werden normalerweise mit PWM 
angesteuert. Ihre dreh Radius wird dan prozentual bei diese PWM werten 
addiert :
Drehrate = 10% = 0,1
PWM-basis = basis speed
PWM_Links = PWM basis*(1+Drehrate)
PWM_Rechts = PWM basis*(1-Drehrate)
Idealerweise ergeben negative PWM-werte eine andere Drehrichtung.

von Ach Du grüne Neune (Gast)


Lesenswert?

Dein Problem kenne ich. Das hatte ich auch schon mal. Der Joystick hat 4 
Mikroschalter, bei Rechtsanschlag dreht sich das Modell auf der Stelle 
rechts rum (die Motoren drehen gegenläufig), bei Linksanschlag dasselbe 
in Grün nur anders rum.

Für rechts vorne, links vorne, links hinten und rechts hinten habe ich 
damals mit KV-Diagrammen eine Lösung mit mehreren Logikgattern 
ermittelt. Das erschien mir aber zu aufwendig und der Roboter flog 
langfristig in die Ecke.

Heute kann man das Problem leicht mit einem µC lösen. Reine Software. 
Die Motoren müssen dann aber über Relais oder Transistorbrücken 
angesteuert werden, weil du die Mikroschalter im Joystick für die 
Eingabe benötigst!

von Michael B. (laberkopp)


Lesenswert?

Student schrieb:
> Jedoch fehlt es mir an einer Formel für das Fahren nach
> z.B. recchts vorne, rechts hinten, links vorne oder links hinten

Wieso, Panzerfahren ist die simpelste der Fortbewegungsmethoden, beide 
Gleisketten folgen 2 parallelen Linien.

In einer Kurve ist die äusser Linie länger als die Innere.

Genau um diesen Betrag muss der äusserer Motor schneller laufen als der 
Innere, um diese Kurve zu fahren.

Das Problem: Die Ketten rutschen in dem Moment, daher ist die Berechnung 
vielleicht genau, die Bewegung eher Zufall.

Besser geht es mit 2 Rädern auf solidem Untergrund, Ballonreifen, und 
einem Spornrad.

von Sebastian S. (amateur)


Lesenswert?

Da wirst Du wohl experimentieren müssen.

Den Ausschlag wirst DU wohl bewerten und in eine Drehzahldifferenz 
umsetzen müssen.

Warum das kein anderer machen kann ist recht einfach. Es kommt auf das 
Fahrverhalten und den tatsächlichen Einsatz an.

Stell Dir mal vor, bei einem Rennwagen "reißt" jemand das Steuer rum...
Hoppla!
Stell Dir mal vor, Du willst/musst ausweichen und nichts passiert...
Noch mal Hoppla!

: Bearbeitet durch User
von Alex G. (dragongamer)


Lesenswert?

Wird das nun ein Robotor - also etwas das weitestgehendst selbstständig 
irgendeine Aufgabe erfüllen soll (z.B. von Punkt A nach B kommen), oder 
"einfach" einem ferngesteuerten Fahrzeug?
Da du die Frage so stellst, gehe ich mal von ersterem aus.
Da wirst du leider zusätzliche Sensoren rbauchen (haben die allermeisten 
Roboter ja nicht umsonst) um sich irgendwie zu orientieren, denn 
physikalsiche Bewegung ohne fixen Referenzpunkt hat immer eine 
Zufallskomponente und die SUmmiert sich desto länger der Robotor 
selbstständig den einprogrammieren Weg fährt...


Berechnen kann man natürlich.
Für Kettenantrieb so wie laberkopp geschrieben hat.
Für ein Fahrzeug mit Lenkstange wäre es am sinnvollsten, den Weg der 
Hinterreifen zu ermitteln mit einem Signalgeber o.ä. unabhängig vom 
Motor.
Daraus kannst du wieder die Linie ableiten die die jeweiligen Räder 
zurückgelegt haben und entsprechend die Kurve.

von Viktor B. (coldlogic)


Lesenswert?

Das Problem ist leider nicht so gut erklärt. Deswegen versuche ich jetzt 
mal zu raten, was du brauchen könntest.
Um Kurven zu fahren, musst du die beiden Bewegungen überlagern, d.h. 
GeschwindigkeitLinkerMotor = Fahrt.LinkerMotor * Y.Auslenkung + 
Drehung.LinkerMotor * X.Auslenkung.
Dabei sind Fahrt und Drehung feste Variablen für Maximalwerte. Um eine 
Abhängigkeit von der Geschwindigkeit einzuführen, wäre es möglich, den 
Wert GeschwindigkeitLinkerMotor zusätzlich zu begrenzen, z.B. auf 
maximale Beschleunigung. Dann heißt der zweite Teil des oberen Terms, 
mal linear approximiert, nun Drehung.LinkerMotor * X.Auslenkung - 
Drehung.LinkerMotor * X.Auslenkung * 
(Y.Auslenkung/(Y.MaxAuslenkung+MinLenkrate)) (angenommen, die Räder 
drehen nicht durch und bei maximaler Geschwindigkeit lässt es sich noch 
mit dem angepasstem Wert der MinLenkrate lenken).

Hoffentlich konnte ich helfen.

MfG, Viktor

von H.Joachim S. (crazyhorse)


Lesenswert?

Ein durchaus komplexes Problem, wenn Schlupf ins Spiel kommt..
Ich beobachte immer wieder ganz gebannt meinen Rasenmähroboter (Bosch 
Indego), der trotz mit dem Auge erkennbaren einseitigem Durchdrehen fast 
perfekte parallele Bahnen fährt. Wahrscheinlich eingebauter Kompass.
Und der Staubsauger fährt auf perfektem Untergrund ganz leichte Kurven 
und meint er fährt geradeaus:-)

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.