Mise à jour le 08/10/2020 : Dans cet article vous trouverez les caractéristiques principales de la carte ArbotiX-M .Ce contrôleur de robot polyvalent est une solution de contrôle avancée pour les actionneurs basés sur BIOLOID et DYNAMIXEL
Sommaire :
- Description de la carte ArbotiX-M
- Spécifications techniques de la carte
- Compatibilité avec les servo Dynamixel suivant
- Information complementaire sur la carte ArbotiX-M
- Explication de la partie Hardware de la carte
- Cablage des entrées analogiques
- Alimentation du bus pour les servomoteurs type RC
- Téléchargez Arduino 1.0.6 et installez
- Comment connaitre les macro de la bibliotheque Bioloid
- Table de controle de la zone EEPROM et RAM du servomoteur AX-12
- 0-Donne le numéro de modèle du servomoteur R
- 2-Version du firmware R
- 3-Identifiant du servomoteur R/W
- Explication de l’identifiant
- Tutoriel sur le changement d’idenfiant
- Code source
- 4-vitesse de communication série entre un contrôleur et le servo R/W
- Tableau de la vitesse de transmission des servomoteurs Dynamixel
- Tutoriel pour la modification de la vitesse de communication
- Code source pour le Tutoriel
- 5-Délai de réponse du servo R/W
- 6-Limite d’angle dans le sens horaire R/W
- 8-Limite d’angle anti-horaire R/W
- 11-Limite de température interne maximale R/W
- 12-Limite de tension d’entrée minimale R/W
- 13-Limite de tension d’entrée maximale R/W
- 14-Couple maximal R/W
- 16-Sélectionnez les types de déclaration de statut R/W
- 17-LED pour alarme R/W
- 18-Informations sur les erreurs d’arrêt R/W
- 24-Activation et désactivation du couple R/W
- 25-Allumez ou éteignez la LED du DYNAMIXEL. R/W
- 26-27-Controle d’erreur de deplacement R/W
- 28-29-Pente de conformité R/W
- 30-Position de l’objectif R/W
- 32-Vitesse de deplacement R/W
- 34-Limite du couple R/W
- 36-Position actuelle de votre servomoteur R
- 42-obtenir la tension actuelle du servo. R
- 43-obtenir la température actuelle du servo R
- 44-Macro permettant de savoir si le servo a une commande enregistrée R
- Pilotage de la led sur le servomoteur
- Exemple utilisation des moteurs Dynamixel
- A savoir sur l’utilisation des informations de cette article .
- Pour tout probléme
- Retour au menu principal
.
Description de la carte ArbotiX-M |
Ce contrôleur de robot polyvalent est une solution de contrôle avancée pour les actionneurs basés sur BIOLOID et DYNAMIXEL. En tant que microcontrôleur compatible Arduino, la carte contrôleur Arbotix bénéficie également d’une énorme communauté open source de bibliothèques et d’exemples. Depuis sa sortie en 2010, l’ArbotiX-M est rapidement devenu un favori parmi les constructeurs du monde entier, du loisir à la recherche de haut niveau.
Cette carte a été spécifiquement conçue pour contrôler les servomoteurs Dynamixel. La carte ArbotiX-M est plus qu’un remplaçant pour la carte de controle CM-5, il s’agit plutôt d’un outil de haut niveau dédié à la construction de robots plus sophistiqués.
Specifications techniques de la carte contrôleur robotique ArbotiX-M
- microcontrôleur AVR 16 MHz (ATMEGA644p)
- 2 ports séries, 1 dédié aux servo-contrôleurs Dynamixel, l’autre au module radio XBEE
- 3 ports de style TTL DYNAMIXEL à 3 broches
- 28 E / S numériques, dont 8 peuvent également fonctionner comme entrées analogiques
- Embases à 3 broches de style servo (gnd, vcc, signal) sur les 28 broches d’E / S
- Cette carte nécessite un câble FTDI ou un FAI pour la programmation. Pour un câble FTDI, nous recommandons le câble Sparkfun FTDI – USB , vous pouvez également utiliser le programmeur AVR USB .
- Avec une dimension de 7.11 x 7.11 cm (2.8″ x 2.8 « )
Compatibilité avec les servo Dynamixel suivant
AX-12A : Le servo robot AX-12A a la capacité de suivre sa vitesse, sa température, la position de l’arbre, la tension et la charge. De plus l’algorithme de contrôle utilisé pour maintenir la position de l’arbre sur l’actionneur ax-12 peut être ajusté individuellement pour chaque servo, vous permettant de contrôler la vitesse et la force de la réponse du moteur. Toute la gestion des capteurs et le contrôle de position sont gérés par le microcontrôleur intégré du servo. Cette approche distribuée laisse votre contrôleur principal libre d’effectuer d’autres fonctions.
AX-18A : Le servomoteur AX-18A est la prochaine étape par rapport servomoteur AX-12A, offrant près de deux fois la vitesse et 15% de couple en plus! Le servo robot AX-18A conserve le facteur de forme et toutes les mêmes caractéristiques que son prédécesseur: la possibilité de suivre sa vitesse, sa température, la position de l’arbre, la tension et la charge. L’algorithme de contrôle fonctionne de la méme façon que la version AX-12A
- Compatibilité du moteur avec les cartes suivantes :
- Robot-contrôleur ArbotiX-M
- ROBOTIS CM-530
- ROBOTIS USB2DYNAMIXEL
- ROBOTIS CM-700
- ROBOTIS Open CM 9
AX-12W : Le servomoteur AX-12W de Robotis est une variante à roues du populaire AX-12A. Essentiellement, ce servo est un AX-12A avec un rapport d’engrenage inférieur, de sorte qu’un régime beaucoup plus élevé peut être atteint, ce qui le rend idéal pour une utilisation en mode roue par opposition au mode commun. Le servo robot AX-12W a la capacité de suivre sa température, sa tension et sa charge.L’algorithme de contrôle fonctionne de la méme façon que la version AX-12A , AX-18A
- Tension de fonctionnement : 12V
- Couple de décrochage : 2,0 kg-cm / 28 oz-in / 0,2 Nm
- Vitesse à vide : 470 tr / min (mode roue)
- Poids : 53g
- Taille : 50 x 32 x 38 mm
- Résolution : 0,29 °
- Servos de résolution : 300 ° / 10 BITS
- Compatibilité du moteur avec les cartes suivantes :
- Robot-contrôleur ArbotiX-M
- Module de controle Bioloid CM-5
- Adaptateur Robotis USB2Dynamixel
Information complementaire sur la carte ArbotiX-M
- Vous ne pouvez pas programmer l’ArbotiX pendant qu’un XBee est branché sur l’ArbotiX ou l’UartSBee. Vous devez débrancher tout XBees de l’ArbotiX-M ou UartSBee pendant la programmation. En effet, le XBee et le câble FTDI sont connectés au même port série. Si vous souhaitez programmer la carte alors qu’un XBee est branché, vous devez utiliser la programmation ISP
Retour au sommaire
.
Explication de la partie Hardware de la carte |
Cablage des entrée analogiques
Les broches analogiques font également office de broches d’E / S numériques. Vous pouvez y accéder dans l’IDE Arduino en adressant les broches numériques 24-31 pour accéder aux broches analogiques A0-A7.
.
.
Retour au sommaire
Alimentation du bus pour les servomoteurs type RC
Avoir ces quatre ports sur un bus d’alimentation séparé est idéal pour utiliser à la fois les servos RC et les servos DYNAMIXEL du même ArbotiX. La plupart des servos DYNAMIXEL ont besoin de 11-12V pour fonctionner, mais la plupart des servomoteurs RC fonctionnent à partir de 5-6v. Comme le régulateur 5v a une puissance de sortie limitée, il n’est pas judicieux d’alimenter les servomoteurs à partir du BUS 5v. En ajoutant une autre alimentation, il est facile d’alimenter en toute sécurité ses servos RC
.
Code pour le pilotage d’un servo RC et d’un servomoteur Dynamixel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
// // //************************************************************* //* //* IDE Arduino 1.0.6 //* //* Exemple de pilotage d'un servo Dynamixel //* et d'un servo Rc sur la meme carte //* //* H-Mazelin //* 05/08/2020 //* //************************************************************* //librairie qui permet d'implémentez le code de communication série //de bas niveau pour communiquer avec le bus Bioloid. #include <ax12.h> //Cette librairies vous permet interagir avec les servos AX et MX // Cette librairie permet à une carte ArbotiX-M de contrôler des servomoteurs #include <Servo.h> // Crée un objet de type "Servo", nommé -> servo01 Servo servo01; /* * Un programme Arduino doit impérativement contenir cette fonction * Elle ne sera exécuter une seule fois au démarrage du microcontroleur * Elle sert à configurer globalement les entrées sorties * */ void setup () { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret delay(1000); // Information a l'operateur de l'ouverture du port de communication // sur le moniteur serie Serial.println("========================================"); Serial.println("Communication etablie"); Serial.println("========================================"); // associe le servomoteur a la broche 12 servo01.attach(12); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop() { // Exemple de mouvement du servomoteur // avec la commande SetPosition(identifiant,position) SetPosition(2,250); // Pilotage du servomoteur RC servo01.write (20); delay (2000); // Pilotage du servomoteur Dynamixel SetPosition(2,800); // Pilotage du servomoteur RC retour en arriere a 170 degres servo01.write(160); delay (2000); // // } |
.
Retour au sommaire.
Téléchargez Arduino 1.0.6 et installez |
L’Arduino IDE est une application que vous pouvez utiliser pour programmer et interagir avec des microcontrôleurs basés sur Arduino comme l’ArbotiX-M. Les bibliothèques ArbotiX-M ont été minutieusement testées avec IDE Arduino 1.0.6. Les bibliothèques actuelle ne prenne pas en charge les anciennes versions d’Arduino (beta 18-23) ou Arduino 1.6. Les utilisateurs peuvent télécharger l’IDE Arduino compressé et le décompresser à l’emplacement de leur choix. Les utilisateurs de Windows peuvent également utiliser Windows Installer pour automatiser ce processus.
Retour au sommaire.
Comment connaitre les macro de la bibliotheque Bioloid |
Il est toujours très intéressant de connaître le contenu d’une bibliothèque et en l’occurrence du fichier d’en-tête. Quelquefois on peut passer à côté de certains codes ou macros qui sont très intéressantes.
De quoi est composée la bibliothèque.
C’est un dossier qui contient :
- Le fichier d’entête. Repérable par « .h »
- Le fichier sources. Repérable par « .cpp »
- Le dossier « exemple ». Qui contient des codes sources des exemples.
- Arduino
- libraries
- Bioloid
- ax12.ccp
- ax12.h
- BioloidController.cpp
- BioloidController.h
- keywords.txt
- Bioloid
- libraries
Quand vous avez trouvé l’emplacement du fichier « Bioloid.h », ouvrez-le.
A première vue, on a pas l’impression que ce fichier est un code programme car il est présenté sous format » texte ». De ce fait, il est exploitable par un éditeur de texte comme « NotePad », « WordPad » ou le « Bloc-notes ».
A savoir : N’apportez surtout pas de modifications à ce fichier et n’accepter jamais d’enregistrer d’éventuelles modifications car cela entraînerait à coup sûr un mauvais fonctionnement de la bibliothèque.
Vous pourrez constater que le fichier nous donne un grand nombre de macros et à droite des noms des macros vous avez le numéro de registre correspondant.
.
Retour au sommaire.
Table de controle de la zone EEPROM et RAM du servo AX-12 |
.
Definition de la table de controle des servomoteurs.
La table de contrôle est une structure de données implémentée dans l’appareil. Les utilisateurs peuvent lire des données spécifiques pour obtenir l’état de l’appareil avec les paquets d’instructions de lecture, et modifier également les données pour contrôler l’appareil avec les paquets d’instructions WRITE.
Tableau de contrôle,données,adresse
La table de contrôle est une structure qui se compose de plusieurs champs de données pour stocker l’état ou pour contrôler le périphérique. Les utilisateurs peuvent vérifier l’état actuel de l’appareil en lisant des données spécifiques de la table de contrôle avec des paquets d’instructions de lecture. Les paquets d’instructions WRITE permettent aux utilisateurs de contrôler le périphérique en modifiant des données spécifiques dans la table de contrôle. L’adresse est une valeur unique lors de l’accès à des données spécifiques dans la table de contrôle avec des paquets d’instructions. Pour lire ou écrire des données, les utilisateurs doivent désigner une adresse spécifique dans le paquet d’instructions.
Zone EEPROM et RAM
La table de contrôle est divisée en 2 zones. Les données de la zone RAM sont réinitialisées à leurs valeurs initiales lorsque l’alimentation est réinitialisée (volatile). D’autre part, les données dans la zone EEPROM sont conservées même lorsque l’appareil est hors tension (non volatile).
.
AX_MODEL_NUMBER_L et AX_MODEL_NUMBER_H
Registre 0 et Registre 1 en EEPROM
Cette adresse stocke le numéro du modèle du servo Dynamixel.octet de poids faible
Adresse | Fonction | Exemple de lecture du registre | Objectif |
0 |
Donne le numéro de modèle |
ax12GetRegister (1, AX_MODEL_NUMBER_L, 1); ou ax12GetRegister (1,0,1); |
|
Accès | -> Lecture | Valeur initiale en mémoire EEPROM -> | 12 |
.
Exemple de code
1 2 3 4 5 6 7 8 9 10 11 |
// // Serial.println("========================================"); // Cette adresse stocke le numéro de modèle de servomoteur DYNAMIXEL. // Déclare une variable de type int (pour integer, entier en anglais) int modele= ax12GetRegister (1, AX_MODEL_NUMBER_L, 1); // ou l'ecriture ci dessous // int modele= ax12GetRegister (1,0,1); Serial.print ("Modele de servomoteur : "); Serial.println (modele); // |
.
Retour au sommaire.
AX_VERSION
Registre 2 en EEPROM
Cette adresse stocke la version du firmware du servomoteur Dynamixel.
Adresse | Fonction | Exemple de lecture du registre | Objectif |
2 | la version du firmware | ||
Accès | -> Lecture |
.
Retour au sommaireAX_ID
Registre 3 en EEPROM
L’ID est une valeur unique dans le réseau pour identifier chaque DYNAMIXEL avec un paquet d’instructions. Les valeurs 0 ~ 252 (0xFC) peuvent être utilisées comme ID, et 254 (0xFE) sont occupées comme ID de diffusion. L’ID de diffusion (254, 0xFE) peut envoyer simultanément un paquet d’instructions à tous les DYNAMIXEL connectés.
Adresse | Fonction | Exemple d’ecriture dans le registre | Objectif |
3 | Lecture de l’identifiant | ||
R/W |
.
Exemple de code : Modification de l’identifiant du servo
1 2 3 4 5 6 7 8 9 |
// // // Registre 3 modifie l'identifiant du servo de 1 vers 2 // // Procedure d'ecriture dans le registre 3 pour le changement d'identifiant // Modification de la valeur par defaut 1 par l'identifiant 2 ax12SetRegister(1, 3, 2); delay (100); // |
.
Le but de ce tutoriel est de vous initier aux changements de l’identifiant sur les servomoteurs dynamixel par le biais de la carte Arbotix-M
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
// // //************************************************************* //* //* IDE Arduino 1.0.6 //* //* Lecture et ecriture du registre 3 (identifiant du servo) //* But : //* Lecture de la valeur actuel dans le registre 3 //* Renplacement de la valeur par defaut par un nouvel identifiant //* dans notre cas 2 //* Controle du remplacement //* //* Par H-Mazelin le 02/08/2020 //* //************************************************************* //librairie qui permet d'utiliser le code de communication série //de bas niveau pour communiquer avec le bus Bioloid. #include <ax12.h> //Cette librairie vous permet interagir avec les servos AX et MX #include <BioloidController.h> // Vitesse par defaut pour les servo AX-12 = 1000000 BioloidController bioloid = BioloidController(1000000); // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécutee une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret delay(1000); // Information a l'operateur de l'ouverture du port de communication // sur le moniteur serie Serial.println("========================================"); Serial.println("Communication etablie"); Serial.println("========================================"); // // // Registre 3 modifie l'identifiant du servo de 1 vers 2 // // Procedure d'ecriture dans le registre 3 pour le changement d'identifiant // Modification de la valeur par defaut 1 par l'identifiant 2 // Enlever le mode commentaire pour activer le changement d'identifiant // dans la ligne ci-dessous ax12SetRegister(1, 3, 2); delay (100); // } void loop () { // Lecture de l'identifiant actuel int identifiant =ax12GetRegister(2,3,1); // Affichage de la lecture du registre contenant l'identifiant Serial.print("le servo possede l'idenifiant suivant : "); Serial.println (identifiant); delay(1000); // // Exemple de mouvement du servomoteur // avec la commande SetPosition(identifiant,position) Serial.println("lancement du programme sur le servo"); Serial.println("en bas "); SetPosition(2,250); delay(2000); Serial.println("en haut "); SetPosition(2,650); delay(2000); Serial.println(""); } |
.
AX_BAUD_RATE
Registre 4 en EEPROM
Le débit en bauds détermine la vitesse de communication série entre un contrôleur et les servomoteurs Dynamixel.
Adresse | Fonction | Exemple d’ecriture dans le registre | Objectif |
4 R/W |
Fixe la vitesse de communication valeur par defaut 1M avec une marge d’erreur de 0.000%
|
ax12SetRegister(1,4,1); | Valeur par defaut 1M bauds |
A savoir : moins de 3% de la marge d’erreur du débit en bauds n’affectera pas la communication UART.
.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// // // Registre 4 modifie la vitesse entre le controleur et les // servomoteur Dynamixel // // Procedure d'ecriture dans le registre 4 pour le changement de la vitesse // de communication // modification de la valeur 34 par la valeur 1 // 1 parametre : numero de identifiant du servo // 2 parametre : numero du registre a modifie // 3 parametre : valeur de la vitesse de transmission ax12SetRegister(1,4,1); delay (500); |
.
.
Le but de ce tutoriel est de vous familiariser avec les commandes de changement de vitesse et d’identifiant pour les servomoteurs Dynamixel. Le problème est le suivant, la connexion d’un servomoteur MX-106 et d’un servo AX-12 sur la même carte. En sachant que ces deux servomoteurs ne possèdent pas la même vitesse de communication par défaut, et possèdent le même identifiant par défaut. Il faut donc changer la vitesse de communication dans un des servomoteurs pour que les deux fonctionnent sur le même réseau, et enfin que chacun des servomoteurs possède un identifiant propre.
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
// // //************************************************************* //* //* IDE Arduino 1.0.6 //* //* Fonctionnement d'un servomoteur Dynamixel MX-106 //* 1- modification de la vitesse de transmission //* 2- de l'identifiant //* 3- insertion d'un servo AX-12 //* 4- fonctionnment de l'ensemble //* //* RedOhm le 14/09/2020 par Herve Mazelin //* //************************************************************* //librairie qui permet d'implémentez le code de communication série //de bas niveau pour communiquer avec le bus Bioloid. #include <ax12.h> //Cette librairies vous permet interagir avec les servos AX et MX #include <BioloidController.h> // En parenthese le vitesse de communication // Servo AX12 = 1000000 // dans le registre du servo AX12 = 1 par defaut // Servo MX-106 = 57142.9 // dands le registre du servo MX-106 = 34 par defaut // BioloidController bioloid = BioloidController(1000000); // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret delay(1000); // Information a l'operateur de l'ouverture du port de communication // sur le moniteur serie Serial.println("========================================"); Serial.println("Communication etablie"); Serial.println("========================================"); // Registre 4 modifie la vitesse entre le controleur et les // servomoteur Dynamixel // // Procedure d'ecriture dans le registre 4 pour le changement de la vitesse // de communication // modification de la valeur 34 par la valeur 1 // 1 parametre : numero de identifiant du servo // 2 parametre : numero du registre a modifie // 3 parametre : valeur de la vitesse de transmission //ax12SetRegister(1,4,1); //delay (500); // Registre 3 modifie l'identifiant du servo de 1 vers 3 // // Procedure d'ecriture dans le registre 3 pour le changement d'identifiant // Modification de la valeur par defaut 1 par l'identifiant 3 //ax12SetRegister(1, 3, 3); //delay (100); } /* *Le programme principal s’exécute par une boucle infinie appelée Loop () * */ void loop () { // // Registre 3 donne l'identifiant MX-106 // int identifiant = ax12GetRegister(3,3,1); Serial.print ("Registre 3: identifiant du MX-106 : "); Serial.println (identifiant); delay(50); // // Registre 4 donne la vitesse de transmission MX-106 // int vitesse = ax12GetRegister(3,4,1); Serial.print ("Registre 4:Vitesse de transmission du MX-106 : "); Serial.println (vitesse); delay(1000); // Exemple de mouvement du servomoteur MX-106 // avec la commande SetPosition(identifiant,position) // Attention resolution du moteur 4096 Serial.println(" -------- "); Serial.println("lancement du programme sur le servo MX-106"); Serial.println("A gauche"); SetPosition(3,10); delay(2000); Serial.println("A droit"); SetPosition(3,4080); delay(2000); Serial.println(""); // Exemple de mouvement du servomoteur ax-12 // avec la commande SetPosition(identifiant,position) Serial.println("lancement du programme sur le servo AX-12"); Serial.println("A gauche"); SetPosition(2,200); Serial.println("A droit"); delay(2000); SetPosition(2,850); Serial.println(""); Serial.println(""); } |
.
Retour au sommaireAX_TORQUE_ENABLE
Registre 24 en RAM
Adresse | Fonction | Exemple d’ecriture dans le registre | Objectif |
24 R/W |
pour activer / désactiver le couple au servo.. | 0 = Coupez le couple | |
1= le couple et verrouillez dans la zone RAM |
.
Retour au sommaireAX_LED
Registre 26 en RAM
Adresse | Fonction | Exemple d’ecriture dans le registre | Objectif |
25 R/W |
Macro pour activer / désactiver la LED sur le servo. | ax12SetRegister(1, 25, 1) ; | Allume la led |
ax12SetRegister(1, 25, 0) ; |
AX_PRESENT_POSITION_L et AX_PRESENT_POSITION_H
Registre 36 et 37 en RAM
Position actuelle de votre servomoteur Dynamixel La plage de la valeur est 0 ~ 1023 (0x3FF) et l’unité est 0,29 [°].
ATTENTION : S’il est réglé sur Mode roue, la valeur ne peut pas être utilisée pour mesurer la distance de déplacement et la fréquence de rotation.
Adresse | Fonction | Exemple de lecture des registres | Objectif |
36 37 |
Obtenir la position actuelle du servo | ax12GetRegister (1, AX_PRESENT_POSITION_L ,2); | … |
Exemple de code.
1 2 3 4 5 6 7 8 9 10 11 12 |
// // // Registre 36 et 27 vous donne la position actuelle de votre servo // // registre donnant la valeur de la position actuelle du servomoteur // La plage de la valeur est 0 ~ 1023 (0x3FF) et l'unité est 0,29 degre // la taille de la memoire pour int est sur 2 octet soit 16 bits int position_l= ax12GetRegister (1, AX_PRESENT_POSITION_L ,2); Serial.print ("Position actuelle du servomoteur : "); Serial.println (position_l); //delay(100); // |
.
Retour au sommaireAX_PRESENT_VOLTAGE
Registre 42 en RAM
C’est la valeur de la tension actuelle fournie. Cette valeur est 10 fois supérieure à la tension réelle. Par exemple, lorsque 10 V est fourni, la valeur des données est 100 (0x64) Si la valeur de la tension actuelle (42) est hors plage, le bit d’erreur de plage de tension (Bit0) du paquet d’état est renvoyé comme ‘1’ et l’alarme est déclenchée et définie. l’adresse 17 et réglez 1 sur le bit 0 de l’adresse 18.
Adresse | Fonction | Exemple de lecture du registre | Objectif |
42 | obtenir la tension actuelle du servo. | Ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1) | Cette valeur est 10 fois superieur à la tension réelle il faut donc diviser la valeur par 10 |
Ax12GetRegister (1, 42, 1) |
.
Exemple de code pour lire la tension presente sur le servomoteur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// // Registre 42 pour obtenir la tension actuelle du servo. // // Macro pour obtenir la tension actuelle du servo. // -> ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1 // Lecture de la tension sur le servomoteur // Déclare la variable voltage de type "virgule-flottante", // c'est à dire un nombre à virgule. float voltage = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; // ou l'ecriture ci-dessous avec le numero de registre // float voltage = (ax12GetRegister (1, 42,1)) / 10.0; Serial.print("Registre42:Tension presente sur le servomoteur :"); Serial.print (voltage); Serial.println (" volts."); // |
.
Retour au sommaireAX_PRESENT_TEMPERATURE
Registre 43 en RAM
Il s’agit de la température interne de DYNAMIXEL en Celsius.
La valeur des données est identique à la température réelle en degrés Celsius. Par exemple, si la valeur des données est 85 (0x55), la température interne actuelle est de 85 ° C.
Adresse | Fonction | Exemple lecture du registre | Objectif |
43 | obtenir la température actuelle du servo. | ax12GetRegister (1, AX_PRESENT_TEMPERATURE, 1) | la valeur donné est identique a la temperature réelle |
ax12GetRegister (1, AX_43, 1) |
.
Exemple de code
1 2 3 4 5 6 7 8 9 10 11 |
// // //Macro pour obtenir la température actuelle du servo. //Déclare une variable de type int (pour integer, entier en anglais) int temperature = ax12GetRegister (1, AX_PRESENT_TEMPERATURE, 1); //ou l'ecriture ci-dessous //int temperature = ax12GetRegister (1, 43, 1); Serial.print ("Temperature actuelle en degres celsius : "); Serial.print (temperature); Serial.println ("") ; // |
.
Retour au sommaireAX_REGISTERED_INSTRUCTION
Registre 44 en RAM
Adresse | Fonction | Exemple lecture du registre | Objectif |
44 | Macro permettant de savoir si le servo a une commande enregistrée |
ax12GetRegister (1, AX_REGISTERED_INSTRUCTION,1); |
Valeur = 0 L’instruction REG_WRITE n’est pas reçue |
Valeur = 1 L’instruction REG_WRITE est reçue |
.
Exemple de code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// // // Macro permettant de savoir si le servo a une commande enregistrée. // 0 = aucune commande enregistrée 1 = commande enregistrée // Déclare une variable de type int (pour integer, entier en anglais) int commande_enregistree = ax12GetRegister (1, AX_REGISTERED_INSTRUCTION,1); // ou l'ecriture ci-dessous // int commande_enregistree = ax12GetRegister (1, 44,1); Serial.print ("Commande enregistree : "); if (commande_enregistree=1) { Serial.println ("oui"); } else { Serial.println ("non"); } // |
.
Retour au sommaireAX_PAUSE_TIME
Adresse | Fonction | Exemple d’ecriture dans le registre | Objectif |
45 | |||
.
Retour au sommaireAX_MOVING
Adresse | Fonction | Exemple lecture du registre | Objectif |
46 | |||
.
Retour au sommaire
Pilotage de la led sur le servomoteur avec la carte ArbotiX-M |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
// // //************************************************************* //* //* IDE Arduino 1.0.6 //Cette librairies vous permet interagir avec les servos AX et MX //#include <BioloidController.h> //librairie qui permet d'implémentez le code de communication série //de bas niveau pour communiquer avec le bus Bioloid. #include <ax12.h> // --------------------------------------------------------------------------- // Un programme Arduino doit impérativement contenir la fonction "setup" // Elle ne sera exécuter une seule fois au démarrage du microcontroleur // Elle sert à configurer globalement les entrées sorties // --------------------------------------------------------------------------- void setup() { //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret delay(1000); // Information a l'operateur de l'ouverture du port de communication // sur le moniteur serie Serial.println("========================================"); Serial.println("Communication etablie"); Serial.println("========================================"); } // --------------------------------------------------------------------------- // Le programme principal s’exécute par une boucle infinie appelée Loop () // --------------------------------------------------------------------------- void loop() { //Commande pour allumer la led sur le servo //ax12SetRegister(1, 25, 1); //1=> Correspond à l’adresse du servo cible //25=> Numéro de registre //1=> forçage de la variable a 1 la led s’allume ax12SetRegister(1, 25, 1); delay(300); //Commande pour eteindre la led sur le servo //ax12SetRegister(1, 25, 0); //1=> Correspond à l’adresse du servo cible //25=> Numéro de registre //1=> forçage de la variable a 0 la led s’eteint ax12SetRegister(1, 25, 0); delay(300); |
.
Exemple utilisation des moteurs Dynamixel |
.
Robot hexapode
.
Retour au sommaire
.
Lien utile pour la carte contrôleur Arbotix |
Fournisseur :
https://www.trossenrobotics.com/p/arbotix-robot-controller.aspx
Information technique :
Déscription de la table de contrôle du servo AX-12+,AX-12A par Robotis :
A savoir sur l’utilisation des informations de cette article |
.
Les informations sur les caractéristiques et spécificités de la carte ArbotiX-M et ses interfaces associées qui sont fournis sur cette page correspondent aux informations des fiches techniques du constructeur si malgré le soin apporté à la réalisation de cet article une erreur s’est glissée dans ces lignes nous ne pourrions en être tenu responsable.
Les programmes , schémas et autres que ceux donnés par le constructeur font parti des montages utiles à nos applications si malgré le soin apporté à nos montages une erreur s’est glissée dans ces lignes nous ne pourrions en être tenu responsable .
L’ensemble des informations techniques de cet article a été utilisé pour nos applications, elles vous sont fournies comme un exemple de document de travail. Mais nous ne pourrions être tenu responsables d’une mauvaise utilisation de celle-ci.
.
Retour au sommaire
Pour tout probléme |
.
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
.
Retour au sommaire