Aller au contenu


Photo
- - - - -

Piloter 2 moteurs avec contrôleur Sabertooth 2X32


5 réponses à ce sujet

#1 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 10 septembre 2023 - 11:15

Bonjour,

 

Je souhaiterais contrôler 2 moteurs DC 12V avec un contrôleur Sabertooth 2x32 et un Arduino Mega

 

Je suis un peu rôdé à cet exercice avec des contrôleurs plus basiques.

Celui-ci offre de nombreuses possibilités et peut gérer des "grosses" puissances. Mais il semble nettement plus compliqué à utiliser.

Et le code à utiliser est différent :

#include <Servo.h>
Servo myservo1; // contrôle moteur 1
Servo myservo2; // contrôle moteur 2

void setup () {
  myservo1.attach(11); 
  myservo2.attach(10); 
}

void loop() {  
  myservo1.write(30); // vitesse moteur 1
  myservo2.write(30); // vitesse moteur 2
  delay(5000);
  myservo1.write(50);// stop motor
  myservo2.write(90);// stop motor
  delay(2000);  
}

La configuration du dip switch sur le contrôleur est : 1 OFF - 2 ON - 3 ON - 4 OFF - 5 ON - 6 ON

Connexion Arduino contrôleur : D10 ARDUINO > S2 Sabertooth et D11 Arduino > S1 Sabertooth

Les 2 moteurs tournent pendant 5 secondes puis s'arrêtent pendant 2 secondes.

Ce qui est curieux c'est que pour arrêter le premier moteur il faut envoyer myservo1.write(50) tandis que pour arrêter le second il faut envoyer myservo1.write(90). Alors que les moteurs sont identiques.

Cette carte peut fonctionner selon différents modes. Peut-être que celui que j'utilise n'est pas le bon.

Elle peut en outre être programmée via une interface usb.

Le code utilisé pour d'autres cartes (celle-ci par exemple) me paraît plus simple :

pinMode(M1, OUTPUT);  // sens de rotation
pinMode(E1, OUTPUT);  // vitesse
digitalWrite(M1,LOW); // définit le sens de rotation
analogWrite(E1,spd1g); // définit la vitesse de rotation

Avez-vous déjà utilisé ce matériel pour une application robotique ?

 

Merci

 

 

 



#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 10 septembre 2023 - 02:24

Je ne peux pas t'aider, mais si tu cherches "Sabertooth " sur le forum, il y a pas mal de résultats.

Bon courage.



#3 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 10 septembre 2023 - 03:20

Oui j'ai déjà utilisé. 

Il faut bien lire la doc pour bien savoir comment configurer les switch et ça marche très bien après =)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#4 Atmos

Atmos

    Membre occasionnel

  • Membres
  • Pip
  • 75 messages
  • Gender:Male

Posté 11 septembre 2023 - 10:00

Oui, je confirme cela fonctionne à merveille, mais j'utilise la librairie

 

//************************************************************************ Moteurs
#include <SabertoothSimplified.h>
  SabertoothSimplified ST;                                   // 1, 3, 5, 6 ON


#5 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 12 septembre 2023 - 08:38

Bonjour. Merci pour vos réponses.

Effectivement cette carte semble valoir la peine qu'on s'y intéresse.

J'étais parti pour la commande en mode R/C. Mais le mode série semble bien intéressant.

Voici le code très simple :

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600); 
  Serial1.println("M1:2000"); // marche avant
  Serial1.println("M2:2000"); 
  delay(8000);
  Serial.println("-M1 -M2");
  Serial1.println("M1:-2000"); // marche arrière
  Serial1.println("M2:-2000"); 
  delay(8000);
  Serial.println("stop");
  Serial1.println("MD:0");  // stop
  Serial1.println("MT:0");  
}

void loop() 
{
   
}

Il est possible de :

programmer une accélération, décélération ce qui n'est pas négligeable.

récupérer la tension de la batterie.

actionner un frein

...

Bref cela semble valoir la peine de poursuivre.

 

 



#6 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 07 octobre 2023 - 05:59

Bonjour

J'ai poursuivi et le Sabertooth fonctionne très bien. L'étape suivante sera de l'essayer avec des plus gros moteurs.

Communication en série avec un Arduino Mega.





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users