PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geradeauslauf prüfen



djfoxi
26.12.2003, 20:23
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.

djfoxi
27.12.2003, 11:43
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?

Deceiver
27.12.2003, 12:32
dann kannst du die SPEED_L erhöhen und gleichzeitig die SPEED_R verkleinern.

JanPeter
27.12.2003, 16:48
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.

JanPeter
27.12.2003, 17:41
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.

djfoxi
27.12.2003, 20:45
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

JanPeter
27.12.2003, 20:52
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.

JanPeter
27.12.2003, 20:53
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.

Claus
28.12.2003, 15:40
Hi,

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

ich benutze die erweiterungsplatine.

any idea?

Claus
28.12.2003, 16:14
Hi,

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

100 180
60 90-95
140 255
120 210
110 180
60 85-90
80 125-130
70 105

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.

djfoxi
28.12.2003, 17:45
Wenn man die Grundplatine abschraubt kann man sehen, das es nahezu unmöglich ist die Platine so zu justieren das keine der beiden Lichtschranken am Zahnrad schleift...

JanPeter
29.12.2003, 21:20
Hallo Robby Fans!
1. Tip Motoren einlaufen lassen, die haben Kohlebürsten und die müssen sich erstmal einschleifen!
2.Tip Hochleistungsfett Graupner Best.-Nr.:570 (giebt es im Modellbauladen)
Vorsichtig damit die Zahnräder bestreichen, aber nicht so doll , den der Wegstreckensensor will ja auch noch was sehen.

Bei mir läuft Robby absolut gerade.

Tip schaut mal in den Beitrag von Mir Tuning Wegstreckensensorzahnrad!

JanPeter
03.01.2004, 15:05
Hi...!
Na absolut kann ich jetzt auch nicht mehr sagen, ich habe mir mal die
linke und rechte Wegstrecke aufs LCD gelegt.
Und die Differenz von links zu rechts
Die Abweichungen sind abhängig von der Geschwindigkeit.
Und die Differenz schwank nach positiv und negativ.
Habe noch kein System erkannt.

JanPeter
05.01.2004, 18:22
So ich habe Heute noch mal ein bisschen rumgeschraubt, soll heissen die mechanik mir angeschaut.
Ich hatte bei einer Wegstrecke von 100 Impulsen am linken Wegstreckenzähler immer Abweichungen, ging bis 40 Impulse mehr.
Nun hab ich mir mal die mühe gemacht und Robby zertlegt.
Also Ketten ab, Hauptplatine und alle Zahnräder entfernt.
Und siehe da die Laufrolle des linken Antriebs hat eine starke Abbremsung.
Nachdem ich das Metallzahnrad, mit ein bisschen Spiel eingebaut hatte, hab ich nur noch 4 Impulse mehr.
Das ist wohl ein Montageproblem!

djfoxi
07.01.2004, 19:51
Hallo,

heute habe ich, da bei meinem ersten Robby ja ein Loch im IC gebrannt ist, einen Ersatzrobby bekommen, das Lauflicht funktioniert aber wenn ich
mein Synchronitätsprogramm lade stürzt das Subsystem nach ein paar mal blinken der grünen LED ab, und das Programm bleibt hängen...
wenn ich es im alten Robby lade funzt es.

Mein Bitte, könnt ihr mal das hier im Anfang beigefügte Programm Test ausführen ob es bei euch funzt(Robby wird beschleunigt damit)

Danke!!