- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 83

Thema: RP6 - 3 poliger Servo anschließen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Nur wenn ich das hex File auf den RP6 spiele, passiert mit dem Servo nichts...
    Die Lib kann 8 Servos an PC2 bis PC7 und PD5, PD6 ansteuern. ADC3 ist nicht vorgesehen.

    Wenn du doch ADC3 für SERVO1 nehmen willst:
    1. Änderungen in der RP6ControlServoLib.h:
    a) Im Abschnitt // Servo ports:
    Die 2 Zeilen:
    #define SERVO1_PULSE_ON (PORTC |= IO_PC2) // PC2
    #define SERVO1_PULSE_OFF (PORTC &= ~IO_PC2)
    ... auskommentieren oder löschen.
    b) Dafür einfügen:
    #define SERVO1_PULSE_ON (PORTA |= ADC3) // PA3
    #define SERVO1_PULSE_OFF (PORTA &= ~ADC3)

    2. Änderungen in der RP6ControlServoLib.c:
    a) In der Funktion initSERVO() die Zeile:
    if (servos & SERVO1) {DDRC |= IO_PC2; PORTC &= ~IO_PC2;}
    ... auskommentieren oder löschen.
    b) Stattdessen einfügen:
    if (servos & SERVO1) {DDRA |= ADC3; PORTA &= ~ADC3;}

    Du kannst dann dein Servo als SERVO1 ansteuern, also die Initialisierung sieht so aus:
    initSERVO(SERVO1);

    ... und die Positionsänderungen erfolgen mit der Variable: servo1_position (in deiner Demo ist das schon so!)
    Gruß
    Dirk

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Soweit ich weiß sind die PD5 und PD6 Pins auf den IO/Ports.
    Das heißt ich schließe das orange Kabel (Datenkabel) des Servos an PD5 oder PD6 an.
    Rot verbinde ich mit +
    und braun mit GRND

    Wenn ich das Script dann ausführe, bewegt sich der Servo, weil PD5 bzw. PD6 angeschlossen ist.
    Stimmt das so?

    Danke..

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Das heißt ich schließe das orange Kabel (Datenkabel) des Servos an PD5 oder PD6 an. Rot verbinde ich mit + und braun mit GRND
    Ja, genau.

    Wenn ich das Script dann ausführe, bewegt sich der Servo, weil PD5 bzw. PD6 angeschlossen ist. Stimmt das so?
    Ja, stimmt so. In der Lib wären das die Servos SERVO7 bzw. SERVO8.

    In der Demo müßtest du dann das Servo initialisieren mit:
    initSERVO(SERVO7); // PD5
    ... oder ...
    initSERVO(SERVO8 ); // PD6

    In der Demo must du anstelle von servo1_position und/oder servo2_position einsetzen:
    servo7_position und/oder servo8_position (je nachdem, ob dein Servo an PD5 oder PD6 hängt).
    Gruß
    Dirk

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Perfekt, Jetzt noch ne doof Frage (bin grad nicht vor meinem Roboter).
    Schließ ich +/grnd am Besten direkt auf der M32 Platine an, oder sollte ich sowas lieber auf der Basis machen?
    Was macht das für einen Unterschied?

    Danke

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Es macht kaum Unterschied da auf beiden Boards die 5v duch den Base Regler produziert werden. Man kann einen geringfügigen Nachteil anführen wenn du die Versorgung an der M32 abzwackst, da ein höherer Strom duch die M32 und die Kabelbrücke muss - tatsächlich ist der Einfluß jedoch vernachlässigbar und macht sich erst bei mehreren Ampere bemerkbar.
    Servos haben aber eine Sollspannung bis 6V, da lohnt sich ggf. ein eigener 6V LDO-Spannungregler an UBat. Das sorgt nicht nur für höhere Stellgeschwindigkeit, sondern entlastet auch den Boardregler. Vor allem bei mehr als einem Servo lohnt sich das dann schon.
    Wenn man ein wenig risiofreudig ist, kann man sogar die Servos sogar direkt an Ubat betreiben - allerdings betreibt man sie dann ausserhalb der Vorgaben aber es soll Servos geben die bis 12V Spannungsfest sind. Ich will das nicht empfehlen, halte es aber für möglich und würde es evtl. ausprobieren. Zur Not kann man sich mit ein oder zwei Dioden aus einem alten Netzteil die Ubat etwas runter setzen (pro Diode 0,7V) da Ubat im voll geladenen Zustand schon mal über der nominalen 1,2V*6Zellen = 7,2V liegen kann. (ich hab bei mir auch schon 8,3V mit MH-Zellen gehabt)
    LG Rolf
    Geändert von RolfD (09.05.2011 um 12:33 Uhr)
    Sind Sie auch ambivalent?

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    danke für die Infos!

    der letzte Teil interessiert mich sehr.
    Ich nehme an Ubat ist jetzt der direkte "Lötpunkt" von der Batterie auf die Base? (dort liegt also die direkte Batterie/Akku Spannung an)
    LDO-Spannungsregler... sagt mir jetzt leider nicht viel... haben wir da im RN Wissen oder so was drüber stehen?

    Danke!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    EDIT:
    Hab mal bei Conrad geschaut...
    ist das sowas in der Art?
    http://www.conrad.at/ce/de/product/1...archDetail=005

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Zitat Zitat von Dirk Beitrag anzeigen
    Die Lib kann 8 Servos an PC2 bis PC7 und PD5, PD6 ansteuern. ADC3 ist nicht vorgesehen.

    Wenn du doch ADC3 für SERVO1 nehmen willst:
    1. Änderungen in der RP6ControlServoLib.h:
    a) Im Abschnitt // Servo ports:
    Die 2 Zeilen:
    #define SERVO1_PULSE_ON (PORTC |= IO_PC2) // PC2
    #define SERVO1_PULSE_OFF (PORTC &= ~IO_PC2)
    ... auskommentieren oder löschen.
    b) Dafür einfügen:
    #define SERVO1_PULSE_ON (PORTA |= ADC3) // PA3
    #define SERVO1_PULSE_OFF (PORTA &= ~ADC3)

    2. Änderungen in der RP6ControlServoLib.c:
    a) In der Funktion initSERVO() die Zeile:
    if (servos & SERVO1) {DDRC |= IO_PC2; PORTC &= ~IO_PC2;}
    ... auskommentieren oder löschen.
    b) Stattdessen einfügen:
    if (servos & SERVO1) {DDRA |= ADC3; PORTA &= ~ADC3;}

    Du kannst dann dein Servo als SERVO1 ansteuern, also die Initialisierung sieht so aus:
    initSERVO(SERVO1);

    ... und die Positionsänderungen erfolgen mit der Variable: servo1_position (in deiner Demo ist das schon so!)
    So habs jetzt mal mit dieser Änderung am ADC3 probiert - jedoch wieder ohne Erfolg
    Der Servo bewegt sich 0!
    Wenn das Script sonst ja bei allen funktioniert, muss es wohl an den Servos liegen...?

  9. #9
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Zitat Zitat von roboterx Beitrag anzeigen
    Wenn das Script sonst ja bei allen funktioniert, muss es wohl an den Servos liegen...?
    Nein muss es nicht.. vielleicht ist z.B. der Port PD5 kaputt? Aber das ist Rätselraten so lange du nicht das Vorgehen beherzigst wie beschrieben...

    Edit: ...gelesen...
    Mag ja sein das Dir das nicht so zugänglich ist mit der Elektronik aber dazu sind wir ja da zu helfen. Aber dazu gehört eben auch Geduld und Ruhe beim arbeiten. Also mess erst mal dein PD5 .. ohne abrutschen bitte...
    Sind Sie auch ambivalent?

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    07.05.2011
    Beiträge
    81
    Zitat Zitat von RolfD Beitrag anzeigen
    Nein muss es nicht.. vielleicht ist z.B. der Port PD5 kaputt? Aber das ist Rätselraten so lange du nicht das Vorgehen beherzigst wie beschrieben...
    Hallo, da sind wohl die Posts dazwischen gekommen - ich glaube auch wir haben nen ähnlichen Ansatz!
    Habe jetzt das Script so umgeschrieben - wie mir vorher erklärt wurde und den Servo nun an ADC3 gehängt - auch dort funktioniert er nicht. Also können wir mit hoher Wahrscheinlichkeit ausschließen dass PD5 defekt ist, denn dann müsste ja ADC3 auch defekt sein? Wäre ja unwahrscheinlich oder?

    Bezüglich dem Messen.
    Mir ist alles klar bis auf was ich genau messen muss. Ich hab mein Multi auf AC gestellt. Einen Pol des Multis lege ich auf PD5 (bzw. auf ADC3 - je nachdem was ich messen will) aber was mach ich mit dem anderen Pol des Multis? Wo leg ich den rauf - das ist mir noch nicht ganz klar...

    Danke!

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. RN-Mega2560 Modul - Servo anschließen
    Von Blaner im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 15.09.2008, 17:12
  2. Antworten: 2
    Letzter Beitrag: 09.02.2008, 14:53
  3. 37-Poliger Sub-D-Stecker
    Von trafo89 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 5
    Letzter Beitrag: 14.11.2007, 12:36
  4. Servo Motor richtig anschließen
    Von jawo3 im Forum Motoren
    Antworten: 1
    Letzter Beitrag: 04.11.2007, 18:00
  5. servo direkt an einen Port anschließen?
    Von Zeroeightfifteen im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 18.05.2005, 21:29

Berechtigungen

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

LiFePO4 Speicher Test