Archives de l’auteur : Hervé Mazelin

L3-37 : Tutoriel pour la version Dynamixel

.

Sommaire :

 

 

.

separateur-redohm-001

 Matériel utile pour suivre les tutoriels

.

ArbotiX-M Robocontroller 

Spécifications techniques du Robocontroller ArbotiX-M  :

  • Microcontrôleur AVR 16 MHz (ATMEGA644p).
  • 2 ports série, 1 dédié aux servo-contrôleurs Dynamixel, l’autre au module radio Xbee.
  • 32 E / S, dont 8 peuvent fonctionner comme entrées analogiques.
  • Embases servo 3 broches (Gnd, Vcc, signal), sur les 8 entrées analogiques et sur les 8 E / S numériques.
  • Deux pilotes de moteur 1 A avec en-têtes moteur / encodeur combinés.
  • Module radio Xbee vendu séparément. Une installation typique nécessite 2 modules radio Xbee et un module explorateur Xbee pour vous permettre de contrôler votre robot à distance depuis votre ordinateur.
  • Ce contrôleur nécessite l’utilisation d’un câble FTDI ou ISP. Nous recommandons la carte de déploiement FTDI 3,3 V avec connecteur à 6 broches.
  • Avec des dimensions de 7,11 × 7,11 cm (2,8 « × 2,8 »), ce contrôleur a été conçu pour être utilisé avec les servomoteurs Dynamixel .

Ressources pour le Robocontroller ArbotiX-M

Le Robocontroller ArbotiX-M peut être utilisé avec l’environnement de développement Arduino. Un certain nombre de bibliothèques permettant de contrôler les servomoteurs AX-12 sont disponibles dans la liste de téléchargement ci-dessous.

separateur-redohm-001

Module joystick Gravity DFR0061

Module joystick Gravity DFRobot basé sur 2 potentiomètres (axes X et Y) et d’un bouton-poussoir pour des applications spécifiques. Il délivre deux sorties analogiques en fonction de la position des deux potentiomètres et une sortie logique en fonction du bouton-poussoir. Il est livré avec 3 cordons.

  • Alimentation : 5 Vcc
  • Sorties : 2 analogiques et 1 digitale
  • Dimensions : 37 x 32 x 25 mm

Référence DFRobot: DFR0061

Remarque: la nouvelle version du mappage des broches du port du capteur analogique a été modifiée comme ci-dessous : 

 

Mappage du Joystik

Mappage du Joystik

.

Retour en haut de page

 

.

separateur-redohm-001

 Etude des deplacements de la tête avec les servo Dynamixel

.

Materiel utile pour le tuto : 

  • Un module ArbotiX-M Robocontroller

.

Nous allons vous initiez à lire les registres se trouvant à l’intérieur du servomoteur qui nous permet de définir le déplacement de notre servo , ceci afin de déterminer la butée basse et haute que l’on devra appliquer par logiciel pour les mouvements de la tête.

Pour pouvoir lire ses registres, il faut déverrouiller le couple afin pouvoir déplacer la base de la tête de L3 -37 manuellement Avant de se lancer dans l’explication du programme, nous allons vous faire une démonstration du déverrouillage et de la lecture des registres de déplacement par le biai du tuto ci-dessous .

.

.

Programme :

//
//
//*************************************************************
//* 
//* IDE Arduino 1.0.6
//*
//* Mesure de deplacement des moteurs dynamixel
//*  et verouillage du couple 
//*       
//* H-Mazelin
//* 29/10/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  
#include <BioloidController.h>


// definition de la vitesse de transmission 
// le debit en bauds détermine la vitesse de communication serie entre 
// le controleur et le servo Dynamixel
BioloidController bioloid = BioloidController(1000000);


 
/*
 *  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(5000);
  // Information a l'operateur de l'ouverture du port de communication 
  // sur le moniteur serie 
  Serial.println("========================================");
  Serial.println("Communication etablie");
  Serial.println("========================================");   

  // Lecture de la temperature du servo de droite actuel
  int temperature_d =ax12GetRegister(2,43,1);
  // Lecture de la temperature du servo de gauche actuel
  int temperature_g =ax12GetRegister(3,43,1);
  
  
  // Affichage de la lecture des registres contenant la temperature 
  Serial.print("Temperature du servo de droite : ");
   Serial.print(temperature_d);Serial.println(" Degres");    
  Serial.print("Temperature du servo de gauche : ");
   Serial.print(temperature_g);Serial.println(" Degres"); 
  Serial.print(" "); 
   Serial.println("Demarrage *********************");
  
// Procedure d'ecriture dans le registre 24 pour desactiver le couple 
//
// modification de la valeur 1 par la valeur 0
// 1 parametre : numero d'identifiant du servo
// 2 parametre : numero de registre a modifier 
// 3 parametre : Active ou desactive le couple 

 ax12SetRegister(2,24,0); 
  ax12SetRegister(3,24,0);
 Serial.println("Couple desactive sur le moteur de droite et de gauche");  
 
  
}

/*
 *Le programme principal s’exécute par une boucle infinie appelée Loop () 
 * 
 */
void loop()

{ 

// Procedure de lecture pour la position du servo dans le registre 36
//
//
// 1 parametre : numero d'identifiant du servo
// 2 parametre : numero de registre a lire 
// 3 parametre : nombre d'octet a lire 

 int deplacement_d =ax12GetRegister(2,36,2);
  int deplacement_g =ax12GetRegister(3,36,2);
  
// Affichage de la lecture des registres contenant le deplacement 
 Serial.print("Deplacement du moteur de gauche : ");
  Serial.print(deplacement_g);Serial.print(" en points      "); 
   Serial.print("Deplacement du moteur de droite : ");
    Serial.print(deplacement_d);Serial.println(" en points      ");  
}   

.

Retour en haut de page

.

.

.

separateur-redohm-001

 Pilotage d’un Dynamixel par le biais d’un potentiometre 

.

Ce tutoriel a pour but de vous initier à la programmation des servomoteurs Dynamixel . Nous avons pris comme base la tête de L3 -37 qui est une réalisation de RedOhm pour vous expliquer l’étalonnage et le fonctionnement pour piloter celle-ci avec un joystick. Le tuto s’articule en 4 phases :
la première étant la présentation de la base de la tête, le câblage d’un joystick et la carte contrôleur, vous avez aussi une explication sur le fonctionnement de la manette de jeu, et enfin une explication détaillée du programme.

.

.

Materiel utile pour le tuto : 

  • Un module ArbotiX-M Robocontroller
  • Module joystick Gravity DFR0061

.

//
//
//*************************************************************
//* 
//* IDE Arduino 1.0.6
//*
//* Exemple de pilotage d'un servo Dynamixel
//*  avec un joystick pour la tete de L3-37
//*       
//* H-Mazelin
//* 16/11/2020
//*
//*************************************************************



//librairie qui permet d'implémenter 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>

// definition de la vitesse de transmission 
// le debit en bauds détermine la vitesse de communication serie entre 
// le controleur et le servo Dynamixel
BioloidController bioloid = BioloidController(1000000);

// broche sur lequel est branche le potentiometre
const int broche1 = A1;
const int broche7 = A7;

// variable contenant la valeur du potentiometre 
int valeurPotar1 = 0;
 int valeurPotar7 = 0;   
// valeur du potentiometre remis a l'echelle
int valeurPotar7_re = 0;
 int valeurPotar1_re= 0;
 
 
/*
 *  Un programme Arduino doit impérativement contenir cette fonction 
 *  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(5000);
// Information a l'operateur de l'ouverture du port de communication 
// sur le moniteur serie 
  Serial.println("========================================");
  Serial.println("Communication etablie");
  Serial.println("========================================");   

// Lecture de la temperature du servo de droite actuel
  int temperature_d =ax12GetRegister(2,43,1);
// Lecture de la temperature du servo de gauche actuel
  int temperature_g =ax12GetRegister(3,43,1);
  
  
// Affichage de la lecture des registres contenant la temperature 
Serial.print("Temperature du servo de droite : ");
 Serial.print(temperature_d);Serial.println(" Degres");    
  Serial.print("Temperature du servo de gauche : ");
   Serial.print(temperature_g);Serial.println(" Degres"); 
  Serial.print(" "); 
   Serial.println("Demarrage *********************"); 
}

/*
 *Le programme principal s’exécute par une boucle infinie appelée Loop () 
 * 
 */
void loop()

{ 
// lecture de la valeur du potentiomètre (valeur entre 0 et 1023)  
  valeurPotar1=analogRead( broche1);
   valeurPotar7=analogRead( broche7);
// mise a l'échelle (valeur entre 0 et 300
// Ré-étalonne un nombre d'une fourchette de valeur vers une autre fourchette.
// Ainsi, une valeur basse source sera étalonnée en une valeur basse de destination   
  valeurPotar7_re = map( valeurPotar7,0,1023,0,350);
   valeurPotar1_re = map( valeurPotar1,0,1023,0,350);


// Affichage de la valeur des potentiometre  
Serial.print("A7 - deplacement en x du potentiometre x -> ");
 Serial.println(valeurPotar7);
  Serial.print("A1 - deplacement en y du potentiometre x -> ");
   Serial.println(valeurPotar1);
// Affichage de la valeur re-etalonne des potentiometre  
Serial.print("A7 - Re-etalonne le deplacement en x du potentiometre -> ");
 Serial.println(valeurPotar7_re);
  Serial.print("A7 - Re-etalonne le deplacement en y du potentiometre -> ");
   Serial.println(valeurPotar1_re);
      


// envoie l'information de deplacement au servomoteur dynamixel340
   SetPosition(2,340+valeurPotar7_re);
// envoie l'information de deplacement au servomoteur dynamixel
// moteur de gauche   
   SetPosition(3,340+valeurPotar1_re); 


// Affichage du code pour le moteur x avec le calcul
Serial.print("Valeur de la position du moteur x => SetPosition(3,340+");
 Serial.print(valeurPotar7_re);
  Serial.println(");");
   Serial.print("Valeur du deplacement de moteur x => ");
    Serial.println(340 + valeurPotar7_re) ;
   
Serial.println("");
 Serial.print("Valeur de la position du moteur y => SetPosition(3,340+");
  Serial.print(valeurPotar1_re);
   Serial.println(");");
    Serial.print("Valeur du deplacement de moteur y => ");
     Serial.println(340 + valeurPotar1_re) ;  
  
   Serial.println("------------------");
   delay (100);
}   

.

Retour en haut de page

.

Robot Golbotth8 fiche de montage

.

Mise à jour le 18/11/2020 : 

.

Sommaire :

  • 001 – Présentation
  • 002 – Vue de face et arriere
  • 003 – Vue de coté
  • 004 – Eclaté vue de dessus 
  • 005 – Vue eclatée avec repérage des pieces 
  • 006Vue eclatée de coté avec repérage des pieces
  • 007 – 008 – Tourelle 
  • 009 – 010 – Base tourelle
  • 011 – 012Pièce g012 plateau pour châssis
  • 013capot tourelle
  • 014 – Pièce g018 calandre arrière
  • 015 Pièce g019 calandre avant
  • 018 Led 8 mm RGB Grove V2.0 104020048
  • 019 – 19A Télémètre à ultrasons Grove 101020010
  • Retour a la page principale

 

 

.separateur-redohm-001

.

Ce petit robot est destiné à vous initier à la programmation, nous l’appellerons Golbotth8. La construction de cet engin passe déjà par l’impression 3D, vous trouverez l’ensemble des fichiers STL sur notre site ainsi que la matière que nous avons utilisée et les différents conseils techniques. Vous aurez la possibilité de suivre des tutoriels sur Arduino avec ce module. Nous avons surtout essayé de minimiser le coût de l’ensemble.

.

Retour au sommaire

 

.separateur-redohm-001

  • 002-Vue de face et arriere

.

.

Retour au sommaire

.separateur-redohm-001.

.

Retour au sommaire.

.separateur-redohm-001.

.

Retour au sommaire

.separateur-redohm-001.

.

Retour au sommaire

.separateur-redohm-001.

.

Retour au sommaire

.separateur-redohm-001.

 

.

 

Pièce g010 tourelle - RedOhm

Pièce g010 tourelle – RedOhm

.

  • Filament : Pla 
  • Constructeur du filament : https://www.arianeplast.com/
  • Poids : 335 g
  • Couleur : bi-ton gris et rouge
  • Temps d’impression : 21h00
  • Layer :0.19mm
  • Température : 205°

.

Retour au sommaire

.separateur-redohm-001

  • 009 – 010 – Base tourelle

.

.

.

Retour au sommaire

.separateur-redohm-001

  • 011 – 012 – Pièce g012 plateau pour châssis

.

Pièce g012 plateau pour châssis - RedOhm

Pièce g012 plateau pour châssis – RedOhm

 

.

 

.

Retour au sommaire

.separateur-redohm-001

  • 013 – Pièce g013 capot tourelle

.

.

Retour au sommaire

.separateur-redohm-001

  • 014 – Pièce g018 calandre arrière

.

 

.

  • Filament : Pla
  • Poids : 111g
  • Couleur : gris
  • Temps d’impression : 7h47
  • Layer : 0.19mm
  • Qualité : haute
  • Densité : 40%
  • Température : 205°

.

Retour au sommaire

.separateur-redohm-001

  • 015 – 

.

 

.

 

Retour au sommaire

.separateur-redohm-001

  • 016 – 

.

 

.

Retour au sommaire

.separateur-redohm-001

  • 017 – 

.

 

 

.

Retour au sommaire

.separateur-redohm-001

  • 018 – Led 8 mm RGB Grove V2.0 104020048

.

 

 

.

Retour au sommaire

.separateur-redohm-001

  • 019 – Télémètre à ultrasons Grove 101020010

.

Télémètre à ultrasons Grove 101020010

Ce module dispose d’un émetteur à ultrasons et d’un récepteur à ultrasons afin que vous puissiez le considérer comme un émetteur-récepteur à ultrasons. Familier avec le sonar, lorsque l’onde ultrasonore de 40 KHz générée par l’émetteur rencontre l’objet, l’onde sonore sera renvoyée et le récepteur peut recevoir l’onde ultrasonore réfléchie. Il suffit de calculer le temps entre l’émission et la réception, puis de multiplier la vitesse du son dans l’air (340 m / s) pour calculer la distance du capteur à l’objet. 

.

.

Comment fonctionne le capteur de distance à ultrasons?

Voici un exemple simple de la façon dont un capteur à ultrasons fonctionne pour mesurer la distance:

  • Tout d’abord, l’émetteur (trig pin) envoie une onde sonore
  • L’objet capte l’onde, la renvoyant vers le capteur.
  • Le récepteur (broche d’écho) le capte

Le lien pour le principe de fonctionnement : https://www.redohm.fr/2017/10/grove-telemetre-a-ultrasons-grove-101020010/

 Téléchargez la bibliothèque UltrasonicRanger depuis Github.

.

.

Retour au sommaire

.separateur-redohm-001

  • 020 – 

.

 

 

 

 

.

Retour au sommaire
Etude pas a pas du robot L3-37

.

Mise à jour le 25/10/2020 : Le robot L3-37 sera reproductible par tous et une grande partie sera en impression 3D.Retrouvez l’ensemble des articles concernant le projet L3-37 sur notre site https://www.redohm.fr ou suivez-nous sur notre chaîne YouTube.( Projet OpenSource )

Sommaire :

 .

 25/10/2020 – Base de la tête de L3-37 

separateur-redohm-001

 22/10/2020 – Quelques photos de l’impression 3D du robot  

Centre d'impression 3D

Centre d’impression 3D

.

.

Retour en haut de page

.

separateur-redohm-001

 24/10/2020 – Motorisation de la tête par des servomoteurs RC type
HSB-9380TH

.

Voici des fiches techniques un peu plus détaillées sur la motorisation par servomoteur RC. Bien conscient que les servomoteurs proposés ont un prix un peu élevé et qui pourrait bien évidemment repousser quelques passionnés, nous allons donc vous proposer une  troisième plate-forme avec des servomoteurs du même constructeur mais avec un prix moindre. Nous choisirons donc le Hiltec HS 805BB. Nous sommes bien évidemment ouverts à d’autres propositions de servomoteurs en respectant un couple de fonctionnement de 20 kg.cm minimum. Au niveau du câblage et de la programmation, cela ne changera pas grand-chose.

.

L3-37-Version servomoteur RC - RedOhm

L3-37-Version servomoteur RC – RedOhm

L3-37-Version servomoteur RC - RedOhm 001

L3-37-Version servomoteur RC – RedOhm 001

.

L3-37-Version servomoteur RC - RedOhm 002

L3-37-Version servomoteur RC – RedOhm 002

L3-37-Version servomoteur RC - RedOhm 003

L3-37-Version servomoteur RC – RedOhm 003

.

Information complementaire sur le servomoteur HSB-9380TH

Electrique : Bien que compatible avec la plupart des dispositifs de radiocommande, la fonction de freinage par récupération des servos de la série HSB-93XX peut poser un problème si le dispositif ne peut pas accepter un reflux de courant. Les types d’appareils qui ne peuvent pas accepter ce reflux sont: les régulateurs de tension, les récepteurs Power Safe et certains circuits BEC, qu’ils soient autonomes ou intégrés dans un contrôle de vitesse électronique.

Mécanique arbre de sortie :

Les servos ont un arbre de sortie qui utilise généralement un profil cannelé afin de transférer le couple de l’arbre de sortie dans l’accessoire servo qui y est fixé. Ce profil cannelé est généralement classé en fonction du nombre de dents, cependant, il est possible que deux servo-cannelures très différentes aient le même nombre de dents car elles ne capturent pas le diamètre de la cannelure ou le profil de la dent. Par exemple, A15T et D15T ont tous deux 15 dents, mais le D15T est une taille de cannelure beaucoup plus grande que l’A15T. Les graphiques ci-dessous sont des représentations lâches des tailles de spline courantes que l’on trouve sur les servos amateurs. Si vous avez un servo que nous n’offrons pas sur le site, vous pouvez vérifier si votre servo a une spline qui correspond à l’un des profils de spline ci-dessous en comptant les dents et en mesurant la distance à travers la spline.  

Données techniques HSB -9380 TH

  • Style d’arbre :  H25T Spline
  • Gamme de tension :  6.0V – 7.4V
  • Vitesse à vide à 7,4 Volts :  0.14 sec/60°
  • Vitesse à vide à 6 Volts :  0.17 sec/60°
  • Couple de décrochage à 6 volts :  472 oz-in (34 kg.cm)
  • Couple de décrochage à 7,4 volts :  472 oz-in (34 kg.cm)
  • Plage de signal PWM maximale : 700-2300μsec
  • Travel per µs (Stock)  :  .075°/μsec
  • Rotation maximal : 120°
  • Amplitude d’impulsion :  3-5V
  • Température de fonctionnement :  -20°C to +60°C
  • Rotation continue modifiable : oui 
  • Direction avec / augmentation du signal PWM : Dans le sens des aiguilles d’une montre
  • Largeur de la bande morte :  2µs
  • Type de moteur :  Brushless
  • type de rétroaction ;  5KΩ Potentiometer
  • Support d’arbre de sortie : roulements à billes doubles
  • Materiaux pour les engrenages : Titane (Hybrid MPD 1st Gear) 
  • Rotation maximal ( reprogrammée ) : 205°
.
L3-37-Version servomoteur RC - RedOhm 005

L3-37-Version servomoteur RC – RedOhm 005

.

Retour en haut de page

.

separateur-redohm-001

 25/10/2020 – Base de la tête de L3-37 

.

Base de la tête de L3-37 - RedOhm 001

Base de la tête de L3-37 – RedOhm 001

.

Base de la tête de L3-37 - RedOhm 002

Base de la tête de L3-37 – RedOhm 002

.

Retour en haut de page

.

.

separateur-redohm-001

 02/11/2020 : Etude des deplacements de la tête avec les servo Dynamixel

.

Dans le cadre du projet L3 -37, nous utilisons deux sortes de motorisations pour piloter la tête du robot ou des moteurs de type RC (souvent utilise en modélisme ) ou bien des moteurs du type Dynamixel.

Dans le cadre de ce tutoriel qui ne traite que des moteurs Dynamixel, nous allons vous initiez à lire les registres se trouvant à l’intérieur du servomoteur qui nous permet de définir le déplacement de notre servo , ceci afin de déterminer la butée basse et haute que l’on devra appliquer par logiciel pour les mouvements de la tête.

Pour pouvoir lire ses registres, il faut déverrouiller le couple afin pouvoir déplacer la base de la tête de L3 -37 manuellement Avant de se lancer dans l’explication du programme, nous allons vous faire une démonstration du déverrouillage et de la lecture des registres de déplacement par le biai du tuto ci-dessous .

.

Retour en haut de page

.

separateur-redohm-001

 26/11/2020 : La version L3-37 à servomoteur rc terminée

.

.

.

Voici donc la version L3 -37 à servomoteur RC terminé on peut cependant regretter un petit manque de résolution sur la tête qui ne fait pas ressortir des courbes suffisamment fluides. Pour cela nous allons modifier la résolution de nos fichiers STL ce qui permet de s’approcher au mieux des surfaces du modèle 3D en revanche ce procédé augmente la taille du fichier STL. Vous aurez donc le choix entre télécharger la version standard ou la version haute résolution.

.

Retour en haut de page

 

 0.

2/11/2020 : Etude des deplac

ements de la tête avec les servo Dynamixel

.

L3-37 nos tuto en vidéo

.

Sommaire : 

.

.

2020/10/21 : Présentation de L3-37

Voici donc une brève présentation de la tête du robot L3 -37. Ce robot sera construit en plusieurs parties. Nous allons commencer déjà par la tête et un début de buste pour qu’il puisse avoir déjà une certaine utilité ne serait-ce que pour la programmation ou bien servir d’instrument d’interfaçage en domotique. Dans cette présentation qui fait office de tutoriels ,vous avez une explication bien que sommaire des différentes étapes de construction de la tête. Pour tout autre information comme les fichiers STL, les programmes, les schémas ,vous aurez ces informations sur notre site. Je vous rappelle aussi que ce projet est open source.

.

.

Retour au sommaire

.

2020/11/02 : L3-37 Pilotage de la tete d’un robot

Dans le cadre du projet L3 -37, nous utilisons deux sortes de motorisations pour piloter la tête du robot ou des moteurs de type RC souvent utilise en modélisme ) ou bien des moteurs du type Dynamixel .

Dans le cadre de ce tutoriel qui ne traite que des moteurs Dynamixel, nous allons vous initiez à lire les registres se trouvant à l’intérieur du servomoteur qui nous permet de définir le déplacement de notre servo , ceci afin de déterminer la butée basse et haute que l’on devra appliquer par logiciel pour les mouvements de la tête.

Pour pouvoir lire ses registres, il faut déverrouiller le couple afin pouvoir déplacer la base de la tête de L3 -37 manuellement Avant de se lancer dans l’explication du programme, nous allons vous faire une démonstration du déverrouillage et de la lecture des registres de déplacement.

.

.

Retour au sommaire

.

separateur-redohm-001

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 .

Facebook  Twitter  Youtube 

Grabcad  Thingiverse  Cults  

.

Retour au sommaire
Arduino : Coder la fonction d’un télerupteur

.

Mise à jour le 09/10/2020 : Ce tutoriel vous explique comment coder un télerupteur sur Arduino. 2 types de fonctionnement vous sont proposés.

Sommaire : 

.

Principe de fonctionnement de la fonction

.

2 types de fonctionnement vous sont proposés.

  • le premier étant le modèle standard : Lorsque l’on appuie sur le bouton poussoir, une impulsion met le télérupteur au travail, il ferme le circuit jusqu’à ce qu’une nouvelle impulsion l’ouvre et ainsi de suite. Les informations électriques qui font changer l’état du télérupteur sont du type front montant.
    Il vous est donc proposé dans le programme fourni dans cet article ,un ensemble de codes composés de six lignes qui vous permet de créer cette fonction.

.

Telerupteur changement d'état sur le front montant

Telerupteur changement d’état sur le front montant

.

  • Deuxième montage. Lorsqu’on appuie sur le bouton poussoir, une impulsion met le télérupteur au travail met sur le front descendant. Il faut donc relâcher le bouton pour que le télérupteur soit actif. Lorsque nous avons une nouvelle impulsion toujours sur le front descendant le système se remet à l’état de repos et ainsi de suite.
    Il vous faudra donc mettre une ligne en commentaire pour générer cette fonction dans le code fourni . 
telerupteur changement d'état sur le front descendant

telerupteur changement d’état sur le front descendant

.

Retour au sommaire

.

Programme support pour le tutoriel 

.

//
//
//************************************************
//
//RedOhm
//le 20/09/2020
//H-Mazelin
//
//Creation d'un telerupteur  
//
//
//IDE Arduino 1.8.10 
//************************************************

// déclaration de l'entrée du bouton branché sur la broche 6
// de votre carte Arduino 
int bouton6 = 6;
 
// variable du type int pour stocker les valeurs de passage du bouton6
int bouton6v;

// creation d'une memoire_2 et forçage a 0 de la variable 
// etat du telerupteur 
int memoire_2=0;

// etat precedent du bouton et forçage a 0 de la variable 
int etat_bouton6v=0 ;




// --------------------------------------------------------------------
// Un programme Arduino doit impérativement contenir la fonction "setup"
// Elle ne sera exécutée 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
   while(!Serial); 

// Configure la broche spécifiée pour qu'elle se comporte soit en entrée, 
// soit en sortie.Dans notre cas en entrée pour le bouton6
  pinMode(bouton6,INPUT);

}

void loop() {
  


bouton6v = digitalRead(bouton6);

// Creation un telerupteur 
// Compare la variable à gauche avec la valeur ou la variable
// à droite . Renvoie l'information vraie lorsque les deux
// variables ne sont pas égales. 
   if (bouton6v!=etat_bouton6v)
    {
       if (!bouton6v)
      {
        //Inversion de la valeur de la variable memoire 
        memoire_2=!memoire_2;
      } 

       //si vous placez la ligne de code en commentaire 
       //alors le telerupteur fonctionnera sur les fronts
       //descendant des boutons poussoirs 
       //
       //Inversion de la valeur de la variable memoire 
       memoire_2=!memoire_2;
     
    }
// operation consitant a memoriser l'anciennne valeur de la 
// variable     
etat_bouton6v=bouton6v;



//======= Creation des offset pour le chronogramme ======== 
//
// affichage de la position du bouton 2
//
// ci joint le lien pour le tuto traitant de la fonction
// chronogramme
// https://www.youtube.com/watch?v=MBTEkbA6soI
//
bouton6v=bouton6v+2;



  Serial.print(bouton6v);
   Serial.print(",");
    Serial.print(memoire_2);
     Serial.println();


}

.

.

Retour au sommaire

.

Informations utiles pour la compréhension du code

.

! = Opérateurs de comparaison

Compare la variable à gauche avec la valeur ou la variable à droite de l’opérateur. Renvoie true lorsque les deux opérandes ne sont pas égaux. Veuillez noter que vous pouvez comparer des variables de différents types de données, mais que cela pourrait générer des résultats imprévisibles, il est donc recommandé de comparer des variables du même type de données incluant le type signé / non signé.

Syntaxe = x != y;

Paramètres : 
x: variable. Autorisé types de données: int, float, double, byte, short, long.
y: variable ou constante. Autorisé types de données: int, float, double, byte, short, long.

Ce symbole peut être utilisé pour inverser la valeur booléenne

Syntaxe = x = !y;

.

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 .

Facebook  Twitter  Youtube 

.

Retour au sommaire
HALLOWING M0 EXPRESS

.

Mise à jour le 21/08/2020 – Rubrique traitant de la carte HALLOWING M0 EXPRESS . Cette carte permet la création de regards avec un ou deux yeux. Des programmes déjà réalisés pour cette carte sont en distribution libre. Cerise sur le gâteau vous pouvait développer des programmes avec Ide Arduino ou sur python.

Continuer la lecture

Présentation et Utilisation de la carte ArbotiX-M

.

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

Carte ArbotiX-M

Carte ArbotiX-M

Sommaire :

 

.

.

separateur-redohm-001

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.

.

separateur-redohm-001

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 « )

separateur-redohm-001

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

AX-12W Compatible carte ArbotiX-M

AX-12W Compatible carte ArbotiX-M -2

  • 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

separateur-redohm-001

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.

.

Entrée analogique sur la carte Arbotix-M

Entrée analogique sur la carte Arbotix-M

.

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

//
//
//*************************************************************
//* 
//* 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

.

separateur-redohm-001

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

.

.

separateur-redohm-001

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

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

.

separateur-redohm-001

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).

.
separateur-redohm-001AX_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

//
//
   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

.

separateur-redohm-001

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 sommaire

.

separateur-redohm-001

AX_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

//
//
// 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

.

//
//
//*************************************************************
//* 
//* 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("");
    
}

.

Retour au sommaire

.separateur-redohm-001

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.

.

//
//
// 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);

.

Vitesse de transmission des servomoteurs Dynamixel

Vitesse de transmission des servomoteurs Dynamixel

.

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.

.

//
//
//*************************************************************
//* 
//* 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 sommaire

separateur-redohm-001

AX_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 sommaire

separateur-redohm-001

AX_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) ;  

.

Retour au sommaire

separateur-redohm-001

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.

//
// 
// 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 sommaire

separateur-redohm-001AX_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

// 
// 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 sommaire

.separateur-redohm-001

AX_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

//   
//
//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 sommaire

.

separateur-redohm-001

AX_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);
OU
ax12GetRegister (1, 44,1);

Valeur = 0 L’instruction REG_WRITE n’est pas reçue 
Valeur = 1 L’instruction REG_WRITE est reçue

.

Exemple de code

        
//
//
// 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 sommaire

separateur-redohm-001AX_PAUSE_TIME  

Adresse Fonction  Exemple d’ecriture dans le registre Objectif
45      
       

.

Retour au sommaire

separateur-redohm-001

AX_MOVING

Adresse Fonction  Exemple lecture du registre Objectif
46      
       

.

Retour au sommaire

.

separateur-redohm-001

Pilotage de la led sur le servomoteur avec la carte ArbotiX-M

.

//
//
//*************************************************************
//* 
//* 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);

.

Retour au sommaire

.

separateur-redohm-001

Exemple utilisation des moteurs  Dynamixel

.

Robot hexapode

https://www.youtube.com/watch?v=9IY9sHToaqM

.

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

.

separateur-redohm-001

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 .

Facebook  Twitter  Youtube 

Grabcad  Thingiverse  Cults  

.

Retour au sommaire