Les servo-moteurs XL-320 sont légers, rapides, précis et offre d’importante possibilités de contrôle. De plus, ils sont très bon marché. Ces moteurs sont parfaits pour commencer la robotique et ils peuvent même permettre de fabriquer des robots très complexes. Ils ont cependant un couple faible (0.39 N.m) et ne permettront de faire que des robots de petite taille.
Le montage et le démontage des moteurs est facilité par l’utilisation des rivets Ollo.
Ces moteurs n’ont actuellement pas d’équivalent sur le marché, ce sont les seuls moteurs « low-cost » atteignant un tel niveau de performance. Ils sont fabriqué par l’entreprise Coréenne Robotis.
Caractéristiques techniques :
Poids | 16.7g |
Dimensions | 24 x 36 x 27 mm |
Signal de commande : | Paquet Numérique |
Couple (kg.cm) | 3.98 |
Couple (N.m) | 0.39 |
Vitesse (tr/min) | 114 |
Tension d’alimentation | 6 ~ 8.4V |
Tension maximale | 8.4V |
Tension recommandée | 7.4V |
Rapport de réduction | 238 : 1 |
Rotation minimum : | Environ 0.29 degrés x 1024 |
Type de protocole : | Série Asynchrone Half Duplex (8 Bit, 1 Stop, sans parité) |
Tension : | 7.4 V |
Température de fonctionnement : | -5° ~ +70° |
Lien (physique) : | Niveau TTL Multi Drop |
ID : | 254 ID (0~253) |
Vitesse de transmission : | 7843bps ~ 1 Mbps |
Retour d’informations : | Position, de température, de charge, tension d’entrée, etc |
Moteur | Cored |
Ces servo-moteurs comprennent un moteur monté sur une carte électronique avec un contrôleur magnétique de position.
Le microcontrôleur de la carte électronique embarqué dans le moteur sert à gérer la communication avec l’extérieur ainsi que les réglages de position ,de vitesse et de couple.
L’ensemble des données accessibles sur les registres du moteurs sont représentées dans le tableau suivant :
Area | Address (Hexadecimal) | Size(byet) | Name | Description | Access | Inital Value | Min | Max |
E
E P R O M |
0 | 2 | Model Number | Model number | R | 350 | – | – |
2 | 1 | Version of Firmware | Information on the version of firmware | R | – | – | – | |
3 | 1 | ID | ID of Dynamixel | RW | 1 | 0 | 252 | |
4 | 1 | Baud Rate | Baud Rate of Dynamixel | RW | 3 | 0 | 3 | |
5 | 1 | Return Delay Time | Return Delay Time | RW | 250 | 0 | 254 | |
6 | 2 | CW Angle Limit | clockwise Angle Limit | RW | 0 | 0 | 1023 | |
8 | 2 | CCW Angle Limit | counterclockwise Angle Limit | RW | 1023 | 0 | 1023 | |
11 | 1 | Control Mode | Control Mode | RW | 2 | 1 | 2 | |
12 | 1 | Limit Temperature | Internal Limit Temperature | RW | 65 | 0 | 150 | |
13 | 1 | lower Limit Voltage | Lowest Limit Voltage | RW | 60 | 50 | 250 | |
14 | 1 | Upper Limit Voltage | Upper Limit Voltage | RW | 90 | 50 | 250 | |
15 | 2 | Max Torque | Lowest byte of Max. Torque | RW | 1023 | 0 | 1023 | |
17 | 1 | Return Level | Return Level | RW | 2 | 0 | 2 | |
18 | 1 | Alarm Shutdown | Shutdown for Alarm | RW | 3 | 0 | 7 | |
R7
A M |
24 | 1 | Torque Enable | Torque On/Off | RW | 0 | 0 | 1 |
25 | 1 | LED | LED On/Off | RW | 0 | 0 | 7 | |
27 | 1 | D Gain | D Gain | RW | 0 | 0 | 254 | |
28 | 1 | I Gain | I Gain | RW | 0 | 0 | 254 | |
29 | 1 | P Gain | P Gain | RW | 32 | 0 | 254 | |
30 | 2 | Goal Position | Goal Position | RW | – | 0 | 1023 | |
32 | 2 | Goal Velocity | Goal Speed | RW | – | 0 | 2047 | |
35 | 2 | Goal Torque | Goal Torque | RW | – | 0 | 1023 | |
37 | 2 | Present Position | Current Position | R | – | – | – | |
39 | 2 | Present Speed | Current Speed | R | – | – | – | |
41 | 2 | Present Load | Current Load | R | – | – | – | |
45 | 1 | Present Voltage | Current Voltage | R | – | – | – | |
46 | 1 | Present Temperature | Present temperature | R | – | – | – | |
47 | 1 | Registered Instruction | Registered Instruction | R | 0 | – | – | |
49 | 1 | Moving | Moving | R | 0 | – | – | |
50 | 1 | Hardware Error Status | Hardware error status | R | 0 | – | – | |
51 | 2 | Punch | Punch | RW | 32 | 0 | 1023 |
Il est donc possible de donner des objectifs de position, de vitesse et de couple maximum, ainsi que de gérer un asservissement de type PID. Les valeurs de position, de vitesse, de couple, de température peuvent être lues et le moteur peut fonctionner en mode « articulation » (-150°/+150°) ou en mode « roue » (rotation continue).
Le protocole de communication est en half-duplex (le même fil pour l’aller et le retour des informations) , TTL ( le signal est en 0-5V), asynchrone (il faut indiquer au moteur quel est l’unité de temps de découpage du signal) . Les trames envoyées doivent respecter le protocole de communication dynamixel 2.0.
La notice technique complète est disponible sur le site du fabricant du moteur (également les côtes du moteur XL-320).
Utilisation :
Il est bien entendu possible de contrôler le moteur en utilisant une carte de communication UART et les informations du protocole mais cela représente beaucoup de travail et il existe déjà des solutions prêtes à l’emploi pour contrôler efficacement le moteur. Voici un extrait des possibilités les plus couramment utilisées.
Contrôler le moteur depuis une Raspberry Pi
C’est la meilleure solution, car la Raspberry pourra être embarquée sur le robot. Vous aurez besoin d’une Raspberry Pi (2 ou 3) et d’une carte PIXL permettant la communication avec les moteurs.
La Raspberry doit être paramétrée correctement afin de fonctionner avec la carte. Le plus simple est de récupérer une version de Raspbian déjà paramétrée et de l’installer sur une carte mémoire pour votre Raspberry.
Rasp.Pi 2 : (utilisateur : poppy / mot de passe :poppy / hostname : poppy ) télécharger.
Rasp.Pi 3 : voir la section download.
Néanmoins si vous désirez, paramétrer votre propre Raspbian, la procédure est décrite ici.
Une fois votre Raspberry correctement configuré, connectez un seul moteur à la carte car vous allez devoir d’abord attribuer des ID différents à vos différents moteurs. C’est la librairie python Pypot qui permet de contrôler les moteurs.
Voir un exemple de code python commenté qui montre les commandes de bases des moteurs et comment changez l’ID d’un moteur. Les commandes Python sont passées depuis un notebook Jupyter (accessible sur http://roboticia.local:8888 si vous avez récupéré l’image citée précédemment).
Contrôler le moteur depuis un ordinateur
Ce peut être une solution pour des montages fixes ou pour tester les moteurs. Il vous faudra un USB2AX et une carte d’alimentation.
Contrôler le moteur depuis une carte Arduino
Pour des montages simples car la complexité des programmes sera limitée par la puissance du microcontrôleur. Des explications sur ce forum.
What’s Taking place i’m new to this, I stumbled upon this I’ve found It
absolutely useful and it has helped me out loads. I hope
to give a contribution & assist other users like
its helped me. Great job.