- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 85

Thema: RP6Control M32: Library für 8 Servos

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Nimm doch mal eine externe Stromversorgung und versuch es dann. Denke aber daran GND mit dem Roboter zu verbinden. Ich geh mal davon aus das Deine Stromversorgung vom RP6 zusammenbricht.
    MfG TrainMen

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    https://www.roboternetz.de/community/threads/46023-!!!M32-st%FCrzt-mit-Servo-ab!!!?p=441994#post441994
    https://www.roboternetz.de/community...l=1#post476073

    Einfachste möglichkeit wäre es mit einem LC Tiefpass (die Dimensionierung natürlich an die Servos anpassen - bei mehreren entsprechend dickere Spulen und Kondensatoren oder für jeden Servo einzeln) in der Versorgungsleitung zu filtern.
    Besser wäre ein zweiter 1.5A 5V Spannungsregler nur für die Servos, und am besten das mit eigenen Akkus.

    MfG,
    SlyD

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    16.12.2012
    Beiträge
    17

    Fuer WIFI-Modul?

    Hallo Dirk,

    Durch meinen Thread bin ich auf deine Bibliothek verwiesen wurde. Wie kann ich sie so umaendern, dass sie mit dem WIFI-Modul M256 funktioniert?

    Ich habe bisher die c und h datei ins makefile eingebunden und alles was sich auf RP6Control bezieht zu RP6M256 umgeaendert (includes und inits).

    Jetzt bekomme ich beim kompillieren trotzdem Fehlermeldungen wie z.b.:

    Code:
    ../RP6Lib/custom/RP6ControlServoLib.c:42: error: 'FALSE' undeclared here (not in a function)
    ../RP6Lib/custom/RP6ControlServoLib.c: In function 'initSERVO':
    ../RP6Lib/custom/RP6ControlServoLib.c:84: error: 'IO_PC2' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:84: error: (Each undeclared identifier is reported only once
    ../RP6Lib/custom/RP6ControlServoLib.c:84: error: for each function it appears in.)
    ../RP6Lib/custom/RP6ControlServoLib.c:85: error: 'IO_PC3' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:86: error: 'IO_PC4' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:87: error: 'IO_PC5' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:88: error: 'IO_PC6' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:89: error: 'IO_PC7' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:90: error: 'IO_PD5' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:91: error: 'IO_PD6' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c: In function 'startSERVO':
    ../RP6Lib/custom/RP6ControlServoLib.c:141: error: 'TIMSK' undeclared (first use in this function)
    ../RP6Lib/custom/RP6ControlServoLib.c:142: error: 'TRUE' undeclared (first use in this function)
    ... usw.

    Was muss ich tun?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Ja, ich hatte deinen Post schon gesehen.
    Ich hatte keine Neuauflage der M32-Servo-Lib für die M256 geplant, weil die M256 so viele Hardware-PWM-Ausgänge hat, dass man eigentlich keine Servo-Lib braucht, die eine "Soft-PWM" macht.

    Wenn du trotzdem die M32-Lib anpassen willst, gibt es diese Aufgaben:
    1. Im Header:
    - Im Abschnitt "Servo ports:" müßtest du die Portpins der M256 eintragen, die du auf der M256 nutzen willst. Die Bezeichnung der IO-Portpins (7. Spalte) findest du hier: http://www.rn-wissen.de/index.php/RP6v2#Port-Verwendung.
    Nehmen wir an, du willst für SERVO1 den Portpin PB4 nehmen, dann müßte da stehen:
    #define SERVO1_PULSE_ON (PORTB |= OC2A_PI4) // PB4
    #define SERVO1_PULSE_OFF (PORTB &= ~OC2A_PI4)
    Genau so machst du es mit allen 8 Ports für die Servos.

    2. In der Lib (.c-Datei):
    - In der Funktion initSERVO() müssen die Zeilen: if (servos & SERVOx) ... angepaßt werden: Wenn du für SERVO1 den Port PB4 festgelegt hattest, müßte die Zeile für SERVO1 so aussehen:
    if (servos & SERVO1) {DDRB |= OC2A_PI4; PORTB &= ~OC2A_PI4;}
    Die anderen 7 Zeilen müssen auch an die jeweiligen Portpins für Servos 2..8 angepaßt werden.

    - Timer1 muss genau wie bei der M32 auf CTC Modus 4 und clk/8 konfiguriert werden. Das sind die Zeilen zwischen cli() und sei(). Du müßtest die Registerbezeichnungen der M32 und der M2560 vergleichen und an die M2560 anpassen. Ich habe gerade nicht die nötige Zeit dazu. Kleinere Änderungen sind auch in startSERVO() und stopSERVO() zu machen.

    Das war's dann. Wenn du irgendwo nicht weiter kommst: Schreib hier noch mal!
    Gruß
    Dirk

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    16.12.2012
    Beiträge
    17
    Hi Dirk, wollte nur kurz melden dass Alles wunderbar geklappt hat!

    Ich musste nur noch zusaetzlich "FALSE" und "TRUE" in "false" und "true" aendern (irgendwie gefiel das dem Compiler nicht),
    dann TIMSK ueberall zu TIMSK1 machen.
    Die Timerkonfiguration scheint gleich zu sein bei beiden Modulen.

    Vielen Dank!

    MM2forever

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @MM2forever:
    Super, dass alles geklappt hat.
    Würdest du evtl. die angepasste Servo-Lib für die M256 hier einstellen?
    Wäre bestimmt für manchen eine Hilfe ...!
    Gruß
    Dirk

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    16.12.2012
    Beiträge
    17
    Zitat Zitat von Dirk Beitrag anzeigen
    @MM2forever:
    Super, dass alles geklappt hat.
    Würdest du evtl. die angepasste Servo-Lib für die M256 hier einstellen?
    Wäre bestimmt für manchen eine Hilfe ...!
    Das hatte ich vor Dirk, nur leider war ich zu schnell mit meinem "Alles Super".

    Ich hatte zunaechst 2 Servos an die Pins PB6/OC1B und PB5/OC1A angeschlossen. Die fuhren dann dein Demo Programm ab. Als ich heute mein Testboard ein bisschen umgeloetet habe um einen 3. Servo an PG5/OC0B anzuschliessen reagierten ALLE Servos auf einmal komisch (stottern, fuhren zufaellig vorwaerts und rueckwaerts).

    Ich habe dann mal nur einen Servo genommen und abwechselnd im laufenden Betrieb zwischen den 3 Ports umgesteckt - DAS geht.
    Nur wenn 3 angeschlossen sind und IMMER wenn 2 angeschlossen sind und der 3. Port (OC0B) belegt ist - spinnen die Servos.

    Ich habe mal ein Amperemeter dazwischengehengt - Die Servos brauchen eigentlich nur ganz wenig (im Leerlauf) - also eine Ueberlastung meiner 1A Spannungsquelle kann eigentlich nicht vorliegen. Was soll ich tun?

    Gruesse
    MM2forever

Berechtigungen

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

Labornetzteil AliExpress