Mit dem beigefügten Programmen läßt sich die Synchronität der beiden Antriebe prüfen dies ist vor allem bei längeren Geradeausdistanzen sinnvoll.
Erst Programm navi... dann Synchronitätstest ausführen.
Hat es von euch schon jemand ausprobiert?
Bei mir habe ich festgestellt das der rechte Antrieb früher losläuft als der linke so das robby immer nen linksdrall hat.
Ich möchte die über nen zusätzlichen Programmschritt korrigieren, aber wie kann ich, nachdem die Werte für den rechten und linken Antrieb ja in Lbyte stehen vergleichen (z.B if linker antrieb>rechter antrieb then)....?
Jemand nen Tip?
Hallo djfoxi!
Ist ja Super , das mit den Programmen.
Aber das Programm offset , finde ich nicht so gut.
Wie Du im Kopf beschrieben hast , das die Räder per Hand getreht weden sollen.
Schade ums Getriebe, besser wäre wann Du über einen Befehl beide Zähler synchronisierst.
Hallo djfoxi!
Dein Programm Synchron hat einen Fehler!
Verschiebe den Programmabschnitt
#No_Task hinter end, da es ein Unterprogramm ist
Sonst läuft bei mehrmaligen lauf der Stack über!
Die Abfrage der L_Distance und R_Distance ist zu weit auseinander.
Es liegen 4 IF-Befehle dazwischen.
Versuche beide in eine Variable zu speichern und dann erst die IF -Befehle ausführen.
Hi Jan Peter,
danke für den Tip, inzwischen habe ich es in zwei Variablen untergebracht und so modifiziert das er sobald die Differenz der beiden Antriebe zu groß wird er die Geschwindigkeit des schnelleren drosselt. Ich musste halt ein wenig probieren wie lange und wieviel um eine schnellstmögliche Korrektur zu erreichen. Inzwischen fährt er wirklich sehr gerade.
Bei Interesse kann ich es ja mal uploaden...
Frage wieso ist es so wichtig das ich #no_task hinter end verschiebe???
Danke für dein Feedback
Gruß
Tim
PS.: Mit dem Getriebe, es ist ja maximal 2 Umdrehungen und da man direkt an der antreibenden Achse dreht, denke ich dürfte es dem Getriebe auch nicht mehr schaden als wenn Robbie "ausrollt".
Ich habe das Prog auch mit Motorkraft probiert aber er ist auch bei langsamster Geschwindikeit immer ein wenig über den Nullpunkt gerutscht- deshalb habe ich mich für den "handbetrieb" entschieden
Hallo djfoxi!
Der Programmabschnitt #no_task endet mit einem return.
Dieser abschnitt wird beim ersten Durchlauf bearbeitet.
Dann kommt das return , der Prozessor denkt er muss aus ein Unterprogramm zurückspringen, im Stack ist die Rücksprungadressen vom Unterprogramm gespeichert. (Normalerweise)
Da Du aber das Programm normal durchläufst, kann es passieren , dass er sich vom Stack eine Rücksprungadresse holt , die nicht aktuell ist!
Also verschiebe den gesamten Programmabschnitt von #no_task in den unteren Bereich Deines Programms. Wie gesagt hinter end.
Hallo djfoxi!
Der Programmabschnitt #no_task endet mit einem return.
Dieser abschnitt wird beim ersten Durchlauf bearbeitet.
Dann kommt das return , der Prozessor denkt er muss aus ein Unterprogramm zurückspringen, im Stack ist die Rücksprungadressen vom Unterprogramm gespeichert. (Normalerweise)
Da Du aber das Programm normal durchläufst, kann es passieren , dass er sich vom Stack eine Rücksprungadresse holt , die nicht aktuell ist!
Also verschiebe den gesamten Programmabschnitt von #no_task in den unteren Bereich Deines Programms. Wie gesagt hinter end.
ich habe bei meinem Robby einen sehr grossen Unterschied zwischen den Werten fuer SPEED_R und SPEED_L bei geradeausfahren.
SPEED_R habe ich auf 100 gesetzt und dann den Wert fuer _L solange erhoeht bis Robby auch fast geradeauslief. Ergebnis _L=190, vorher macht er immer einen satten Linksdrall.
Prog :
for x=1 to 100
SPEED_R=100:SPEED_L=190
gosub no_task
pause 5
next
#stop
SPEED_R=0:SPEED_L=0
end
#no_task
sys comnav_status
gosub l_distance
ledport=(lbyte and &h0F):gosub ledport_write
gosub r_distance
ledport=(ledport or (lbyte shl 4):gosub ledport_write
return
hat jemand das Getriebe mal "geschmiert". Wie oben beschrieben laufen beide Seiten stark asymmetrisch. Aber die grosse Differenz wird beim laufenlassen etwas kleiner.
habe gefunden
_R / _L
die linke seite scheint auch schwergaengier zu sein, habe mal im Inneren am Zahnrad des Motors gedreht, damit das Getriebe sich dreht, sitzt etwas fester zusammen.
Lesezeichen