- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 6 von 7 ErsteErste ... 4567 LetzteLetzte
Ergebnis 51 bis 60 von 63

Thema: Domino Day für den RP6

  1. #51
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Anzeige

    Powerstation Test
    Hallo

    Hier werden die Signale über den XBUS ausgegeben. Obwohl die Pins teilweise mit PullUp ausgestattet sind, eignen sie sich wunderbar zum Anschluss kleiner Erweiterungen. Eine meiner ersten Lötübungen war ein kleiner XBUS-Adapter:

    Bild hier  
    (Bild aus https://www.roboternetz.de/phpBB2/vi...=328950#328950)

    Auf dem Bild links sieht man die geraden Pins, unten links ist Pin2. Die weisen Drähte gehen auf Pin8( E_INT, PA4), Pin10(SCL, PC0) und Pin12(SDA, PC1). Rechts sind die Stiftleisten, jeweils das Signal, Vcc (von unten weis) und GND (von unten schwarz) (Servokonform). Die vierte Stiftleiste oben rechts ist nur mit VCC und GND belegt.

    Bild hier  
    (Bild (Anklicken für 1920x1080) aus https://www.roboternetz.de/phpBB2/vi...=328708#328708)

    Der Antrieb erfolgt unten links mit dem Servohorn. Von dort geht die Kraft über die linke Greiferbacke zum linken Zahnrad. Dieses wiederum treibt das rechte Zahnrad und damit die rechte Greiferbacke an. Die Lager sind mit Heiskleber befestigte Reißzwecken. Hülsen zur Anpassung der Durchmesser an den Zahnrädern sind Kabelummantelungen.

    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!

  2. #52
    Benutzer Stammmitglied
    Registriert seit
    11.03.2009
    Ort
    Oberpfalz
    Alter
    30
    Beiträge
    54
    ah danke

    noch eine frage zu dem greifer :
    und wie hast du die Lager angebracht (mit heißkleber ist mir schon kla).
    Also mir einem reißnagel o. was ähnliches.

  3. #53
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    "Die Lager sind mit Heiskleber befestigte Reißzwecken."

    Reißzwecken = Reißnagel

    Ein bewährtes Konzept:

    Bild hier  
    (Bild aus https://www.roboternetz.de/phpBB2/ze...=324867#324867)

    :)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #54
    Benutzer Stammmitglied
    Registriert seit
    11.03.2009
    Ort
    Oberpfalz
    Alter
    30
    Beiträge
    54
    Genial

    Danke

  5. #55
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2010
    Ort
    Hamburg
    Beiträge
    333
    Moin,

    nachdem ich jetzt mehrfach mit längeren Pausen dazwischen versucht habe meine RC Anlage am Robo anzuschließen, und es nicht geschafft habe Frage ich jetzt nochmal nach.
    Versucht habe ich es mit dem Programm von mic was er hier am anfang gepostet hat die beiden Libs habe ich auch eingebunden.
    Versucht habe ich es auch mit dem fertig kompiliertenm Programm
    https://www.roboternetz.de/phpBB2/ze...&highlight=mac

    Angeschlossen habe ich den Emfänger an XBUS Pin 10 (links/rechts)
    Und XBUS Pin 12 (vor/zurück)
    Leider dreht sich dabei immer nur die Rechte Kette was ja wie mic in einem anderen Beitrag geschrieben hat nur ein Programmier Fehler ist deshalb denke ich das meine RC Anlage gar nicht erkannt wird.
    Funktionieren tut Sie aber da ich Sie eben nochmal mit zwei Servos getestet habe und das ging.
    Es gab doch mal irgendwo was von MC Delta wo er versucht hat die Signale auszulesen oder?
    Warscheinlich habe ich nur einen denk Fehler ist das so richtig?

    Und nochmal Sorry das ich den alten kramm wieder ausgrabe

  6. #56
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Erstaunlicherweise habe ich alle Teile auf Anhieb wiedergefunden, sogar die Batterien meines RC-Senders funktionieren noch (die waren natürlich separat gelagert). Zusammengestöpselt, das oben erwähnte, schon kompilierte Programm geflash, läuft.

    Beim Anschluß muss selbstverständlich auch die Minus-Leitung des RC-Empfängers mit dem GND des RP6 verbunden sein!

    "Die RC-Kanäle kommen an den XBUS-Stecker, links/rechts an Pin10 (SCL), vor/zurück an Pin12 (SDA). RC-Empfänger + und - an VCC und GND des RP6."

    Ich hatte zusätzlich noch Angstwiderstände (820 Ohm) in die Signalleitungen eingebaut. Als Alternative zum XBUS kann man übrigends auch den I2C-Anschluß auf der RP6-Platine neben XBUS2 verwenden. Auf den 5 Pins liegen Vdd (5V), GND, SDA, SCL und INT1 (E_INT). Das hatte ich damals auch noch nicht gecheckt ;)

    Wichtig ist vielleicht noch, dass die RC-Fernbedienung positive Servosignale sendet.

    Aus heutiger Sicht betrachtet war das damals echter Murks, aber ich war Anfänger und es hat (leidlich) funktioniert. Inzwischen kann ich die Servos auch libverträglich ansteuern und der ganze rblib-Mist ist somit Geschichte:

    Code:
     // Servoansteuerung mit Timer1                                         31.1.2010 mic
    
    // Einfach und elegant, warum finde ich das erst jetzt? Timer1 (RP6-Motoransteuerung)
    // läuft ja sowieso im Hintergrund. Deshalb kann man die "klassische" Servoansteuerung
    // in die Overflow-ISR einbauen und mit ca. 19kHz aufrufen lassen. Timersetup der Lib:
    // Mode 10, Phase Correct mit ICR1 als Top ergibt bei ICR1=210 ca. 8MHz/420=19047,6Hz ;)
    
    // Drehbereich meiner RS-2-Servos ist von ca. 14 bis ca. 38
    
    #include "RP6RobotBaseLib.h"
    
    volatile uint8_t servo1, servo2, servo3, p;    // Servopositionen und Impulszähler
    uint8_t c;                                     // ein Char zur freien Verfügung
    
    int main(void)
    {
       initRobotBase();
       servo1=servo2=servo3=26;   // Servomitte?
       TIMSK |= (1 << TOIE1);       // Die Timer1 Overflow-ISR zur Servoansteuerung
       DDRA |= (E_INT1);          // Servopins auf Ausgang setzen
       DDRC |= (SCL | SDA);
       setLEDs(1);                // und los!
       startStopwatch1();
       startStopwatch2();
       startStopwatch3();
       while(1)
       {
          for(c=0;c<6;c++)            // 6 mal ein einfaches Demo....
          {
             setLEDs(1<<c);
             servo1=servo2=servo3=26; // mitte
             p=50; while(p);          // warten bis 50 Impulse gesendet (ca. 1 Sek.)
             servo1=servo2=servo3=14; // links
             p=50; while(p);
             servo1=servo2=servo3=38; // rechts
             p=50; while(p);
          }
          setStopwatch1(0);
          setStopwatch2(0);
          setStopwatch3(0);
          while(c)                    // und 6 mal ein etwas anspruchsvolleres Demo
          {
             setLEDs(1<<c);
             if(getStopwatch1()>1000)
             {
                setStopwatch1(0);
                switch(servo1)
                {
                   case 38: servo1=30; break;
                   case 30: servo1=20; break;
                   case 20: servo1=14; break;
                   case 14: servo1=21; break;
                   case 21: servo1=31; break;
                   case 31: servo1=38; break;
                }
             }
             if(getStopwatch2()>100)
             {
                setStopwatch2(0);
                servo2++;
                if (servo2 > 38) { servo2=14; c--; }
             }
             if(getStopwatch3()>300)
             {
                setStopwatch3(0);
                if (servo3 == 10) servo3=50; else servo3=10;
             }
             task_RP6System(); // Verträglichkeitstest ;)
          }
       }
       return 0;
    }
    ISR (TIMER1_OVF_vect)
    {
       static uint16_t servocount=1;
       if(servocount > servo1) PORTA &= ~E_INT1; else PORTA |= E_INT1;       // PA4 XBUS 8
       if(servocount > servo2) PORTC &= ~SCL; else PORTC |= SCL;             // PC0 XBUS 10
       if(servocount > servo3) PORTC &= ~SDA; else PORTC |= SDA;             // PC1 XBUS 12
       if(servocount < 400) servocount++; else {servocount=1; if(p) p--;}    // p = 1/50 Sek
    }
    (Code aus https://www.roboternetz.de/phpBB2/ze...=483757#483757)

    Allerdings ist die Auflösung viel geringer (100kHz zu knapp 20kHz), aber dafür ist der zusätzliche Code minimal:

    TIMSK |= (1 << TOIE1);

    schaltet den Overflow-Interrupt ein und bindet so die zusätzlich Timer1-OverFlow-ISR ein. Für das Einlesen der RC-Signale müsste die ISR dann etwa so aussehen:

    Code:
    // Globale Variablen
    volatile uint8_t rc_input_pwr, rc_input_dir;
    
    ISR (TIMER1_OVF_vect)
    {
       static uint16_t rc_temp_pwr=0;
       static uint16_t rc_temp_dir=0;
    
       if (PINC & 1) rc_temp_dir++; else
          if (rc_temp_dir) { rc_input_dir=rc_temp_dir-1; rc_temp_dir=0; }
       if (PINC & 2) rc_temp_pwr++; else
          if (rc_temp_pwr) { rc_input_pwr=rc_temp_pwr-1; rc_temp_pwr=0; }
    }
    Vorsichtshalber sollte man volatile verwenden.

    Die eingelesenen Werte sind so zwar deulich kleiner (ca. 1/5), aber zur Ansteuerung sollte es reichen. Die Formel zur Verteilung der Werte auf beide Antriebe passt dann natürlich auch nicht mehr, aber die war auch nicht besonders gut ;)

    Der linke Antrieb meines RP6 lief damals nur, wenn ich den Motortreiberbaustein angewärmt (anhauchen oder ohne Motorüberwachung warmfahren) hatte. Den Fehler, der da dahintersteckt, hatte ich nie gefunden. Zur Zeit funktioniert das aber auch ohne vorwärmen problemlos.

    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!

  7. #57
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2010
    Ort
    Hamburg
    Beiträge
    333
    Beim Anschluß muss selbstverständlich auch die Minus-Leitung des RC-Empfängers mit dem GND des RP6 verbunden sein!
    Ich hatte den Emfänger mit den passenden Akkus Betrieben also muss +/- am Emfänger Ausgang auch mit dem RP6 Verbinden?

  8. #58
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Wenn du den Empfänger mit eigenen Akkus versorgst, dann darf/muss nur Minus vom Empfänger mit dem GND des RP6 verbunden sein. Auf keinen Fall darf man 5V vom RP6 mit zusätzlichen Akkus verbinden!

    Ich versorge meinen Empfänger mit den 5V des RP6 (Vdd ist am XBUS Pin 3 und 5, GND ist Pin 1, 2 und 14).
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #59
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.03.2010
    Ort
    Hamburg
    Beiträge
    333
    Ich hatte eigentlich Meinen Emfänger komplette mit eigenem Akku verbundennur irgendwie kommt kein Signal am RP6 an.

    /Edit ich werde es nochmal mit der 5V Versorgunsspannung versuchen.

  10. #60
    Neuer Benutzer Öfters hier
    Registriert seit
    28.05.2011
    Beiträge
    25
    Guten Tag. Ich finde dein Projekt einfach klasse.
    Da ich komplett Anfänger bin (studiere 2 Wochen et-totorials.de mit Keil Programm), schafe ich nicht mit notepad++ hex Datei erstellen.
    Mit welcher Programm arbeitet man am besten mit RP6?
    Vielen Dank, eugen

Seite 6 von 7 ErsteErste ... 4567 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests