Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

bauteile:dynamixel_servos

Dynamixel-Servos

Die Dynamixel-Servos sind eine Kette aus mehreren (im Labor: drei) veknüpften Servo-Motoren. Damit kann man z.B. Bewegungen realisieren, die dennen eines Armes ähneln. Die Servos brauchen einen Treiber; Im Labor gibt es dafür den AX-12 CDS 55xx-Controller.

Eine Übersicht darüber, wie man die Servos anschließt, kann man aus diesem Projekt bekommen. Mit der DynamixelSoftSerial-Bibliothek kann man die Motoren von Arduino ansteuern. Mit Arduino Nano läuft es so, wie bei drinkbot beschrieben. Im Fall von Arduino Mega: Leider nutzt diese Bibliothek eine veraltete Version einer anderen Arduino-Bibliothek, SoftwareSerial. Um dieses Problem zu beheben, müsst ihr:
* Den Code aus der SoftwareSerial-Bibliothek (die .h- und die .cpp-Datei) in den Ordner mit der DynamixelSoftSerial-Bibliothek kopieren
* Die Methoden void setTX(uint8_t transmitPin) und void setRX(uint8_t receivePin) in den Bereich „public“ verschieben
* Überall statt „SoftwareSerial“ den neuen Klassenname angeben, z.B. „MySoftwareSerial“ (sonst überschneiden sich die Namen mit der aktuell veralteten Version der Bibliothek)

Alternativ könnt ihr diese bereits modifizierte Version der DynamixelSoftSerial-Bibliothek hier herunterladen:
dynamixelsoftserial.zip

Wenn ihr mit Arduino Mega arbeitet, müsst ihr drauf achten, dass nur bestimmte Pins für SoftwareSerial dort geeignet sind. Deswegen müsst ihr in der Datei in der Zeile extern MySoftwareSerial SoftSerial(2,3); die Pin-Nummer anpassen, z.B. auf extern MySoftwareSerial SoftSerial(10,11);. Die TX- und RX-Pins des Servo-Controllers sollen trotzdem mit den Pins 2 (RX) und 3 (TX) verbunden werden.

Der Code kann dann z.B. so aussehen:

#include <DynamixelSoftSerial.h>
#include <MySoftwareSerial.h>
 
void setup() {
  Dynamixel.begin(19200, 2, 3, 4);
}
 
void loop() {
  Dynamixel.moveSpeed(1, 500, 100);       // Move Servo 1 to position 500
  Dynamixel.moveSpeed(2, 400, 100);       // Move Servo 2 to position 400
  Dynamixel.moveSpeed(3, 950, 100);       // Move Servo 2 to position 950
}
bauteile/dynamixel_servos.txt · Zuletzt geändert: 2021/12/14 11:52 von luismeixner