Table des matières:

Contrôler le Dynamixel 12A en envoyant des paquets en série : 5 étapes
Contrôler le Dynamixel 12A en envoyant des paquets en série : 5 étapes

Vidéo: Contrôler le Dynamixel 12A en envoyant des paquets en série : 5 étapes

Vidéo: Contrôler le Dynamixel 12A en envoyant des paquets en série : 5 étapes
Vidéo: How To: Use Packet Control in Dynamixel Wizard 2.0 2024, Novembre
Anonim
Contrôle du Dynamixel 12A en envoyant des paquets en série
Contrôle du Dynamixel 12A en envoyant des paquets en série

DYNAMIXEL 12A

Étape 1: Composants requis

MATÉRIEL:

1. Dynamixel 12A ou n'importe quel moteur Dynamixel

2. USB vers Dynamixel.

LOGICIEL:

1. Assistant Robotis Dynamixel.

2. Python --- Paquet série installé

Étape 2: Présentation du Dynamixel 12A

Les moteurs Dynamixel sont très précis et principalement utilisés en robotique. Chaque moteur Dynamixel a un microcontrôleur STM à l'intérieur. Vous pouvez lire le couple actuel, la tension, l'appel de courant, la température, la position, etc., à partir de Dynamixels Motors.

Spécifications du Dynamixel 12A:

Tension de fonctionnement --12v

Poids-55g

Courant maximum --900mA

Couple de décrochage - 15,3 Kg.cm

Étape 3: Communiquer/contrôler Dynamixel 12A

  • Dynamixel 12A n'est pas comme les servomoteurs normaux qui ont 3 broches GND, PWM, VCC, fournissent une alimentation et un signal PWM et contrôlent le moteur.
  • Nous pouvons contrôler les moteurs Dynamixel en utilisant le protocole de communication Half Duplex UART.

Qu'est-ce que le protocole de communication semi-duplex ?

La transmission de données en semi-duplex signifie que les données peuvent être transmises dans les deux sens sur un support de signal, mais pas en même temps.

Maintenant, nous découvrons le protocole 1.0 pour Dynamixels de Robotis pour contrôler les moteurs Dynamixel.

  • Vous pouvez communiquer avec les moteurs Dynamixel en envoyant des paquets depuis votre ordinateur portable/microcontrôleur comme Arduino, r-pi, etc., vers le microcontrôleur présent à l'intérieur des moteurs Dynamixel.
  • Tous les Dynamixels ont des identifiants qui peuvent être modifiés.
  • Un paquet n'est rien d'autre qu'un ensemble d'octets.

Dans le cas du protocole Dynamixel 1.0, vous aurez deux types de paquets

  • Paquets d'instructions
  • Paquets d'état

Le paquet d'instructions correspond aux données de commande envoyées à l'appareil.

Le paquet d'instructions ressemble à ceci:

En-tête1, En-tête2, ID, Longueur, Instruction, Param 1…Param, NChecksum

0xFF, 0xFF, ID, Longueur, Instruction Param 1…Param, NCHKSUM

L'octet d'instruction indique quoi faire, s'il faut lire les données ou écrire sur le moteur Dynamixel.

TABLE DE CONTRLE D'UN MOTEUR DYNAMIXEL.-La table de contrôle est une structure composée de plusieurs champs de données pour stocker l'état ou contrôler l'appareil.

En savoir plus sur la table de contrôle HereControl Table Robotis.

Nous pouvons accéder aux données de la table de contrôle à partir de son adresse et nous pouvons également écrire.

Étape 4: Écriture de la position de l'objectif sur le moteur Dynamixel

Paquet d'instructions pour écrire la position de l'objectif

chaque paquet commence par un en-tête

H1 H2 ID LEN INST P1 P2 P3 CKSM

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

Octet d'instruction LEN+p1+p2+p3+chk sum=5 octets

ID = ID du moteur Dynamixel 1 - vous pouvez définir l'ID dynamixel à l'aide du logiciel assistant robotis dynamixel

INST=reg write-spécifiant que vous écrivez sur le moteur.

P1=Adresse de départ du Data-In de la table de contrôle La position de l'objectif a une adresse 30 (0x1E en hexadécimal).

P2=octet inférieur de données

P3=octet de données supérieur

Le calcul de la somme de contrôle sera expliqué sous peu………………….

Si vous envoyez le paquet ci-dessus à Dynamixel en série en utilisant USB2Dynamixel, la position d'objectif du moteur Dynamixel sera définie sur 500.

Étape 5: CODE PYTHON

#Développé par Madhu. Dernière mise à jour le 2019-07-19

importer la série

heure d'importation

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

#changez le port com en conséquence, le débit en bauds de mes moteurs dynamixel est de 57142, vous pouvez le définir à l'aide du logiciel assistant Dynamixel.

tandis que(1):

gp1=input('entrez la position de l'objectif ID1 (0-1023)')

l=gp1&255 #octet bas

h=(gp1>>8)&255 #octet de poids fort

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

#calcul de la somme de contrôle

crc=somme(li[2:])

bas1=crc & 255

chksum=255-low1

li.append(chksum) #ajout d'une somme de contrôle

a=bytearray(li) #conversion de la liste en bytearray

ser.write(a) #Envoyer en série en utilisant usb2dynamixels.

temps.sommeil (0,5)

#Copiez le code coller dans python IDE. Installez le paquet pyserial. connectez le côté USB d'usb2dynamixel au port USB de l'ordinateur portable et une autre extrémité au moteur Dynamixel. Donnez une alimentation externe 12v à USB2DYNAMIXEL.

Exécutez le code, entrez la valeur de la position de l'objectif. Voir moteur en marche.

Conseillé: