PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linienverfolgung: nur der rechte Motor läuft



ZBot
10.11.2010, 19:58
Nach dem ich erst mal 4 Stunden erfolglos versucht habe zu compilieren nur um zu merken das ich den Compiler und Windows7 als Admin ausführen muss, habe ich verschiedene Linienverfolgungsprogramme nach einander auf geflashed.

einmal von hier: http://www.cs.hs-rm.de/~linn/vpdv0809/asuro2/Downloads.html

dann die liniendemo von der cd
bei beiden läuft einfach nur der rechte Motor hoch, ansonsten passiert nix. Und auch bei einm einfachen Programm wo nix weiter als MotorDir(FWD,FWD); MotorSpeed(100,100);while() return(0); in der main-Funktion drin steht läuft nur der rechte Motor.



Ausserdem hab ich noch das Programm von waste genommen, allerdings macht asuro dann garnix.

Mein erster Verdacht war das der linke Motor defekt oder extrem schwergäng ist, aber wenn ich das Selbsttest-Programm durchlaufen lasse funktioniert der auch.
Kann es daran liegen das ein Sensor Defekt ist? Aber müsste das dann nicht den Selbsttest unterbrechen? Und warum läuft nicht auch der motor bei einem einfachen Vorwärtsfahren.
Hat vielleicht jemand ähnliche Probleme gehabt und konnte sie lösen, ich bin für jede vernünftige Hilfe dankbar.

radbruch
10.11.2010, 20:20
Hallo

"MotorDir(FWD,FWD); MotorSpeed(100,100);while() return(0);"

Zeig doch mal bitte dein komplettes Testprogramm. Und sei nicht so zimperlich: MotorSpeed(200,200);


Kann es daran liegen das ein Sensor Defekt ist?Das wäre möglich. Mit dieser Funktion (aus der erweiterten asuro-Library) kannst du die Werte der Liniensensoren am Terminal anzeigen:


#include "asuro.h"

unsigned int data[2];

void PrintInt(int wert)
{ char text[6]=" ";
itoa(wert,text,10);
SerWrite(text,6);
}

int main(void)
{
Init();
FrontLED(ON); // LED einschalten
Sleep(100); // Warten bis LED sicher volle Helligkeit erreicht hat
LineData(data); // ADC warmlaufen lassen

while(1)
{
StatusLED(RED);
LineData(data); // aktuelle Helligkeitswerte einlesen

PrintInt(data[0]); // und zum Terminal senden
SerWrite(" ", 1);
PrintInt(data[1]);
SerWrite("\n\r", 2);
Sleep(255);
}
while(1);
return 0;
}(ungetestet)

Gruß

mic

markusj
10.11.2010, 20:22
Probiere Mal höhere Geschwindigkeitswerte, MotorSpeed(200,200). Vielleicht ist einer deiner Motoren tatsächlich etwas schwergängiger ...

mfG
Markus

ZBot
11.11.2010, 15:56
Danke für die Tips, ich hab heute dann noch mal dies hier mit FWD , RWD und beide jeweil mit 0 bzw. 200 Speed getestet.

#include "asuro.h"

int main (void)
{
Init();
MotorDir(FWD,FWD);
MotorSpeed(200,00);
while(1){}
return 0;
}

tja und da hat sich rausgestellt das der linke Motor FWD garnicht kann und RWD auch nur sehr schwer gängig. Nach einem bischen Balistol ist Rückwärts nicht mehr schwer gängig aber Vorwärts geht immer noch nicht.

markusj
11.11.2010, 20:52
Wenn deine Mechanik so schwergängig ist, solltest du die Achsen evtl. nochmal neu justieren. Hast du die Zahnräder auf die richtigen Achsen gesteckt?

mfG
Markus