-
        

Ergebnis 1 bis 8 von 8

Thema: [GELST]Asuro mit Servogreifer fhrt nur Rckwrts

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beitrge
    847

    [GELST]Asuro mit Servogreifer fhrt nur Rckwrts

    Anzeige

    Hallo,

    ich habe meinen Asuro mit einem Greifer ausgestattet, der von einem Servo bewegt wird.
    Ich habe nun das Problem dass der Asuro nur rckwrts fhrt nachdem ich den Greifer bewege:
    Code:
    #include "asuro.h" 
    
    unsigned char i, servo_stellzeit; 
    
    void servo(unsigned char winkel) 
    { 
       unsigned int count=0; 
       do
       { 
          count++; 
    
    	  { 
          PORTB |= (1 << PB0); 
          Sleep(winkel); 
          } 
          PORTB &= ~(1 << PB0); 
    
          Sleep(255-winkel); 
       }
       while (count<servo_stellzeit); 
    } 
    
    int main(void) 
    { 
    
       Init(); 
    
       { 
          servo_stellzeit=10; 
          for (i=18; i<80; i+=2) servo(i);
    	  MotorDir(FWD,FWD);
    	  MotorSpeed(120,120);
    	  Msleep(1000);
    	  MotorSpeed(BREAK,BREAK);
       }
       return 0; 
    }
    Folgender Ablauf: Greifer ffnen - 1 Sekunde vorwrts fahren. Aber er fhrt eine Sekunde rckwrts - WARUM?

  2. #2
    Moderator Robotik Visionr Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beitrge
    5.783
    Blog-Eintrge
    8
    Hallo

    Was macht dein asuro wenn du den Servoteil auskommentierst:

    //for (i=18; i<80; i+=2) servo(i);

    oder wenn du eine andere Drehrichtung angibst:

    MotorDir(RWD,RWD);

    Vor dem return fehlt auch die obligatorische Endlosschleife:

    while(1);
    return 0;


    btw: Das ist aber keine 20ms Wiederholrate:

    Sleep(255-winkel);

    Ich kann es leider im Moment nicht selbst testen...

    Gru

    mic

    Atmels products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beitrge
    847
    Hallo Radbruch, danke fr die Rckmeldung.

    es hngt garantiert mit meiner Servofunktion zusammen. Hier habe ich vermutlich ein Timerproblem oder so was. Auch MotorDir(RWD,RWD) macht das Gleiche. Ich habe auch den Servoteil auskommentiert - Asuro fhrt rckwrts

    Ich mchte nur den Greifer ffen (also Servo auf Vollausschlag drehen) und danach 1s verwrtsfahren. Ich vermute allerdings dass es gar nicht so weit kommt bis MotorDir(FWD,FWD) erreicht wird weil das Programm vorher "abstrzt". Kannst du mir bitte sagen, ob void(servo) so stimmt bzw. wie du es machen wrdest?

  4. #4
    Moderator Robotik Visionr Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beitrge
    5.783
    Blog-Eintrge
    8
    es hngt garantiert mit meiner Servofunktion zusammen. Hier habe ich vermutlich ein Timerproblem oder so was.
    Das kann ich mir nicht vorstellen. Dein Programm nutzt die Timer der Lib ohne sie zu beeinflussen. BP0 ist die StatusLED und hat auch keinen Einfluss auf die Motoransteuerung, zumal dein asuro auch bei auskommentierter Servofunktion nicht vorwrts fhrt.

    Bist du sicher das die Programmvarianten mit den nderungen auch geflash wurden? Was passiert wenn du das Programm mit nicht angeschlossenem Servo startest?

    Teste mal mit einem anderen Programm ob dein asuro berhaupt noch vorwrts fahren kann. Vielleicht ist die H-Brcke oder deren Ansteuerung defekt.

    Atmels products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beitrge
    847

    Asuro mit Greifer

    Ich habe nun herausgefunden, woran es liegt: Nach jeder Greiferbewegung braucht der ASURO eine kurze Pause, keine Ahnung warum. Das Programm sieht nun so aus:
    Code:
    #include "asuro.h" 
    
    unsigned char i, servo_stellzeit; 
    
    void servo(unsigned char winkel) 
    { 
       unsigned int count=0; 
       do
       { 
          count++; 
    
          if(winkel)
    	  { 
          PORTB |= (1 << PB0); 
          Sleep(winkel); 
          }
    	  PORTB &= ~(1 << PB0); 
    
          Sleep(255-winkel); 
       }
       while (count<servo_stellzeit); 
    } 
    
    int main(void) 
    { 
    
       Init(); 
       DDRB |= (1 << PB0); 
    
       { 
    	  servo_stellzeit=12;				//Servozeit einstellen
    	  MotorSpeed(10,10);				//kurze Pause
    	  Msleep(1);  
          MotorDir(FWD,FWD);				//Kleines Stck vor
    	  MotorSpeed(120,120);
    	  Msleep(500);
    	  MotorSpeed(BREAK,BREAK);
          for (i=15; i<85; i+=2) servo(i);	//Greifer zumachen
    	  MotorSpeed(10,10);				//Kurze Pause
    	  Msleep(1); 
    	  MotorDir(RWD,RWD);				//Kleines Stck zurck
    	  MotorSpeed(120,120);
    	  Msleep(500); 
    	  MotorSpeed(BREAK,BREAK);
    	  MotorSpeed(135,0);				//Vierteldrehung nach links
    	  Msleep(1000);
    	  MotorSpeed(BREAK,BREAK);
          for (i=75; i>17; i-=2) servo(i);	//Greifer aufmachen
    	  MotorSpeed(10,10);				//Kurze Pause
    	  Msleep(1);
    	  MotorDir(RWD,RWD);				//Kleines Stck zurck
    	  MotorSpeed(120,120);
    	  Msleep(500); 
    	  MotorSpeed(BREAK,BREAK);
    	  MotorSpeed(0,135);				//Vierteldrehung nach rechts
    	  Msleep(1000);
    	  MotorSpeed(BREAK,BREAK);
    	  MotorSpeed(10,10);				//Kurze Pause
    	  Msleep(1);
    	  MotorDir(FWD,FWD);				//2s Weiterfahren
    	  MotorSpeed(120,120);
    	  Msleep(2000);
    	  MotorSpeed(BREAK,BREAK);
       }
    }
    Den Ablauf habe ich hier dokumentiert:
    http://www.youtube.com/watch?v=wQY2dqMZH3Y
    Noch 2 Fotos:

  6. #6
    Moderator Robotik Visionr Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beitrge
    5.783
    Blog-Eintrge
    8
    Herzlichen Glckwunsch. Der Greifer sieht toll aus :)

    Atmels products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Erfahrener Benutzer Robotik Visionr Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgu
    Beitrge
    7.557
    Heul, schnief, schluchz, grein - und ich muss mir das Yoghurt immer noch selber aus dem Khlschrank holen. MEIN asuro kann so etwas nicht.

    Gratulatioooooon.

    Und im Sommer zwickt er dann die Mcken aus? Hmmm, gesteuert von einem US-Sensor *gggg*. Und Du kannst das dann auch vom Handy aus bedienen (BT) !
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    51
    Beitrge
    847
    Danke fr die guten Wnsche. Naja, der Greifer ist "nur" aus Holz - war aber ein netter kleiner Bastelnachmittag mit meinen Kindern.

    @Radbuch - ohne deine super Untersttzung letztes Wochenende wre ich nicht so weit, danke nochmals. Der Sechsbeiner rckt nher, zumal ich mit der Erweiterung 3 Servos gleichzeitig steuern kann. Ich habe nun 4xAA - Akkus drin.

    @Oberallgeier - "zwicken" ist der richtige Ausdruck, der Servo hat gehrige Kraft. Wieder eine Funktion mehr!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •