- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 11

Thema: Ra1 Pro von Arexx

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2010
    Beiträge
    5

    Ra1 Pro von Arexx

    Hi Leute

    Ich bastel zur zeit an meinem RA1 Pro herum und dabei ist mir folgendes aufgefallen:

    Wenn ich dem Arm vorgebe bei z.B. Servo 4 zu knicken, ich dabei den arm festhalte (so dass er sich nicht bewegen kann) und dann loslasse (nach ca 10 sek) dann fährt er trotzdem auf diese Position.
    Das geht doch nur wenn er eine Drehwinkelsteuerung oder etwas ähnliches hat, oder?
    allerdings habe ich keine Funktion in den Libarys oder den Beispielprogrammen dafür gefunden.
    Wie merkt der Arm nun dass er noch nicht auf der richtigen Stelle ist und noch ca 15° weiterfahren muss? Und wenn er solche drehwinkelgeber hat, wie kann ich diese ansteuern/verwenden?

    Hat sich da schonmal einer damit beschäftigt?

    Gruß,



    Bild hier  

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2011
    Beiträge
    13
    Hallo,

    Ich kenne mich mit dem Ra1 zwar nicht aus, aber ein bisschen mit Servos. Und hier liegt auch deine Entdeckung
    Der Servo hat innen ein Potentiometer, welches die aktuelle Stellung darstellen kann. Du gibtst nun dem Serve den Befehl auf die stellung 60° zu fahren.
    Der Serve versucht es, aber schafft es nicht. Trotzdem gibt der Serve strom auf den Motor, bis er zur 60° stellung gefahren ist! Sobalt du also los lässt, fährt er da hin.

    das ist soweit hilfreich, das eine bestimmte stellung immer den selben wert hat!
    Beispiel:
    Siehe Modell Auto/Boot/... bei zb. bei 90° fährt man grade. bei 0° nach links bei und bei 180° nach rechts!

    MfG

    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2010
    Beiträge
    5
    Hey Stefan,

    danke für die schnelle Antwort!
    Hat mir schonmal gut weitergeholfen da ich nun weiß die positionsbestimmung bewirkt.
    Allerdings steh ich immernoch vor dem Problem das ich nicht weiß ob und wie eine Rücksprache mit dem Micrcontroller (Atmega 64) geht. Der Controller wird mit C programmiert und die Programme als Hexfile rübergeladen. Muss dann nicht irgenwo in dem Programm, das rübergeladen wird, eine Funktion oder eine Schleife vorhanden sein in der eine Überprüfung der Position des Servos stattfindet? Ich habe nun die Beispielprogramme ein paarmal durchforstet, aber mir ist kein solcher Codeteil aufgefallen was ich ein wenig seltsam/verstörend finde :/

    Weiß da einer mehr? falls es hilft kann ich auch die Libraryabschnitte mit Anhängen.

    Gruß,

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    "setle" hat das schon richtig beschrieben.
    Es erfolgt keine Überprüfung der Position, sondern der µC schickt an dem Servo kontinuierlich Positionsdaten. Wenn sie sich nicht ändern und das Servo auf der gewünschten Position steht, bewegt es sich nicht, anderfalls läuft es auch nach 5min in diese Position.
    Blockieren ist allerdings für das Servo nicht das Beste, abgesehen vom hohen Stromverbrauch.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2010
    Beiträge
    5
    Hm.. Ok, ganz steig ich zwar noch nicht ganz dahinter, aber ich glaube die Grundidee habe ich verstanden

    Ich habe jetzt auch die richtigen Abschnitte für die Servos gefunden. Ich poste die mal hier. Schaut se euch mal bitte an und sagt mir ob ich das verstanden habe:
    Code:
    #define Pos_Servo_1        OCR1A
    #define Pos_Servo_2        OCR1B
    #define Pos_Servo_3     OCR1C
    #define Pos_Servo_4     OCR3A
    #define Pos_Servo_5     OCR3B
    #define Pos_Servo_6     OCR3C
    
    /*****************************************************************************/
    // Move Servo's 
    
    void Move (uint8_t Servo, uint16_t Value) 
    {
    
        switch (Servo) 
        {
        case 1:    Pos_Servo_1 = Start_Position[1] + Value; break; 
        case 2:    Pos_Servo_2 = Start_Position[2] + Value; break; 
        case 3:    Pos_Servo_3 = Start_Position[3] + Value; break; 
        case 4:    Pos_Servo_4 = Start_Position[4] + Value; break; 
        case 5:    Pos_Servo_5 = Start_Position[5] + Value; break; 
        case 6:    Pos_Servo_6 = Start_Position[6] + Value; break; 
        }
    }
    
    
    /*****************************************************************************/
    /* Move 
    * Example:
    *
    *     s_Move(6, 500,2);
    *        1 - Servo 6
    *        2 - (Startpostion + 500) = 2ms (right)
    *        3 - (speed = 2) 
    */
    
    
    void s_Move (uint8_t Servo, int16_t D_Value, uint16_t Speed) 
    {
        int16_t Actual_position=2700;  
        
        switch (Servo) 
        {
        case 1:    Actual_position = Pos_Servo_1 - Start_Position[1]; break; 
        case 2:    Actual_position = Pos_Servo_2 - Start_Position[2]; break; 
        case 3:    Actual_position = Pos_Servo_3 - Start_Position[3]; break; 
        case 4:    Actual_position = Pos_Servo_4 - Start_Position[4]; break; 
        case 5:    Actual_position = Pos_Servo_5 - Start_Position[5]; break; 
        case 6:    Actual_position = Pos_Servo_6 - Start_Position[6]; break; 
        }
        
        if (Actual_position > D_Value )
        { 
            while (Actual_position > D_Value)
            {
                Actual_position--; 
                Move(Servo, Actual_position);
                mSleep(Speed);
            }
            return; 
        }
        
        
        if (Actual_position < D_Value )
        { 
            while (Actual_position < D_Value)
            {
                Actual_position++; 
                Move(Servo, Actual_position);
                mSleep(Speed);
            }
            return;
        }    
        
        
        
    }
    Es sind 3 Kabel am Servo: eines für Gnd, eines für VCC und eines welches auf die OCR1A-B und OCR3A-B (welche hier als POS_Servo_X definiert wurden und als Ausgang bei der PIN-Konfiguration) des Controllers gehen.
    Mit Spannung werden se dann immer versorgt und durch die Move()-Funktionen werden in die variablen Pos_Servo_X die Werte, ausgehend von der vorher eingegebenen Startposition, eingegeben.
    Und ab hier steig ich nicht mehr ganz durch:

    Die Werte in Pos_Servo_x werden nun an den Servo gesendet und der macht dann was mit dem Poti? Ist da nun eine eigene kleine Elektronik mit dabei die das überprüft ob das dann passt, oder wie? Ich mein, es kann ja bei einer bestimmten Armstellung nur eine bestimmte Spannung anliegen über den Poti...
    Also nen Komparator?
    Und wenn ich das alles richtig verstehe (also auch Stefan und Hubert dann bekomm ich auf gar keinen Fall Werte zurück die ich für die Positionsbestimmung verwenden kann?

    Ich muss/möchte mir nämlich ne Bahngleichung aufstellen mit der die Servos gesteuert werden abhängig von den Toolkoordinaten (sowas in der Art) aber dazu brauch ich glaub ich die winkelstellung (ich bin da noch nicht soo tief drin, ich les mich gerade da ein).

    Gruß,

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    14.10.2010
    Beiträge
    5
    Ich habe jetzt mal ein wenig in den Datenblättern des Atmega64 gestöbert und rausgefunden das die OCRxA - C Pins sind di mit einem Counter vom Timer verglichen werden um einen Interrupt zu erzeugen (oder so.. ist schon spät). Also kommen wohl keine Daten zurück vom Servo... Wie das genau mit dem Output Compare Register geht versteh ich im mom auch nicht so recht, also wenn einer sich mit diesem Microcontroller auskennt und mir das erklären kann, wäre das super

    Werd dann wohl die Stellungen der einzelnen Servos mit Variablen über die Software überwachen lassen...

Ähnliche Themen

  1. Roboterarm Arexx ansteuern
    Von syndicate4 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 2
    Letzter Beitrag: 16.07.2011, 21:20
  2. Ultraschall ULT-10 Arexx verwendung
    Von NorthVan im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 08.09.2010, 10:32
  3. YETI- von AReXX
    Von Daniel im Forum Yeti
    Antworten: 13
    Letzter Beitrag: 10.05.2010, 12:10
  4. Frechheit von Arexx!!!!
    Von freak_ontour im Forum Asuro
    Antworten: 15
    Letzter Beitrag: 17.01.2007, 19:47
  5. Asuro Arexx Anfängerfragen
    Von ANG€L im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 03.01.2006, 22:09

Berechtigungen

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

Labornetzteil AliExpress