PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GoTurn läuft endlos



cploj
14.01.2009, 22:17
Hallo, ich habe ein Problem mit GoTurn. Egal was ich mache, es läuft immer endlos. Folgender Code z.b. führt zu einer endlosen Drehung, dabei sollte doch nach 360° die Ampelfunktion starten:

void wait(int t)
{
int i=0;
for (i=0;i<t*10;i++)
{
Sleep(72);
}
}

void ampel(int t)
{
StatusLED(RED);
wait(t);
StatusLED(YELLOW);
wait(t);
StatusLED(GREEN);
wait(t);
StatusLED(OFF);
}

int main(void)
{
Init();
ampel(10);
while(1)
{
GoTurn(0, 360, 150);
ampel(100);
}
return 0;
}

Was kann die Ursache sein?

malediction
15.01.2009, 09:02
ich würde fast mal sagen, dass es an deiner odometrie liegt.
diese ist leider beim asuro nicht so ganz ausgereift (zu viel spiel, starke beeinflussung durch äußere einflüsse [streulicht]). ich hatte jedenfalls ähnliche fehler, als ich noch keine abdeckung gebaut hatte und die scheiben auf den achsen noch sehr viel spiel hatten.

versuch mal mit den genannten modifikationen, z.b. von
http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Modifikationen
oder aus dem forum hier, deine odometrie genauer zu machen.

oder manchmal kann es auch helfen, dein programm im dunklen zu testen, weil dann faktoren wie das streulicht weitgehend minimiert werden.

cploj
15.01.2009, 10:29
danke für die tips. das mit dem umgebungslicht werde ich mal testen...
ich frage mich grad auch, ob ich da noch irgendwo was einstellen muß, sprich kalibrieren damit ein 90° auch wirklich 90° wird

malediction
15.01.2009, 17:19
das kannst du ansich ganz gut mit dem programm von sternthaler machen. vorausgesetzt du verwendest die aktuelle lib.
https://www.roboternetz.de/phpBB2/viewtopic.php?t=31073

manchmal musst du aber dennoch ein wenig am feintuning arbeiten.

m.a.r.v.i.n
15.01.2009, 17:25
Hallo cploj,

in deinem Programm fehlt der Aufruf von EncoderInit().
Ohne Initialiserung funktioniert die GoTurn Funktion nicht.

cploj
15.01.2009, 19:41
jau, m.a.r.v.i.n .. das hatte ich eben auch schon rausgefunden... trotzdem bleibt das problem der präzision. z.b. wenn ich 90° angebe dreht er sich um ca. 120° .. ich muß nun erstmal die abschirmung der lichtschranke und die kalibrierung testen...

danke für eure hilfe :)

m.a.r.v.i.n
15.01.2009, 22:02
Hallo cploj,

das dein Asuro sich anstatt um 90° um 120° dreht, kann auch an den Encoderscheiben liegen. Welche verwendest du? die mit den 8 (4x sw 4x ws) oder die mit den 12 Segmenten (6x sw, 6x ws)?. Die Asuro Lib ist für die 12er Scheiben übersetzt. Wenn du die 8er Scheiben verwenden willst, muß dazu der Wert
MY_GO_ENC_COUNT_VALUE
in myasuro.h geändert werden und die Lib neu übersetzen.

Einen genauen Wert kann ich dir allerdings nicht nennen, ca. 30000L sollte aber passen.

cploj
16.01.2009, 08:15
danke.. das muß ich heute abend mal ausprobieren. ich muß mich eh in diese lib reinfuchsen. auch wie man so ein fahrmanöver durch schaltsensoren unterbricht ist mir noch ein rätsel