- LiFePO4 Speicher Test         
Seite 3 von 5 ErsteErste 12345 LetzteLetzte
Ergebnis 21 bis 30 von 44

Thema: Projekt: Asuro mit Greifern

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Anzeige

    Praxistest und DIY Projekte
    Ein servo braucht einer puls länge zwischen 0,5 und 1,5 milisekunden das sich ungefehr 50 mal wiederholt (pro sekunde). Jeder sleep tick dauert 1/72000 von einer sekunde. Deshalb ist deine
    Code:
    for(i=1;1>1;i++){Sleep(1);}
    schleife viel zu kurz.

  2. #22
    Benutzer Stammmitglied
    Registriert seit
    03.02.2010
    Beiträge
    32
    Das ist er!!

    Gruß Giftzwerg
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken k640_asuro_mit_greifern_2.jpg  

  3. #23
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Das ist einer pfad auf deiner festplatte. Dammit kannst du kein bild auf dan internet zeigen. Du muss es erst irgendwo hochladen.

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2009
    Ort
    NRW
    Beiträge
    562
    Hallo

    Ich meinte eher die Anschlussstellen des Servos also wo du welches Kabel angbracht hast.

    Sieht aber schonmal fein aus; )

    Gruß Thund3r

  5. #25
    Benutzer Stammmitglied
    Registriert seit
    03.02.2010
    Beiträge
    32
    Danke
    bloß geht das Programm für den Servo immer noch nicht!!

    Gruß Giftzwerg

  6. #26
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Hast du das program bis jetzt geändert. Bitte zeigen.

  7. #27
    Benutzer Stammmitglied
    Registriert seit
    03.02.2010
    Beiträge
    32
    Nein hab ich nicht wirklich. Ich hab nur am Sleep und an der For-Schleife rumprobiert.

    Gruß Giftzwerg

  8. #28
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2009
    Ort
    NRW
    Beiträge
    562
    Hallo

    Hast du nich meine Methode ausprobiert?

    Gruß Thund3r

  9. #29
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Ok, diesen code geht eigentlich auch nicht. Ich habe das bist jetzt nicht aufgemerkt. Meine verzeihung dafur.

    Code:
    ...
       for(i=1;1>1;i++){Sleep(1);}
    ...
    Was macht er hier? Er geht in einer schleife das i hochzählt. Es startet mit i gleich 1. Bis 1 ("eins") grösser ist als 1 ("eins"). Nah, das wird naturlich nie passieren. Und deshalb wird Sleep(1) immer wiederhölt. Also ist das einer art von endloss-schleife. In deine code auf den 1ste seite von diesen thread söllte er nie die backleds ausschalten können. Hat er das tätsachlich auch nicht getan?

    Hier ist ein beispiel wie das klappen soll. Ich habe das aber noch nicht mit einer compiler ubersetzt. Könnte deshalb fehler drin stehen. Und es wurde auch schöner sein wen das ganze als einer funktion arbeitet. Nun muss du fur jeder andere winkel wert eine neue hex datei compilieren.

    Code:
    /* Ein Pegel-breidte-modulation pegel (pulse-width-modulation oder PWM aufs Englisch) fur ein servo söll sich (ungefehr) 50 mahl pro sekunde wiederholen. */
    /* Den Asuro timer fur Sleep hat einer takt von 72000 zeit-einheiten pro sekunde. */
    /* Also ein PWM pegel soll 1440 Sleep zählen später anfangen dan der letzte pegel angefangen hat. */
    /* Den PWM Pegel dauert 1 millisekunde fur völlig links (mindestens wert), oder 72 Sleep zählen fur Asuro. */
    /* Den PWM Pegel dauert 2 milisekunden fur völlig rechts (maximal wert), oder 144 Sleep zählen fur Asuro. */
    /* Nach dem ablauf von den pegel söllte der BackLEDS ausgeschalted bleiben bis der nächste PWM pegel started. */
     
    
    #include "asuro.h" 
    
    int main(void) 
    {
       int Winkel=0; /* den semi-drehwinkel wert, zwisschen -36 und 36, 0 ist den mittelstand. Den wirkliche winkel in grad ist aber abhängig von den drehwinkelspecifikationen der servomotor. Grössere auflössung geht nicht mit den Sleep Function bei dem Asuro./
    
       int AnSleep=0; /* Den zeit in Sleep zahlen das den servo signal hoch/an ist. */ 
       int AusSleep=0; /* Den warte-zeit zwisschen das ende einer pegel und den start den volgende pegel. Also den dauer dass das servo signal niedrig/aus ist. */
      
       int k=0,r=0; /* einiger (schleife) zahler fur Sleep*/
    
       Init();
       BackLED(OFF,OFF);
    
       AnSleep=72+36+Winkel; /* 72: mindestens ein milisekunde fur völlig rechts, */
                            /* 36: von völlig rechts bis 0 stand, */
                            /* Winkel: ein bisschen mehr oder weniger fur das winkel, kan zwischen -36 und 36 sein */ 
    
       AusSleep=1440-AnSleep; /* 1440: anzahl von Sleep pro PWM wiederholung */
    
       /* Den AusSleep werden wir aufteilen in ein kurzes stuckchen (zähler "r"), und eine langeres teil von mehrfache Sleep(255); anrufen (zähler "k") */
    
       k= AusSleep/255; /* wie oft muss man Sleep(255) warten bis mann in die nähe von AusSleep kommt? Kein rest-wert weil es integer werten sein. */
    
       r= AusSleep - k*255;  /* Den rest warte zeit dammit wir eine richtige 50 Hz wiederhollungfrequenz haben. */
    
      /* Den oben ausgerechnette variabelen unter den BackLED(OFF,OFF); mussen wieder neu ausgerechnet werden wenn du irgendwo im mitten dein program die winkel wert ändern möchtest. */
    
      /* Ok, hier gehts die Pegel wiederhollungs-schleife */
    
      While(1){
         BackLED(ON,ON); /* !!! nur die BackLED seite wo ein servo angeschlössen ist muss an. Den andere kann aus bleiben. !!! */ 
         Sleep(AnSleep); /* Backled/PWM-pegel an! */
         BackLED(OFF,OFF);  /* PWM-pegel hat lang genug gedauert, entsprechent der winkel wert */  
         for(i=0;i>k;i++){
           Sleep(255);
         }	/* k mal Sleep(255) warten */
         Sleep(r);          /* ein bisschen länger warten dammit den PWM-pegeln jeder 20milisekunden wiederholen */
    
      }	/* Ende von einer PWM pegel, wiederhole das immer in diesem beispiel.*/
    
       while(1); /* Darf es niemahls erreichen, aber um sonnst */
       return 0; 
    }

  10. #30
    Benutzer Stammmitglied
    Registriert seit
    03.02.2010
    Beiträge
    32
    Ja hab. Aber irgendwie krieg ich das nicht hin. Troßdem danke Thund3r.

    Gruß Giftzwerg

Seite 3 von 5 ErsteErste 12345 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress