PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Go(); und Turn();



m1ch15inner
06.04.2007, 12:59
als ich heut mal wieder mein Asuro rausgezogen hab versuchte ich ein einfaches prog zu schreiben indem er 1m fähr 90° dreht ..... bis er am ausgangspunkt angekommen ist.
die erste strecke funktioniert wunderbar aber irgendwann dreht er sich einfach obwohl er geradeaus fahren sollte. und die 90° sind auch nicht immer 90° manchmal auch 180. ](*,)
wie kann ich das verbessern?
bzw. woran liegt dass? :-k

damaltor
06.04.2007, 13:07
vielleicht zeigst du uns deinen code...

m1ch15inner
06.04.2007, 13:16
oh sry... wollt ich eig machen
hier is er:

#include "asuro.h"

int main(void)
{
Init();
Encoder_Init();
Go(500);
Turn(90);
Go(500);
Turn(90);
Go(500);
Turn(90);
Go(500);
Turn(90);
while(1)
{
BackLED(ON,OFF);
Msleep(300);
BackLED(OFF,ON);
Msleep(300);
}
return 0;

}

damaltor
06.04.2007, 13:25
tu mal hinter EncoderInit folgendes:

Encoder_Set(0,0);

und am besten auch vorjedes go und turn... damit wird der encoderzähler zurückgesetzt.

m1ch15inner
06.04.2007, 13:29
ich hatte gedacht des is da schon dabei.... ok damit dürfte sich s ja geklärt habe... danke

m1ch15inner
06.04.2007, 13:34
denkste.... hat nix gebracht :(
wenn er anfängt zu fahren macht er erst mal ne 90° kurfe?????
und die winkel sind immer unterschiedlich so zwischen 90° und 180°:'(

liegt das vllt an der niedrigen "auflösung"???

michi

damaltor
06.04.2007, 13:36
das könnte sein... hast du die anderen odometrie scheiben mal getestet

m1ch15inner
06.04.2007, 13:38
nein....
es gibt ja 4 möglichkeiten...
4 schwarz 4 weis auf 2. zahnrad
6 schwarz 6 weis auf 2. zahnrad
4 schwarz 4 weis auf antriebswellen und die odometrie umlöden
6 " 6 "

was is das beste?^^
kommt der asuro überhaupt nach wenn ich das auf die antriebswelle kleb?

radbruch
06.04.2007, 13:40
Wenn nur die falschen Codescheiben eingesetzt würden, müsste der Fehler bei jeder Fahrt gleich sein.

m1ch15inner
06.04.2007, 13:43
naja....
es funktioniert auch aber er fährt eher ein dreieck als ein viereck.
genau an der selben stelle wird man wohl nie hinkriegen aber 60 cm abstand zum ausgangspunkt is n bisschen sehr viel.

damaltor
06.04.2007, 13:43
stimmt das ist wahr.

umgelötet hat das hier fast keiner, die originalen stellen sollten passen. nimm die mit den 6 flächen.

ansonsten: fahre mit den scheiben die du drauf hast 2-3 mal und teste, ob die (falsche) strecke wenigstens immer gleich ist.

m1ch15inner
06.04.2007, 13:46
ab und zu is es gleich... --> n 3eck
wie sieht dass bei euch aus? fals ihr ein habt

damaltor
06.04.2007, 13:49
mein asuro ist zuhause geblieben, den seh ich erst später wieder... aber wenn die strecke immer ähnlich ist, dann könnte es tatsächlich an den falschen odo-scheiben liegen. kleb doch die andern mal drauf und teste dann nochmal

radbruch
06.04.2007, 13:51
Ich habe go() und turn() noch nie verwendet, würde aber mal tippen:

90° mit 4er-Teilung entspricht 60° mit einer 6er Teilung, beides wäre die selbe Anzahl von Flanken. (90/60=6/4) Ach ja, 60° weil die Summe der Winkel im Dreieck=180°, aber das wisst ihr ja...

m1ch15inner
06.04.2007, 13:51
:D
also ganz teoretisch mal
ein dreieck kommt raus => 60°
90 / 6 * 4 = 60
ok es sind die scheiben....

m1ch15inner
06.04.2007, 13:58
denkfehler!
müssten ja 120° sein
ich geb auf.....

und damit wär noch nicht geklärt warum er nicht immer gerade ausfährt.... naja... kann es sein dass das licht da mitspielt?

damaltor
06.04.2007, 14:07
nein, stimmt doch. wenn bei der scheibe mit 6 feldern zB 100 ticks durchlaufen müssen, um einen 90 grad winkel zu schaffen, dann muss halt bei der anderen scheibe mit weniger flächen mehr gedreht werden bis 100 ticks vorbei sind... also wird der winkel um den gedreht wird grüßer.

m1ch15inner
06.04.2007, 21:56
ich hab ja aber die mit 12 ticks drauf.... also die größere
und ein winkel von 60° ergibt kein dreieck^^

radbruch
07.04.2007, 13:28
Mehr "Ticks" pro Umdrehung heist weniger Weg pro Tick oder eben weniger Grad beim Drehen.

Mein Denkfehler war aber das Dreieck. Der asuro dreht ja außen rum, also müste sich ein Sechseck ergeben (6*60), wenn wir davon ausgehen, daß die Turn()-Funktion mit einer 4er Scheibe rechnet, aber eine 6er aufgeklebt ist.

m1ch15inner
07.04.2007, 18:58
um ein dreieck zu fahren müsste er 3x120° fahren
sonst fährt er n sechseck

stochri
07.04.2007, 21:31
Mein Denkfehler war aber das Dreieck. Der asuro dreht ja außen rum, also müste sich ein Sechseck ergeben (6*60), wenn wir davon ausgehen, daß die Turn()-Funktion mit einer 4er Scheibe rechnet, aber eine 6er aufgeklebt ist.

Die Go() und die Turn() Funktion sind für die 6er Scheiben ausgelegt ( 6 Schwarzfelder ).
Wenn die Funktionen nicht richtig funktionieren, liegt das an den Odometriesensoren oder der Programmierung.
Sonnenlicht macht die Fahrt unmöglich. Test: dunkles Zimmer.

stochri

damaltor
08.04.2007, 22:11
Hey leute... warum probiert ihr nicht einfach die anderen scheiben?