schmelz den ausro ein...
Hallo Leute
Ich habe ein ziemlich merkwürdiges Problem mit meinem Asuro. Er scheint es mit Fahrbefehlen nicht mehr sehr genau zu nehemen. Nach langem Suchen habe ich den Code auf dieses winzige Schnippsel zusammengestaucht:
Soweit ich das verstehe, sollte der Roboter alternierend 3s fahren und dann 3s stehen. Das tut er aber nur manchmal. Er haltet immer den 3s Takt ein, aber manchmal machen die Motoren überhaupt nichts und manchmal funktioniert alles. An den Batterien kann es nicht liegen, da der Asuro extern gespiesen wird. Ein Hardwaremangel ist auch unwahrscheinlich, da der Selftest zuverlässig funktioniert.Code:#include "asuro.h" unsigned char SPEED_LEFT=255, SPEED_RIGHT=255; int TIME_FORD=500, TIME_TURN=500; void LongSleep(int msec) { int i; for (i=0; i<msec; i++) Sleep(72); } int main(void) { Init(); StatusLED(RED); while(1) { MotorDir(RWD,FWD); // vorwärtsfahren, motoren sind vertauscht, daher RWD... MotorSpeed (SPEED_LEFT,SPEED_RIGHT); LongSleep(3000); MotorSpeed (BREAK,BREAK); LongSleep(3000); } return 0; }
Ich bin mit meinem Latein am Ende, hat irgendwer eine Idee?
Ich wäre für Anregungen sehr dankbar
Illuminon
schmelz den ausro ein...
Hallo Illuminon,
Konnte es vielleicht sein das die Accu's oder Batterien nicht mehr ganz geladen sind?
Wenn die beide Motoren zugleich mit maximalen Speed (255) gestartet werden dann konnte es sein dass die Versorgungsspannung ein bischen heruntersturtzt und damit die Asuro aufs neu Booted/Aufstartet.
Wenn die Rote led Orange aufleuchtet ist die Asuro aufs neu gestartet worden.
Gruss
Henk
Diese ZeileZitat von Illuminonkönte der Fehler sein.Code:MotorSpeed (BREAK,BREAK);
Korrekt wäre
Gruß DetlevCode:MotorDir (BREAK,BREAK); MotorSpeed(0,0);
Für was dann BREAK, wenn man die Geschwindigkeit sowieso runterdrehen muss?
Es könnte übrigens auch sein, dass die Motoren einfach wackeln und sich dann manchmal so fest an die Zahnräder drandrücken, dass sie einfach nicht mehr drehen - aber das hört man dan auch an so einem leisen PIEPEN.
o
L_
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!
http://de.youtube.com/watch?v=qV1cZ6jUeGE
Man kann auch einfach die Geschwindigkeit auf 0 setzen, mit MotorDir(BREAK,BREAK) laufen die Moteren nicht so lange nach, da die Motoren über die H-Brücke quasi "kurzgeschlossen werden" - MotorbremseZitat von Spessi
Gruß Detlev
Hallo Leute
Vielen Dank für die zahlreichen Antworten. Zuerst einmal vorweg: Es funktioniert wieder... Es ist mir allerdings komplett schleierhaft warum. Ich habe den Code Schritt für Schritt wieder zusammengesetzt, bis ich beinahe den identischen Code wieder hatte. Der einzige Unterschied lag in der Position der Breaks:
Spannungsprobleme können es nicht sein, da der Roboter über ein Powersupply versorgt wird und da wir die Spannungen am Oszilloskop überwacht haben. Auch am Getriebe kann es nicht liegen, da wir in unserem Roboter nur noch die Asuroplatine verwenden. Das PWM Signal geht auf Maxonmotoren und mit Schneckentrieb auf die Räder. Die Aufhängung ist CNC gefrässt und daher sehr präzis.Code:for(i=0;i<100;i++) { MotorDir(FWD,FWD); MotorSpeed (SPEED_LEFT,SPEED_RIGHT); LongSleep(3000); MotorSpeed (BREAK,BREAK); } MotorSpeed (BREAK,BREAK); // irgendwie scheint es dieses Break zu brauchen...
Ich traue langsam dem Chip nicht mehr. Nebst dem Motorenproblem hatten wir auf einmal noch ein zweites. Die SerRead Funktion wollte einfach beim zweiten Durchlauf nichts mehr einlesen. Und dies in einem Codeabschnitt, den ich nie angerührt hatte und der immer einwandfrei gelaufen ist. So mysteriös wie das Problem gekomment war, so still verschwand es auch wieder. Jetzt funktioniert im Moment alles, aber bezüglich des Fehlers tappe ich im Dunkeln...
Trotzdem danke für eure Hilfe
Gruss
Illuminon
@Illuminon
Wenn ich deinen letzten Beitrag richtig interpretiere, dann hast du den ASURO 'etwas' umgebaut. Ist es möglich, dass du eventuell an der Platine irgendwo eine Leiterbahn 'gekillt' hast und da ein Wackelkontakt entstanden sein könnte?
Für so einen Fall könnte ich mir 2 Fehlermöglichkeiten vorstellen:
1: Wurde schon mit dem Reset bei zu kleiner Spannung aufgeführt -> Gelbe LED leuchtet zwischendurch?
2: Zeitweiliger Kurzschluss in der Motoransteuerung?
Hoffentlich muss dein ASURO nicht zum Arzt.
@super_castle
Was ist los mit dir? Nur ein so kurzer 'aufbauender' Kommentar?
Lieber Asuro programieren als arbeiten gehen.
Lesezeichen