PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro "hängt" sich auf



Ollowain
28.10.2009, 20:14
Hallo folgendes Problem.
Der ASURO fährt ne linie nach. Das ganze programm läuft wunderbar. Wenn er die Line verliert findet er sie mit z.b. MotorSpeed(220,0); wieder.
Jetzt wollte ich den einen Motor (im Moment 0) rückwärts drehen lassen damit er schneller wieder zurückkommt. Jetzt hägt er sich aber nach einiger zeit auf (zwischen 30sec und 1min). Dabei dreht er sich entweder wie wild um die eigene achse oder fährt einfach gerade aus. Kurz gesagt:
Ohne rückwärtsgang ist alles bestens.
Mit rückwärtsgang spinnt der Asuro total.
Hab schon versucht 10ms davor und danach sleep hilft aber nichts.
Ist es vlt zu viel für den Asuro?
Ähnliches Problem wie BackLED und Odometrie?
lg Ollo

ps.: möchte mein komplettes programm nur ungern hier veröffentlichen um der kreativität einiger benutzter nicht im wege zu stehn.

Lync
28.10.2009, 20:55
ps.: möchte mein komplettes programm nur ungern hier veröffentlichen um der kreativität einiger benutzter nicht im wege zu stehn.

poste bitte den programm-ausschnitt in dem der fehler auftritt, dann kann dir sicher besser geholfen werden.

Ollowain
28.10.2009, 22:00
okay:



else if ((T9>X) && (T10>Y)) // Hier verliert der Asuro die Linie
{
{
MotorDir(RWD,FWD);
MotorSpeed(100,250);
Sleep(72);
}


im prinzip isses das. wenn beide vorwärts drehen is es kein problem aber so ...

radbruch
28.10.2009, 22:15
Hallo

Wenn die Drehrichtungen der Motoren bei voller Fahrt geändert werden, ist ihre Stromaufnahme sehr groß. Vielleicht bricht dabei die Bordspannung ein oder Störimpulse irritieren den Prozessor. Besser wäre die Verwendung einer Bremsrampe:

#include "asuro.h"

void Motor(unsigned char richtung, unsigned char geschwindigkeit, unsigned int dauer)
{
if(geschwindigkeit) StatusLED(YELLOW); else StatusLED(RED);
MotorDir(richtung,richtung);
MotorSpeed(geschwindigkeit,geschwindigkeit);
while(dauer--) Sleep(72); // 36 bei neueren Libraries für 1ms ;)
}

int main(void)
{
Init();
while(1)
{
Motor(FWD,200,1000); // Vorwärts mit Speed 200 während einer Sekunde
Motor(BREAK,0,100); // Bremsen mit Speed 0 während 0,1 Sekunden
Motor(RWD,200,1000); // Rückwärts mit Speed 200 während einer Sekunde
Motor(BREAK,0,100); // Bremsen mit Speed 0 während 0,1 Sekunden
}
return(0);
}(nicht getestet)

Die Bremszeit sollte so groß sein, dass man beim Vorwärts-/Rückwärtspendeln einen kurzen Stillstand erahnen kann.

Ich hoffe, das ist der richtige Ansatz.

Gruß

mic

Ollowain
29.10.2009, 08:56
super danke, werd ich heut abend gleich ausprobieren

Ollowain
29.10.2009, 15:50
funktioniert nicht... .:(
Hab zwar nicht dein Programm benutzt sondern was eigenes geschrieben hätte aber genauso funktioniert. Leider liegt es wohl nicht dadran.
Früher oder später hängt er sich wieder auf.
Weiß wirklich nicht was ich noch verändern könnte. Muss mich wohl damit abfinden dass der schnell wechsel von FWD zu RWD zu viel für den ASURO is.
lg Ollo

ps.: vlt findet ja doch noch jemand was, dann bitte hier posten ;-)

Valen
29.10.2009, 20:40
Naja, das ist ein ganz kleines code-schnipsel. Da kan man nichts viel uber sagen. Ich verstehe du möchtest es nicht ganz an das forum publikum veröffentlichen, aber ein bisschen mehr wurde vielleicht helfen.

gateway
30.12.2009, 14:20
Hallo,

ich hab annähernd das selbe Problem.
Immer wenn ich Programme schreibe die die Motoren rückwärts laufen lassen dann "hängt" sich der Asuro quasi auf. Allerdings nicht immer mit Voltage Low sondern nur ab und zu. Dann auch mal wieder direkt im Retourgang, dann mal wieder ein paar Befehle weiter aber immer nach ca. 30 sek. bis 1 min.
Ich habe bereits R11,R12,R13 kontrolliert und es hat auch bis gestern (also seit 24.Dez weils ein Weihnachtsgeschenk war) gut funktioniert. Ab und zu funktioniert das Programm nach dem Aus und Einschalten wieder und ab und zu bleibt der Asuro in einer gerade Vorwärtsbewegung hängen und ich muss ihn neu flashen. Dann funktioniert es wieder für die angegebene Zeit.

Ich hab auch schon versucht den Motor immer bei der Richtungsänderung zuerst auf 0 zu stellen und dann die Richtung umzukehren, allerdings funktioniert das genausowenig. Auch ein kurzes Delay auf 0 bringt nichts.
Ich hab keine Ahnung mehr, was ich noch tun kann.

Weiß vielleicht hier irgendjemand etwas?

Merci Grande

Liebe Grüße

P.S.: Nachtrag: Wenn ich egal welches Programm die MotorSpeed nicht über 120 setze dann funktioiert alles. Komisch oder? Ich seh mich da grad gar nicht raus....