PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linienlauf Programm funktioniert nicht, Asuro fährt im Kreis



bugmenot
27.04.2009, 17:47
Hallo,

im Rahmen eines Unterrichtsprojektes sollen wir einen Asuro-Roboter zusammenbauen und ein Linienlaufprogramm erstellen.

Natürlich kann man da einfach den Quelltext von irgendwoher aus dem Internet kopieren, aber es soll ja auch ein bisschen eigene Leistung dahinterstecken ;-)

Nun ja, der Quelltext ist wie folgt:
PS: Es wird die Asuro Lib von Sourceforge verwendet (SVN)



#include <asuro.h>
void GoLeft(void)
{
SetMotorPower (0, 70);
BackLED (ON, OFF);
StatusLED(YELLOW);
}
void GoRight(void)
{
SetMotorPower (70, 0);
BackLED (OFF, ON);
StatusLED(YELLOW);
}
void GoStraight(void)
{
SetMotorPower (70, 70);
BackLED (OFF, OFF);
StatusLED (GREEN);
}

int main (void)
{
Init();
// Benoetigt fuer Linienfahrt
// Enthaelt Helligkeitsdaten
unsigned int lData[2];
int InitOffset;
int diff;
// Spasseshallber lassen wir die gruene LED leuchten
// "Betriebsbereitschaft"
StatusLED (GREEN);

// "Tischbeleuchtung"
FrontLED (ON);
LineData (lData);
InitOffset = lData [0] - lData [1];
// Vor Losfahren warten [ms]
Msleep (750);

//Endlosschleife ...
while (1)
{
LineData (lData); // aktuelle Helligkeitswerte der
// Fototransistoren einlesen

diff = (lData [0] - lData [1]) - InitOffset;
if (diff < -5)
{
GoLeft();
}

else if (diff > 5)
{
GoRight();
}
/* else{ GoStraight();} */

}

while (1);
return 0;
}


Nunja...
Nach dem Einschalten schaltet der Roboter die Front-LED ein, wartet und fängt dann an im Kreis zu laufen (beide Back-LEDs scheinen zu leuchten, vll blinkt eine nur sehr schnell...)

Wenn ich nun ein weißes Blatt mit einer schwarzen Linie unterschiebe ... passiert nichts. Verschiedene Winkel wurden versucht, ohne Erfolg.

Das Komische: Vor den Ferien hat das Programm noch funktioniert... Nun geht es nicht mehr (ich habe soweit ich weiß auch nichts verändert).

An den Motoren liegt es jedenfalls nicht, ich hab ein kurzes Testprogramm geschrieben, dass den Roboter erst geradeaus, dann links, dann geradeaus, dann rechts und dann nochmal geradeaus fahren lässt... hat geklappt.

Woran könnte es noch liegen? Ein anderer aus der Gruppe meinte, die Kondensatoren müssten entladen werden...

Allerdings frage ich mich, ob es daran liegen könnte, dass der Asuro keine Isolierung um die Helligkeitssensoren hat....

Wäre froh, wenn mir jemand mitteilen könnte, ob ich Mist programmiert habe oder ob es an der Hardware liegt ;-)

radbruch
27.04.2009, 20:07
Hallo

Vielleicht sind die Batterien leer und MotorSpeed(70, 70) reicht nicht zum Drehen eines Motors?


// "Tischbeleuchtung"
FrontLED (ON);
LineData (lData); Hier würde ich eine kleine Pause einfügen. Selbst eine LED wird nicht schlagartig hell.

Nach Init() ist die StatusLED immer grün!

Gruß

mic

bugmenot
28.04.2009, 16:05
Okay, nun fährt der Asuro irgendeiner imaginären Linie auf dem Tisch nach... (sprich: er fährt wild hin und her und ich muss aufpassen dass er nicht vom Tisch fällt....).

Könnte das am Streulicht liegen? (Sprich: Muss ich die Lichtsensoren abisolieren?)
Oder ist der Asuro einfach "zu empfindlich" eingestellt (diff-Wert erhöhen?)

bugmenot
29.04.2009, 08:35
Übrigens:

Der Akku hat noch ~1,2 V Spannung, reicht das?? (Der Jumper ist gesteckt.).