- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: [GELÖST]Asuro mit Servogreifer fährt nur Rückwärts

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von pinsel120866
    Registriert seit
    18.12.2007
    Ort
    Hohenems
    Alter
    58
    Beiträge
    847

    [GELÖST]Asuro mit Servogreifer fährt nur Rückwärts

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich habe meinen Asuro mit einem Greifer ausgestattet, der von einem Servo bewegt wird.
    Ich habe nun das Problem dass der Asuro nur rückwärts fährt 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 vorwärts fahren. Aber er fährt eine Sekunde rückwärts - WARUM?

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    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
    Bild hier  
    Atmel’s 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
    58
    Beiträge
    847
    Hallo Radbruch, danke für die Rückmeldung.

    es hängt 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 führt rückwärts

    Ich möchte nur den Greifer öffen (also Servo auf Vollausschlag drehen) und danach 1s verwärtsfahren. Ich vermute allerdings dass es gar nicht so weit kommt bis MotorDir(FWD,FWD) erreicht wird weil das Programm vorher "abstürzt". Kannst du mir bitte sagen, ob void(servo) so stimmt bzw. wie du es machen würdest?

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    es hängt 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 vorwärts fährt.

    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 vorwärts fahren kann. Vielleicht ist die H-Brücke oder deren Ansteuerung defekt.
    Bild hier  
    Atmel’s 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
    58
    Beiträge
    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 Stück 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 Stück zurück
    	  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 Stück zurück
    	  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 Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Herzlichen Glückwunsch. Der Greifer sieht toll aus :)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.664
    Heul, schnief, schluchz, grein - und ich muss mir das Yoghurt immer noch selber aus dem Kühlschrank holen. MEIN asuro kann so etwas nicht.

    Gratulatioooooon.

    Und im Sommer zwickt er dann die Mücken 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
    58
    Beiträge
    847
    Danke für die guten Wünsche. Naja, der Greifer ist "nur" aus Holz - war aber ein netter kleiner Bastelnachmittag mit meinen Kindern.

    @Radbuch - ohne deine super Unterstützung letztes Wochenende wäre ich nicht so weit, danke nochmals. Der Sechsbeiner rückt näher, 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 gehörige Kraft. Wieder eine Funktion mehr!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests