- Labornetzteil AliExpress         
Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte
Ergebnis 41 bis 50 von 55

Thema: Zwei 550er Motoren mit RP6 ansteuern (Help)

  1. #41
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    Anzeige

    Powerstation Test
    Hi,

    sry radbruch aber ich muss dir widersprechen.

    ich hab jahrelang rc-modellbau betrieben und es ist 100%ig noch kein fahrtenregler hergestellt worden (den ich kenne und das sind schon ganz schön viele) der sich erst kalibrieren muss.

    normalerweise ist es so wie beim servo, der kriegt nen impuls, misst die länge und regelt dann proportional durch. 1,5ms sind IMMER mittelstellung

    Servos und Fahrtenregler haben wohl eine ähnliche Funktion ...
    also Servos ja schon gleich garnicht...
    bei fahrtenreglern würde es ja zumindest noch etwas sinn machen aber geben tuts das bei keinem



    ach und @ offtopic:

    sry, tut mir leid. aber ich krieg es eben nicht allein hin xD

    und da ich auch nicht weiss ob das hex-file das ich generiert hab auch WIRKLICH das abbild meines codes ist bräuchte ich jemand anderen bei dem es funktioniert um das zu testen. da du den anderen code ja auch getestet hast dachte ich du müsstest ja zumindest nichts umbauen und habe gehofft du könntest das schnell machen

    LG Pr0gm4n

  2. #42
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Ich bin RC-Laie, habe aber nach kurzer Suche ein passendes Beispiel gefunden:

    http://www.sgs-electronic.de/Anleitu...10_deutsch.pdf

    Auf Seite 3 unter "Inbetriebnahme: Einschalten" steht da folgendes:
    ...Diese automatische Kalibrierung erfolgt in dieser Weise bei jeder
    Einschaltung. D.h. die beim Einschalten erkannte Position wird als
    Neutralposition gespeichert. Das gilt sowohl für die Lenkung, als auch
    für die Geschwindigkeit....
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #43
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    LOL!

    sry, dann muss ich alles zurücknehmen, aber meine etwa 7 fahrtenregler die ich bisher hatte und verwendet hab, sowie alle die ich je gesehn hab funzten anders...

    es iss ja auch so, dass du wenn man das auto zuerst einschaltet und dann erst die funke, trotzdem sobald die funke an iss volle kontrolle hast und das auto steht --> am anfang hat er dann keinen kalibrierungsimpuls

    sehr merkwürdig, ich geh gleich am freitag mal wieder zu unserem rc-shop in der stadt, da treffen die sich bei uns immer, da kann ich dann mal fragen ob die das auch gehört haben, ich kann mir aber beim besten willen nich vorstellen warum die das gemacht hätten...

    wenn man beim einschalten schon nach vorne drückt dann würde er ja in nullstellung rückwärtsfahren... *grübel*

    LG Pr0gm4n

    EDIT: also der den du gefunden hast, der ist ja für kettenfahrzeuge xD

    ich weiss nicht, inwiefern du die unterscheidung kennst, aber für kettenfahrzeuge nimmt man normal eine 2-knüppel-funke

    da iss das anders, dem regler gibt man einen geschwindigkeits- und einen lenkimpuls vom empfänger, sowie die akkus halt noch

    das sind sowieso sondermodelle von fahrtenreglern, ich guck auch gleich mal bei graupner und futaba was die dann so gemacht haben

    EDIT2: http://www.graupner.de/fileadmin/dow...ungen/7195.pdf seite 5 /einstellen auf den sender

  4. #44
    Neuer Benutzer Öfters hier
    Registriert seit
    23.02.2009
    Ort
    8052 Graz
    Alter
    49
    Beiträge
    18
    Hallo
    Also mal ganz kurz, Laut Conrad Elektronic gibts kaum noch Fahrtenregler ohne Speicher. Ich habe durch Zufall einen RC Handel gefunden, der mir noch einen geben konnte ohne Speicher und mit dem geht es super. Am Donnerstag bekomme ich den zweiten dazu und kann dann testen ob es auch so bleibt.
    Inzwischen hab ich mir Gedanken gemacht über den Code den mir Pr0gm4n gemacht hat. Ich wollte die Bumper hinzufügen, leider ohne Erfolg, was hab ich bloss schon wieder falsch gemacht. Ich habe den Code so umgeschrieben wie ich es mir erhofft habe, dass es gehen könnte rechts u. links, hab ich nur daweil dazu geschrieben aber bringt auch nicht wirklich was ohne die richtigen Fahrtenregler.
    Code:
    #include "RP6RobotBaseLib.h" //Code by Pr0gm4n© v1.0 Fahrtenregler/Servos an ADC0 und ADC1 
    
    void vorwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 0 und 5, bei 0 = stillstand; zeit in ms 
    { 
         if(geschwindigkeit > 5)geschwindigkeit = 5; 
         if(geschwindigkeit < 0)geschwindigkeit = 0; 
         int x = 15+geschwindigkeit; 
         int i; 
         for(i=0;i<(zeit/20);i++) 
         { 
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170); 
         } 
    } 
    
    void rueckwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 1 und 5; zeit in ms 
    { 
         if(geschwindigkeit > 5)geschwindigkeit = 5; 
         if(geschwindigkeit < 1)geschwindigkeit = 1; 
         int x = 15-geschwindigkeit; 
         int i; 
         for(i=0;i<(zeit/20);i++) 
         { 
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170); 
         } 
    } 
    void rechts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 1 und 5; zeit in ms
    { 
         if(geschwindigkeit > 5)geschwindigkeit = 5; 
         if(geschwindigkeit < 1)geschwindigkeit = 1; 
         int x = 15-geschwindigkeit; 
         int i; 
         for(i=0;i<(zeit/20);i++) 
         { 
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170); 
         } 
    } 
    void links(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 1 und 5; zeit in ms 
    { 
         if(geschwindigkeit > 5)geschwindigkeit = 5; 
         if(geschwindigkeit < 1)geschwindigkeit = 1; 
         int x = 15-geschwindigkeit; 
         int i; 
         for(i=0;i<(zeit/20);i++) 
         { 
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170); 
         } 
    }  
    void initMotoren() 
    
    
    
    int main(void) 
    {     
         initRobotBase(); 
         initMotoren(); 
         pwerON();
          while(true) 
       
       {
         rueckwaerts,rechts,links,vorwaerts,(int geschwindigkeit, int zeit,true);
         if (getBumperLeft)
         { rueckwaerts(1, 100);
    	   rechts(2, 100);
    	   }
    	 if (getBumperRight)
         {  rueckwaerts(1, 100);
    	    links(1, 100);
    		}
         vorwaerts(2, 1000); 
         vorwaerts(0, 100); 
         rueckwaerts(2, 1000); 
         vorwaerts(0, 100);
       }
        
      return (0);
    }

  5. #45
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    Hi,

    also
    rueckwaerts,rechts,links,vorwaerts,(int geschwindigkeit, int zeit,true);
    das kann schonmal garnicht funktionieren... ich hab keine ahnung was du damit bezwecken willst xD

    ach ja und

    void links(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 1 und 5; zeit in ms
    {
    if(geschwindigkeit > 5)geschwindigkeit = 5;
    if(geschwindigkeit < 1)geschwindigkeit = 1;
    int x = 15-geschwindigkeit;
    int i;
    for(i=0;i<(zeit/20);i++)
    {
    PORTA |= 1;
    sleep(x);
    PORTA &= ~1;
    PORTA |= 2;
    sleep(30-x);
    PORTA &= ~2;
    sleep(170);
    }
    }
    dashier ist ja der gleiche code wie bei mir bei vorwärts

    du musst das nicht nur umnennen xD

    naja ich hab grad keine zeit...

    aber die bei uns im modellbauladen haben alle gesagt dass sie noch nie was von fahrtenreglern mit speicher gehört haben...


    LG Pr0gm4n

  6. #46
    Neuer Benutzer Öfters hier
    Registriert seit
    23.02.2009
    Ort
    8052 Graz
    Alter
    49
    Beiträge
    18
    Hallo dass, das mit links u. rechts nicht geht ist mir klar, weil ich es einfach nur mal zum Programm dazu habe und dass ich die Werte ändern muss ist mir auch klar. Ich wollte es einfach mal dazu tun damit es mal im Programm drinnen ist und dass ich sobald ich die Fahrtenregler habe (beide) versuchen kann ob es auch geht.
    Zu den Fahrtenreglern kann ich nur sagen, dass ich mir das mit dem Speicher nicht aus der Nase ziehe, das wurde mir so erklärt von Mitarbeitern bei Conrad Elektronics und von einem RC-Modellbaushop so erklärt nur dass die Conrad die ohne Speicher nicht mehr verkauft. Meine Frage war diesmal eher auf die Bumper bezogen, wie ich die hinbekommen kann. Sorry wenn ich mich falsch ausgedrückt habe.

  7. #47
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    Hi,

    das meinte ich ja...

    also wenn deine funktion rechts(); nichts anderes macht als geradeaus weiterfahren, dann kannst du ja garnicht erkennen ob du das mit den bumpern richtig gemacht hast...
    ich seh grad du würdest wenn bumper gedrückt wurde halt gerade hinterfahren.. naja, bleibt sich gleich

    ich selber bin nichmehr allzu sehr in den rp6 eingearbeitet, ich mach z.z. andere projekte, aber wenn ich mich nicht allzu irre dann ging das über nen eventhandler oder interrupt, dem du direkt sagen kannst was er dann machen soll...

    so wie dus jetz machst iss zum einen die zeile hier falsch:

    Code:
    rueckwaerts,rechts,links,vorwaerts,(int geschwindigkeit, int zeit,true);
    und wenn man die weglässt dann sieht das programm so aus:

    -überprüfung des linken Bumpers
    -überprüfung des rechten Bumpers
    -2,2s irgendwas was du fährst

    und dann von vorne

    das heißt wenn dein robby auf ein hindernis stößt kann er im extremfall noch 2,1s weiter dagegenfahren weil du ja erst dann überprüfst...

    bin mir sogar ziemlich sicher dass es da was gab, son eventhandler mein ich war das...

    @
    erklärt von Mitarbeitern bei Conrad Elektronics und von einem RC-Modellbaushop
    also wenn du das RC-Modellbaushop nicht hinigeschrieben hättest wär ich immernoch überzeugt vom gegenteil

    weil die mitarbeiter beim großen c einfach keine ahnung haben...

    aber in nem modellbaushop... komisch

    also speicher haben sie schon alle, ich weiss ja nich was du erklärt bzw. gefragt hast... das iss normal, du kannst deine eigenen einstellungen machen aber hier gehts ja eig. nur darum ob der fahrtenregler sich anhand des ersten fernsteuerimpulses kalibriert... und das glaub ich immernoch nich xD

    sonst könnte man die mittelstellung nicht einprogrammiern sondern müsste ja bloß den hebel n bissl anders halten...

    und es gibt genug leute, die den akku anstecken und dabei die fernsteuerung nur rumhängen haben, mich eingeschlossen, da iss der knüppel öfters mal nich in mittelposition...

    das kann also ned sein eigentlich

    wie gesagt machts ja eig. auch kein sinn und graupner verbaut auch nur fahrtenregler mit speicher aber ohne kalibrierung wie gesagt

    LG Pr0gm4n

  8. #48
    Neuer Benutzer Öfters hier
    Registriert seit
    23.02.2009
    Ort
    8052 Graz
    Alter
    49
    Beiträge
    18
    Hallo
    So leider bin ich kein Stückchen weiter. Die Fahrtenregler machen noch immer was sie wollen (Leider). Ich ändere das Programm so das es mit vorwärts beginnt u. dann rückwärts mit der gewünschten Geschwindigkeit.
    1 Test. Ich schalte nun den RP6 aus ohne die Akkus ab zu stecken und wieder ein, keine Veränderung am Ablauf des Programms. 2. Test. Ich schalte den RP6 aus stecke die Akkus ab ,schalte den RP6 wieder ein spiele das Programm wieder drauf schalte den RP6 wieder aus stecke ,die Akkus wieder an und schalte den Rp6 wieder an. Die Fahrtenregler machen wieder alles nur nicht das was vorher eingestellt wurde, ich habe natürlich auch andere Abläufe versucht wie Akkus abstecken während der RP6 angeschalten ist (aber das Programm nicht läuft nur Power on) wieder das gleiche.
    Es ist auch so dass wenn ich das Programm dann wieder auf die gewünschte Funktion einstelle, dass ich dann immer andere Werte habe wie vor dem ab stecken der Akkus. Wenn ich das Programm so lasse wie du es mir gegeben hast Pr0gm4n dann Ffährt der Robi nur vorwärts mit Vollgas u. mit kurzen Stops ich habe es dann verändert so das er vor u. zurück fährt , so wie ich den code jetzt zeige ist es super gelaufen ich weiss nicht ob das korrekt ist wie ich es eingestellt habe aber leider ist es so am Besten gegangen, kann es sein dass ich da was falsch eingestellt habe, dass es nach dem ab und an stecken der Akkus nicht mehr Funktioniert. BITTE BITTE Hilfe ich bin echt schon am verzweifeln. PS Das mit den Speicher ist natürlich Schwachsinn gewesen war noch bei einem Modelbaushop und der hat das auch zum ersten mal gehört mit Speicher, jetzt weiss ich wo ich nicht mehr nachfragen gehe.
    Code:
    #include "RP6RobotBaseLib.h" //Code by Pr0gm4n© v1.0 Fahrtenregler/Servos an ADC0 und ADC1 
    
    void vorwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 0 und 5, bei 0 = stillstand; zeit in ms 
    { 
         if(geschwindigkeit > 5)geschwindigkeit = 5; 
         if(geschwindigkeit < 0)geschwindigkeit = 0; 
         int x = 13+geschwindigkeit; 
         int i; 
         for(i=0;i<(zeit/20);i++) 
         { 
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170); 
         } 
    } 
    
    void rueckwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 1 und 5; zeit in ms 
    { 
         if(geschwindigkeit > 5)geschwindigkeit = 5; 
         if(geschwindigkeit < 1)geschwindigkeit = 1; 
         int x = 23-geschwindigkeit; 
         int i; 
         for(i=0;i<(zeit/20);i++) 
         { 
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170); 
         } 
    } 
    
    void initMotoren() 
    { 
         DDRA |=3; 
    } 
    
    
    int main(void) 
    { 
       initRobotBase(); 
       initMotoren(); 
    
       while(true) 
       {
         
         vorwaerts(0, 100); 
         vorwaerts(2, 1000);
          vorwaerts(0, 100); 
         rueckwaerts(3, 1000); 
         
       } 
       return(0); 
    }

  9. #49
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    Hi,

    freut mich, recht gehabt zu haben xD

    das mit dem speicher ist einfach so, dass der modellbautyp nicht erwartet hat, dass du das damit meinst xD

    ich würde dir vorschlagen in die initMotoren ein vorwaerts(0, 10000); einzubauen, dann hast du 10 sekunden zeit um die akkus anzustecken, falls du tatsächlich so ein sondermodell hast wie radbruch ja gepostet hat, dass es es gibt.

    also ich bin noch etwas müde, mach mich aber gleich dran den code für dich nochmal n bissl auszubauen wenn du das wünschst, also ich könnte dir vlt. ne musterlösung machen für vor- zurück- und linksfahren oder so

    rechts iss ja dann trivial wie der mathematiker sagt xD
    also analog, sehr einfach etc... so in der art bedeutet das...

    also allein der beschreibung deiner tests von oben nach würde ich wirklich davon ausgehen, dass der so einen wirklich SEHR komischen speicher hat...

    naja werden wir sehen, dann wird die initMotoren(); das bald beheben xD

    also dann hättest du von 1.x Startknopf an 10 sec zeit um den akku anzuschließen, bei bedarf auch mehr xD

    LG Pr0gm4n

  10. #50
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Zürich
    Beiträge
    604
    Hi,

    so hab mal den Code bearbeitet:

    Code:
    #include "RP6RobotBaseLib.h" //Code by Pr0gm4n© v1.1 Fahrtenregler/Servos an ADC0 und ADC1 die entgegengesetzt drehen
    
    void vorwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 0 und 5, bei 0 = stillstand; zeit in ms
    {
         if(geschwindigkeit > 5)geschwindigkeit = 5;
         if(geschwindigkeit < 0)geschwindigkeit = 0;
         int x = 15+geschwindigkeit;
         int i;
         for(i=0;i<(zeit/20);i++)
         {
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170);
         }
    }
    
    void rueckwaerts(int geschwindigkeit, int zeit)//geschwindigkeit zwischen 1 und 5; zeit in ms
    {
         if(geschwindigkeit > 5)geschwindigkeit = 5;
         if(geschwindigkeit < 1)geschwindigkeit = 1;
         int x = 15-geschwindigkeit;
         int i;
         for(i=0;i<(zeit/20);i++)
         {
                PORTA |= 1; 
                sleep(x); 
                PORTA &= ~1; 
                PORTA |= 2; 
                sleep(30-x); 
                PORTA &= ~2; 
                sleep(170);
         }
    }
    
    void links() // oder rechts, das musst du testen, hängt davon ab, was an adc0 oder adc1 hängt
    {
         int x= 17; // hier kannst du an der geschwindigkeit in der kurve rumprobieren (15 < x <= 20)
         int y= 20; // hier kannst du am Winkel der Drehung rumprobieren, das hängt von den Motoren ab, einfach ausprobieren dann siehst du was gut iss xD
         int i;
         for(i=0; i<y ;i++) 
         {
                  PORTA |= 1;
                  sleep(x);
                  PORTA &= ~1;
                  sleep(200-x);
         }
    }
    
    void rechts() // oder links, das musst du testen, hängt davon ab, was an adc0 oder adc1 hängt
    {
         int x= 17; // hier kannst du an der geschwindigkeit in der kurve rumprobieren (15 < x <= 20)
         int y= 20; // hier kannst du am Winkel der Drehung rumprobieren, das hängt von den Motoren ab, einfach ausprobieren dann siehst du was gut iss xD
         int i;
         for(i=0; i<y ;i++) 
         {
                  PORTA |= 2;
                  sleep(x);
                  PORTA &= ~2;
                  sleep(200-x);
         }
    }
    
    
    void initMotoren()
    {
         DDRA |=3;
         vorwaerts(0, 10000);
    }
    
    
    int main(void) 
    { 
       initRobotBase(); 
       initMotoren();
    
       while(true) 
       { 
         vorwaerts(2, 1000);
         vorwaerts(0, 100);
         rueckwaerts(2, 1000);
         vorwaerts(0, 100);
       } 
       return(0); 
    }
    musst in links(); und rechts(); noch rumprobieren was bei deinen Motoren eine schöne Kurve verursacht xD

    LG Pr0gm4n

Seite 5 von 6 ErsteErste ... 3456 LetzteLetzte

Berechtigungen

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

12V Akku bauen