PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motoren streiken



Hansi41
15.01.2008, 20:04
Hallo,
ich habe folgendes Problem mit meinem ASURO:
Meine Motoren drehen sich nicht richtig bei der Vorwärtsbewegung im folgenden Programm



#include "asuro.h"
#define STOP 50
/*asuro kann einem abgrund mittels der liniensensoren ausweichen und hindernissen mittels der kollisionstaster*/

int main(void)
{

while(1)
{

unsigned int lineData[2]; //array für die daten der liniensensoren
unsigned char running = TRUE;
unsigned char i; //laufvariable für die for-schleifen
unsigned char taste=0; //nimmt den wert der kollisionstaster auf

FrontLED(ON);
Sleep(255); //kurze pause, damit linedata die richtigen werte erfasst
LineData(lineData);

PollSwitch();
Sleep(50);
PollSwitch();
Sleep(50);
PollSwitch();
Sleep(50);
taste = PollSwitch();


if ((lineData[0] > STOP) && (lineData[1] > STOP) && (taste == 0)) //vorwärts falls kein hinderniss und kein abgrund
{
MotorDir(FWD,FWD);
MotorSpeed(255,255);
}
else //wenden falls abgrund
{
MotorSpeed(0,0); //stop
BackLED(ON,ON);
FrontLED(OFF);
StatusLED(RED);
Sleep(255);
for(i=0; i<100; i++) //kurz zurueck
{
MotorDir(RWD,RWD);
MotorSpeed(190,190);
Sleep(255);}

MotorSpeed(0,0);

for(i=0; i<170; i++) //wenden
{
MotorDir(FWD,RWD);
MotorSpeed(120,120);
Sleep(100);
}
MotorSpeed(0,0);
BackLED(OFF,OFF);
FrontLED(ON);
StatusLED(GREEN);
}

Sleep(100);
}
return 0;
}

Ich habe den Strom an den Motoren gemessen, hier ergab sich ein Wert von 1,45 V. Könnt ihr mir bei meinem Problem helfen?

mfg Hans
PS: Ein Video kommt auch noch......

sloti
15.01.2008, 22:40
Hi Hans,
was genau meinst du mit "die Motoren drehen nicht richtig"? Klemmt vllt das Getriebe? Ansosnsten wird es wahrscheinlich mal wieder ein Problem an der H-Brücke sein. Wenn beide absolut gar nichts machen, wäre dass wohl ein zichen für ein kaputtes Gatter. Du müsstest wohl noch etwas genauer von deinem Problem berichten. Aber wir können ja auch nochmal auf das Video warten.

mfg
Erik

radbruch
16.01.2008, 08:35
Hallo Hans

Init() fehlt in main() for dem while(1):

#include "asuro.h"
#define STOP 50
/*asuro kann einem abgrund mittels der liniensensoren ausweichen und hindernissen mittels der kollisionstaster*/

unsigned int lineData[2]; //array für die daten der liniensensoren
//unsigned char running = TRUE;
unsigned char i; //laufvariable für die for-schleifen
unsigned char taste=0; //nimmt den wert der kollisionstaster auf

int main(void)
{
Init();
while(1)
{
FrontLED(ON);
Sleep(255); //kurze pause, damit linedata die richtigen werte erfasst
LineData(lineData);

PollSwitch();
Sleep(50);
PollSwitch();
Sleep(50);
PollSwitch();
Sleep(50);
taste = PollSwitch();


if ((lineData[0] > STOP) && (lineData[1] > STOP) && (taste == 0)) //vorwärts falls kein hinderniss und kein abgrund
{
MotorDir(FWD,FWD);
MotorSpeed(255,255);
}
else //wenden falls abgrund
{
MotorSpeed(0,0); //stop
BackLED(ON,ON);
FrontLED(OFF);
StatusLED(RED);
Sleep(255);
for(i=0; i<100; i++) //kurz zurueck
{
MotorDir(RWD,RWD);
MotorSpeed(190,190);
Sleep(255);
}

MotorSpeed(0,0);

for(i=0; i<170; i++) //wenden
{
MotorDir(FWD,RWD);
MotorSpeed(120,120);
Sleep(100);
}
MotorSpeed(0,0);
BackLED(OFF,OFF);
FrontLED(ON);
StatusLED(GREEN);
}
Sleep(100);
}
return 0;
}

Gruß

mic

sloti
16.01.2008, 13:23
Ich schäme mich das nicht erkannt zu haben. ](*,) .

damaltor
16.01.2008, 15:35
oh oh.. aber das kenne ich, da habe ich mal eine woche für gebraucht das zu finden...

Hansi41
16.01.2008, 20:41
hallo,
vielen dank für eure mühe!
es funktioniert jetzt und mein asuro fährt endlich richtig...
hier ist alerdings nocheinmal das video..