Les cookies assurent le bon fonctionnement de nos services. En utilisant ces derniers, vous acceptez l'utilisation des cookies. En savoir plus

BMO : Controleur de servomoteurs

Sauvegarder: J'aime

Partager:

Difficulté:

La BMO permet de tester et configurer plusieurs types de servomoteurs (RC, HerkuleX de marque DONGBU, Dynamixel de marque ROBOTIS)


Types de servomoteurs :

3 x Servomoteur RC (5V)

Dynamixel en TTL (12V)

Dynamixel en RS485 (12V)

Herkulex (12V) 

Herkulex (7,5V)


Modes :

Contrôle manuel grâce au potentiomètre

Contrôle automatique grâce au clavier

Mise en position zéro automatique

Scan des identifiants des servomoteurs

Configuration de l'Identifiant des servomoteurs

Configuration de la vitesse de communication des servomoteurs

Nettoyage des erreurs

Matériel :

Budget : Non défini

Etape 1 : Alimentation

Pour alimenter la BMO, il faut une alimentation 12V à brancher sur la carte Arduino. 

Un régulateur 5V (LM1084IT-5.0) va permettre d'alimenter les servomoteurs RadioCommandés et les composants MAX485 et 74LS241.

Un régulateur 7,5V (Pololu D24V25F7) permet d'alimenter le servomoteur de type HerkuleX (DRS-0101 et DRS-0201)

Les autres types de servomoteurs sont alimentés directement en 12V.

Etape 2 : Entrées/Sorties Arduino

FonctionsI/OArduino Mega 2560
Servomoteur RCSorties PWMD11, D12, D13
Servomoteur HerkuleXUARTUART2
Servomoteur Dynamixel RS485UART, Sortie NumériqueD2, UART3
Servomoteur Dynamixel TTLUART, Sortie NumériqueD2, UART3
EcranI2C, Sortie NumériqueA4, A5, D4
ClavierEntrées Sorties numériquesD30, D32, D34, D36, D38, D40, D42
PotentiomètreEntrée analogiqueA0

Etape 3 : Communication Dynamixel

Le composant MAX485 permet de communiquer avec les servomoteurs de types RS485 (MX-28R, MX-64R...). D'un coté on y connecte les broches Tx et Rx de l'arduino et de l'autre coté les broches D- et D+ du servomoteur. Une broche de commande (D2) permet de sélectionner la transmission ou la réception des données

Le composant 74LS241 permet de communiquer avec les servomoteurs de types TTL (AX-12, MX-28T, MX-64T...). D'un coté on y connecte les broches Tx et Rx de l'arduino et de l'autre coté la broche Data du servomoteur. Une broche de commande (D2) permet de sélectionner la transmission ou la réception des données

Etape 4 : Ecran I2C

L'écran est alimenté grâce à la broche 3,3V de la carte Arduino.

La communication se fait par I2C (D4 : SDA, D5 : SCL).

Le signal RST doit être connecté à la broche D4 de la carte Arduino pour une meilleure utilisation des fonctionnalités de l'écran.

Etape 5 : Branchement du Keypad

La touche * permet de valider et la touche # permet de faire un retour en arrière dans le menu

Etape 6 : Menu principal

Etape 7 : Libraire arduino et initialisation


#include <Wire.h>
#include <Servo.h>   // librairie pour les servomoteurs RC
#include <Herkulex.h> // librairie pour les servomoteurs herkulex
#include <LiquidCrystal.h> //ajout de la librairie pour l'afficheur
#include <Dynamixel_Serial.h> // librairie pour les servomoteurs dynamixel
#include <Keypad.h> // librairie pour le clavier 3x4
#include <Adafruit_GFX.h> // librairie pour l'afficheur
#include <Adafruit_SSD1306.h> // librairie pour l'afficheur

// Afficheur //
#define OLED_RESET 4  // Broche D4
Adafruit_SSD1306 display(OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2

// Potentiometre //
byte POTAR = 0;   // Broche A0

// Clavier //
const byte ROWS = 4; // 4 lignes
const byte COLS = 3; // 3 colonnes
char keys[ROWS][COLS] = {{'1','2','3'},{'4','5','6'},{'7','8','9'},{'*','0','#'}};
byte rowPins[ROWS] = {30, 32, 34, 36};
byte colPins[COLS] = {38, 40, 42};
Keypad keypad ( makeKeymap(keys), rowPins, colPins, ROWS, COLS );


// Servomoteurs RC //
Servo myservo[3];  // Création de 3 objets pour les servomoteurs
               
void setup()
{

// Liaison des servomoteurs RC avec les broches D11, D12, D13
  myservo[1].attach(11); myservo[2].attach(12); myservo[3].attach(13);  
 
  keypad.begin( makeKeymap(keys) );  // Init keypad
  keypad.addEventListener(keypadEvent); // Add an event listener for this keypad
 

// Liaison de la broche de commande D2 pour la communication des servomoteurs Dynamixel
    Dynamixel.setDirectionPin(2);  
 

// Init Ecran I2C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x32)
  display.clearDisplay();
  display.setTextSize(2);  // Taille du texte
  display.setTextColor(WHITE); //Couleur du texte
  display.setCursor(0,0);  display.println("Menu :");
  display.setCursor(0,17); display.println("Press *");
  display.display();
  delay(500);
}

Etape 8 : A l'intérieur du boitier 3D

Etape 9 : Petite démo

Sources :

BMO GitHub Project


Sauvegarder: J'aime

Partager:

Recevez une fois par mois les meilleurs tutoriels Déco dans votre boîte mail


Ces tutoriels devraient vous plaire

Fabriquer un robot SumoBot v4.0 (obsolète)
Poulailler: porte et lumière automatique
Lunettes de réalité virtuelle en carton

Ningel85

Suivre

Vues: 10
J'aime: 6

Découvrez d'autres tutoriels de

Ningel85

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers