BMO : Controleur de servomoteurs

Img 20180321 122511 1

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

Ecran monochrome 128x32 i2c oled art0526 adafruit

Budget:

85 €
  • 1 x Arduino Mega
  • 1 x Ecran I2C Monochrome 128 x 32
  • 1 x Keypad
  • 1 x Potentiomètre
  • 1 x Régulateur 5V
  • 1 x Régulateur 7,5V
  • 1 x MAX485
  • 1 x 74LS241
  • 1 x Alimentation 12V

Etape 1 : Alimentation

Reg

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

Arduino mega2560 rev3 art0213 arduinodimensions 107 x 53 x 15 mm tension dalimentation 7 12v micro controleur atmega2560 tension

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

G4084

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

931 10

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

Keypad

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

Etape 6 : Menu principal

Menu

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

Img 20180321 121756 1

Etape 9 : Petite démo

Vous aimez ce tutoriel ?


Soyez le premier à poster un commentaire pour BMO : Controleur de servomoteurs


Recevez une fois par mois les meilleurs tutoriels Technologie dans votre boîte mail




S'inscrire:


  • Vues: 187
  • J'aime: 6