Inhaltsverzeichnis:

Steuern von Dynamixel 12A durch serielles Senden von Paketen - Gunook
Steuern von Dynamixel 12A durch serielles Senden von Paketen - Gunook

Video: Steuern von Dynamixel 12A durch serielles Senden von Paketen - Gunook

Video: Steuern von Dynamixel 12A durch serielles Senden von Paketen - Gunook
Video: Самосбор 3D Printer Core XY All Inclusive, DIY FINAL 2024, November
Anonim
Steuerung von Dynamixel 12A durch serielles Senden von Paketen
Steuerung von Dynamixel 12A durch serielles Senden von Paketen

DYNAMIXEL 12A

Schritt 1: Erforderliche Komponenten

HARDWARE:

1. Dynamixel 12A oder jeder Dynamixel-Motor

2. USB zu Dynamixel.

SOFTWARE:

1. Robotis Dynamixel-Assistent.

2. Python ---Serielles Paket installiert

Schritt 2: Einführung in Dynamixel 12A

Dynamixel-Motoren sind hochpräzise und werden hauptsächlich in der Robotik verwendet. Jeder Dynamixel-Motor hat einen STM-Mikrocontroller im Inneren. Sie können aktuelles Drehmoment, Spannung, Stromaufnahme, Temperatur, Position usw. von Dynamixels Motors ablesen.

Spezifikationen von Dynamixel 12A:

Betriebsspannung --12v

Gewicht--55g

Maximaler Strom --900mA

Stillstandsdrehmoment - 15,3 kg.cm

Schritt 3: Kommunikation/Steuerung von Dynamixel 12A

  • Dynamixel 12A ist nicht wie normale Servomotoren, die über 3-Pin-GND, PWM, VCC verfügen, Stromversorgung und PWM-Signal geben und den Motor steuern.
  • Wir können Dynamixel-Motoren mit dem Halbduplex-UART-Kommunikationsprotokoll steuern.

Was ist das Halbduplex-Kommunikationsprotokoll?

Halbduplex-Datenübertragung bedeutet, dass auf einem Signalträger Daten in beide Richtungen übertragen werden können, jedoch nicht gleichzeitig.

Jetzt lernen wir das Protokoll 1.0 für Dynamixels von Robotis kennen, um Dynamixel-Motoren zu steuern.

  • Sie können mit Dynamixel-Motoren kommunizieren, indem Sie Pakete von Ihrem Laptop/Mikrocontroller wie Arduino, r-pi usw. an den Mikrocontroller senden, der in den Dynamixel-Motoren vorhanden ist.
  • Alle Dynamixels haben IDs, die geändert werden können.
  • Ein Paket ist nichts anderes als ein Satz von Bytes.

Im Falle des Dynamixel-Protokolls 1.0 haben Sie zwei Arten von Paketen

  • Anleitungspakete
  • Statuspakete

Befehlspaket sind die an das Gerät gesendeten Befehlsdaten.

Anleitungspaket sieht so aus:

Header1, Header2, ID, Länge, Anweisung, Param 1…Param, NChecksum

0xFF, 0xFF, ID, Länge, Anweisung Param 1…Param, NCHKSUM

Das Anweisungsbyte sagt, was zu tun ist, ob Daten gelesen oder in den Dynamixel-Motor geschrieben werden sollen.

STEUERTABELLE EINES DYNAMIXEL-MOTORS.-Die Steuertabelle ist eine Struktur, die aus mehreren Datenfeldern besteht, um den Status zu speichern oder das Gerät zu steuern.

Lesen Sie mehr über Steuertisch hierSteuertisch Robotis.

Wir können von ihrer Adresse aus auf Daten in der Steuertabelle zugreifen und auch schreiben.

Schritt 4: Schreiben der Zielposition in den Dynamixel-Motor

Anweisungspaket zum Schreiben der Zielposition

Jedes Paket beginnt mit einem Header

H1 H2 ID LEN INST P1 P2 P3 CKSM

0xFF, 0xFF, 0x01, 0x05, 0x04, 0x1E, 0xF4, 0x01, 0xE2

LEN-Befehlsbyte+p1+p2+p3+chk sum=5 Bytes

ID = Dynamixel-Motor-ID 1 - Sie können die Dynamixel-ID mit der Robotis Dynamixel Wizard-Software einstellen

INST=reg write-gibt an, dass Sie in den Motor schreiben.

P1=Startadresse des Data-In in der Steuertabelle Die Zielposition hat eine Adresse 30(0x1E in hexadezimal).

P2=unteres Datenbyte

P3=höheres Datenbyte

Die Berechnung der Prüfsumme wird in Kürze erklärt………………….

Wenn Sie das obige Paket seriell über USB2Dynamixel an Dynamixel senden, wird die Motorzielposition von Dynamixel auf 500 gesetzt.

Schritt 5: PYTHON-CODE

#Entwickelt von Madhu. Letzte Aktualisierung am 19.07.2019

Seriennummer importieren

Importzeit

ser=serial. Serial('com36', '57142')

#com-Port entsprechend ändern, die Baudrate meiner Dynamixel-Motoren beträgt 57142, Sie können sie mit der Dynamixel-Assistentensoftware einstellen.

während(1):

gp1=input('Zielposition ID1 eingeben(0-1023)')

l=gp1&255 #niedriges Byte

h=(gp1>>8)&255 #High-Byte

li=[0xff, 0xff, 0x01, 0x05, 0x04, 0x1e, l1, h1]

#Prüfsummenberechnung

crc=sum(li[2:])

low1=crc & 255

Prüfsumme=255-low1

li.append(chksum) #Prüfsumme hinzufügen

a=bytearray(li) #konvertieren der Liste in bytearray

ser.write(a) #Seriell mit usb2dynamixels senden.

time.sleep(0.5)

#Kopieren Sie die Codepaste in die Python-IDE. pyserial-Paket installieren. Verbinden Sie die USB-Seite von usb2dynamixel mit dem USB-Port des Laptops und ein anderes Ende mit dem Dynamixel-Motor. Versorgen Sie USB2DYNAMIXEL mit einer externen 12-V-Versorgung.

FÜHREN Sie den Code aus, geben Sie den Zielpositionswert ein. Siehe Motor läuft.

Empfohlen: