- 3D-Druck Einstieg und Tipps         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: Projekt "Malender RP6" Programierhilfe gesucht !!!

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Anzeige

    Powerstation Test
    Ich habe ja auch nix für die M32 umgeändert ...

    ich hab noch gar kein Programm gehabt wenn man es genau nimmt ...

    außerdem gehts da nur ums verstehen ...

    hat man es einmal verstanden ist es kein Problem mehr

    Lass es. ... kann es nur schlimmer werden.
    ... danke für den Zuspruch

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2009
    Ort
    Stuttgert
    Alter
    29
    Beiträge
    14
    @Xandi11

    Danke erst mal !!! Das Programm geht ziemlich gut.
    Aber wie kann ich den Servoausschlag verändern ?

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    indem du die variable imp änderst

    15 entspricht ca. der Mittelstellung
    <15 geht das Servo nach links
    >15 geht das Servo nach rechts

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2009
    Ort
    Stuttgert
    Alter
    29
    Beiträge
    14
    Habe jetzt ein kleines Programm geschrieben.
    habe nur das problem, dassder servo nach dem stellen auf den mittelpunkt nur noch "herumzuckt" !!
    Was mache ich falsch ??
    Code:
     #include"RP6RobotBaseLib.h" 
    
    
    void servo_scl (uint8_t imp) 
       { 
        DDRC |= SCL; 
        PORTC |= SCL;    
        sleep(imp);          
        PORTC &= ~SCL; 
        sleep(200-imp);        
       } 
    
    
    void servo(void)
    {
    uint8_t i=0, x; 
        
       i=0; 
       x=10; 
       
      while(i<10) //200ms 
          { 
          servo_scl(x); 
          i=i+1; 
          } 
    	  
       x=x+1; 
          if (x>=20) 
          { 
          x=10; 
          } 
          i=0;
       } 
      void servol(void)
      {
    uint8_t i=0, x; 
        
       i=10; 
       x=0; 
       
      while(i>15) //200ms 
          { 
          servo_scl(x); 
          i=i+1; 
          } 
    	  
       x=x+1; 
          if (x<=20) 
          { 
          x=10; 
          } 
          i=0;
       } 
    int main(void) 
    { 
       initRobotBase(); 
      
       uint8_t i=0, x; 
        
       i=0; 
       x=10; 
       
       powerON();
        
       while(true) 
       { 
    servo();
    move(70, BWD, DIST_MM(150), BLOCKING);
    servol();
    servo();
    move(70, FWD, DIST_MM(150), BLOCKING);
    servol();
       } 
       
       
    	
       while(true) 
       { 
       writeString_P("\n Endlosschleife"); 
       } 
        
       return 0; 
    }

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Sorry, dass ich solange nicht zurückgeschrieben habe ...

    Auf die Schnelle ist mir nur aufgefallen, dass du im servo1 vermutlich x und i vertauscht hat.
    Denn du gibtst dem Servoprogramm die Position 0 über.

    Falls das nicht der Fall ist, schreib nochmal ...


    Edit:

    Außerdem solltest du zwischen servo1() und servo() eine Pause einbauen.
    Damit kannst du sichergehen, dass das Servo den Bewegungen folgen kann und vorallem du auch etwas siehst.

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2009
    Ort
    Stuttgert
    Alter
    29
    Beiträge
    14
    hi, schön das du wieder schreibst.
    Bin aber nicht wewiter gekommen habe den code zwar etwas abgeändert aber immer noch der gleiche effekt.

    Könntest du ihn vielleicht mal auf deinem RP6 ausprobieren ?

    Code:
    #include"RP6RobotBaseLib.h" 
    
    
    void servo_scl (uint8_t imp) 
       { 
        DDRC |= SCL; 
        PORTC |= SCL;    
        sleep(imp);          
        PORTC &= ~SCL; 
        sleep(200-imp);        
       } 
    
    void servo1(void)
    {
     uint8_t i=0, x; 
        
       i=0; 
       x=10; 
       
          while(i<10) //200ms 
          { 
          servo_scl(x); 
          i=i+1; 
          } 
       x=x+1; 
       
       move(70, BWD, DIST_MM(150), BLOCKING);
       
          if (x<=15) 
          { 
          x=15; 
          } 
          i=0; 
    }
    	  
    void servo2(void)
    {
     uint8_t i=0, x; 
        
       i=0; 
       x=10; 
       
          while(i<10) //200ms 
          { 
          servo_scl(x); 
          i=i+1; 
          } 
       x=x+1; 
       
       move(70, FWD, DIST_MM(150), BLOCKING);
       
          if (x<=15) 
          { 
          x=15; 
          } 
          i=0;
    } 
    
    int main(void) 
    { 
       initRobotBase(); 
    
        powerON();
    
       while(true) 
       { 
    	servo1();
    	servo2();
       } 
    
    
       while(true) 
       { 
       writeString_P("\n Endlosschleife"); 
       } 
        
       return 0; 
    }

  7. #17
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    So vielleicht?
    Code:
    // Servoansteuerung2: Wir erzeugen zwei Impulse im Wechsel mit Fahren 22.1.2010 mic
    // sleep(1) verzögert ca. 0,1ms, 50 Impulse dauern ca. 1 Sekunde
    // Servo an SCL (PC0) (XBUS Pin 10)
    
    #include "RP6RobotBaseLib.h"
    
    uint8_t c; // allgemeine 8-Bit-Variable (ein Char)
    
    int main(void)
    {
    	initRobotBase();
    	powerON();
    
    	DDRC |= SCL;
    	PORTC &= ~SCL;
    	
    	while(1)
    	{
    	   for(c=0; c<50; c++)  // 50 Impulse senden, das dauert ca. 1 Sekunde
    		{
    			PORTC |= SCL;		// Impulsstart
    	   	sleep(12);			// 1,2ms warten = Servoposition 1
    	   	PORTC &= ~SCL; 	// Impulsende
    	   	sleep(190);			// 19ms warten
    		}
    
    		move(70, BWD, DIST_MM(150), BLOCKING);
    
    		for(c=0; c<50; c++)
    		{
    			PORTC |= SCL;
    	   	sleep(18);			// 1,8ms warten = Servoposition 2
    	   	PORTC &= ~SCL;
    	   	sleep(190);
    		}
    
    	   move(70, FWD, DIST_MM(150), BLOCKING);
    
    	}
    	return(0); // wird nie erreicht
    }

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2009
    Ort
    Stuttgert
    Alter
    29
    Beiträge
    14
    Ich habe den Fehler jetzt gefunden !!! \/
    Der Servo war schuld, habe meinen großen jetzt durch einen miniservo ersetzt und läuft perfekt. Hatte den Modelcraft RS-2 von Conrad, wahrscheinlich nahm er einfach zu viel Strom auf.

    Gruß fabi

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.11.2009
    Alter
    31
    Beiträge
    188
    Dann bräuchtest du ne externe Stromversorgung ...

    an +5V (rot) kommt der Plus des Akkus
    an GND (schwarz) kommt der Minus des Akkus und des RP6s
    und der Gelbe/Orange kommt auf den Pin am Roboter

  10. #20
    Erfahrener Benutzer Roboter Experte Avatar von Virus
    Registriert seit
    15.09.2009
    Ort
    Duisburg
    Alter
    29
    Beiträge
    527
    entweder mit Spannungsregler IC 7805 oder mit ein paar dioden in reihe

    da die betriebspannung mit 4-6volt angegeben ist, ist es nich das wahre ihn an die akkus mit 6-8volt zu klemmen
    Mit hochohmigen Grüßen
    Virus

    Es lebe der Digitalkäse !

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress