Benutzer-Werkzeuge

Webseiten-Werkzeuge


bauteile:dynamixel_servos

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
bauteile:dynamixel_servos [2017/12/21 17:50]
d.golovko
bauteile:dynamixel_servos [2021/12/14 11:52] (aktuell)
luismeixner
Zeile 1: Zeile 1:
 =====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 CDSXX-Controller. ​+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 [[abgeschlossene_projekte:​drinkbot|diesem Projekt]] bekommen. Mit der [[https://​sourceforge.net/​projects/​dynamixelforarduino/​files/?​source=navbar|DynamixelSoftSerial-Bibliothek]] kann man die Motoren von Arduino ansteuern. Leider nutzt diese Bibliothek eine veraltete Version einer anderen Arduino-Bibliothek,​ [[https://​github.com/​arduino/​Arduino/​tree/​master/​hardware/​arduino/​avr/​libraries/​SoftwareSerial/​src ​+Eine Übersicht darüber, wie man die Servos anschließt,​ kann man aus [[abgeschlossene_projekte:​drinkbot|diesem Projekt]] bekommen. Mit der [[https://​sourceforge.net/​projects/​dynamixelforarduino/​files/?​source=navbar|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,​ [[https://​github.com/​arduino/​Arduino/​tree/​master/​hardware/​arduino/​avr/​libraries/​SoftwareSerial/​src ​
 |SoftwareSerial]]. Um dieses Problem zu beheben, müsst ihr:\\ |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\\ * 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\\ * Die Methoden ''​void setTX(uint8_t transmitPin)''​ und ''​void setRX(uint8_t receivePin)''​ in den Bereich "​public"​ verschieben\\
-* Überall statt "​SoftwareSerial" ​eine neue Klassenname ​vergeben, z.B. "​MySoftwareSerial"​ (sonst überschneiden sich die Namen mit der aktuellen ​Bibliothek)\\+* Überall statt "​SoftwareSerial" ​den neuen Klassenname ​angeben, z.B. "​MySoftwareSerial"​ (sonst überschneiden sich die Namen mit der aktuell veralteten Version der Bibliothek)\\
  
  
Zeile 15: Zeile 15:
 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. ​ 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:
  
 +<code cpp>
 +#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
 +}
 +</​code>​
  
  
bauteile/dynamixel_servos.1513875018.txt.gz · Zuletzt geändert: 2017/12/21 17:50 von d.golovko