La FAQ

Un shield de pilotage pour 4 moteurs à courant continu ou 2 moteurs pas à pas, qui permet une alimentation sur 12V et qui n'utilise que 4 sorties Pwm (sur 6) et 2 entrées analogiques (sur 6) de l'Arduino

La FAQ

Message non lude fred » Lun 2 Mai 2011 16:27

Liste des pins utilisées par le Rotoshield [1.0]

rotoshield pin use.png
rotoshield pin use.png (70.69 Kio) Vu 2759 fois


Digital (5 pins)
D3 : PWM utlisée pour le moteur 1
D5 : PWM utlisée pour le moteur 3
D6 : PWM utlisée pour le moteur 4
D11 : PWM utlisée pour le moteur 2

Analog (2 pins)
A4 : DATA I²C (utilisé pour envoyer les ordres de direction)
A5 : CLOCK I²C (utilisé pour envoyer les ordres de direction)


Pour en savoir plus :
- le bus I²C




Informations à connaître et erreurs à ne pas commettre



Logiciel
Il existe 2 librairies officielles du Snootor sur github. La librairie "Master" et la librairie "Arduino-1.0". Elles sont quasiment identiques or l'une est conçu pour utilisation sur arduino 1.0 et l'autre sur les versions plus anciennes.
Si vous utilisez la mauvaise librairie par rapport à votre version arduino, il se peut que votre Rotoshield ne fonctionne pas correctement, voir pas du tout.
La librairie "Master" du Rotoshield est conçu pour une utilisation sur les versions plus anciennes que 1.0.
La librairie "Arduino-1.0" du Rotoshield est conçu pour une utilisation sur les versions 1.0.



Alimentation
Le Rotoshield permet de piloter jusqu'à 4 moteurs à courant continu ou 2 moteurs pas à pas (bipolaire) ou encore 2 moteurs à courant continu et un moteur pas à pas. Ce shield peut piloter des moteurs sur une plage de 4.5 V à 20 V en courant continu.

-Comment alimenter ces moteurs?
Il faut savoir que les 4 borniers moteurs du Rotoshield ne sont pas alimentés via la carte arduino. L'énergie qui sera utilisée par ces borniers doit être directement fournis au shield.
Plusieurs possibilités:
- Via le bornier d'alimentation. Il peut recevoir une source d'énergie allant de 5 à 18 V.Il y a deux méthodes pour alimenter le bornier. La première consiste à brancher un câble de la pin 5 V au M+ du bornier quand votre arduino est simplement alimenté via la connexion USB. Favoriser la pin Vin plutôt que la pin 5 V lorsque vous alimentez l'arduino via le connecteur jack.
Deuxième solution, brancher directement une source de puissance (pile, batterie...) sur le bornier.
- Via la prise ATX. Ce type d'alimentation permettra d'alimenter l'arduino avec le 5 V et le Rotoshield avec le 12 V. Toutefois si vous optez pour ce mode d'alimentation pensez à faire le pont de soudure qui se trouve derrière la prise ATX.

Le Rotoshield est parfaitement adapté pour des petits moteurs n'excédant pas les 6 V en continu via la prise USB. A l'opposé, si votre projet contient de gros moteurs, il est préférable d'avoir recours à une batterie (ex: celle d'une visseuse) ou la prise ATX pour les alimenter.
Pensez à vérifier les caractéristiques des vos moteurs avant utilisation afin d’adapter leur alimentation.



Moteur DC
- Branchement:
Rien de plus simple. Il suffit de brancher les deux câbles du moteur aux bornes du bornier. Si le moteur est branché à l'envers son sens de rotation sera inversé.
- Code:
Un petit défaut est apparu sur le Rotoshield. Il peut contrôler jusqu'à 4 moteurs en courant continu. On peut donc en faire fonctionner un seul si on le souhaite ou seulement 2, ainsi jusque 4 moteurs... Mais il semblerait que certaines combinaisons ne fonctionneraient pas toutes sur certains shields.
Pour parer ceci, il suffit de déclarer les 4 moteurs et de tous les initialiser dans votre code. Ensuite, il suffit de continuer votre code comme vous le souhaiter. Cette parade n'affectera pas la suite de votre programme, ne fera pas démarrer les moteurs que vous n'utilisez pas et ne consommera pas la moindre puissance dans votre montage.

Exemple:
Code: Tout sélectionner
#include <Wire.h>
#include <snootor.h>

SnootorDC Motor_1;
SnootorDC Motor_2;
SnootorDC Motor_3;
SnootorDC Motor_4;

void setup()
{
  Wire.begin();
  Motor_1.init(1);
  Motor_2.init(2);
  Motor_3.init(3);
  Motor_4.init(4);
}

void loop()
{
  Motor_3.setSpeed(255);
  Motor_3.run(FORWARD);
  delay(2000);

  Motor_3.run(RELEASE);
  delay(2000);

  Motor_3.setSpeed(255);
  Motor_3.run(BACKWARD);
  delay(2000);
}




Moteur pas à pas
- Branchement:
Avant de brancher votre moteur pas à pas (bipolaire), pensez à repérer quels câbles forment les couples des 2 bobines du moteur et celui qui est le GND.
Une fois les câbles identifiés, il suffit de brancher le GND au bornier du milieu et chaque couples de câbles à un des 2 borniers à coté de celui du GND.
Attention à vos branchements, si ils sont mal effectués votre moteur ne tournera pas.
- Configuration:
Lors de l'utilisation d'un moteur pas à pas, vous devez fournir son nombre de pas par tour à votre code. Cette information est propre à chaque moteur et se trouve facilement dans sa datasheet. Il faut également préciser si il doit fonctionner en "Half" ou "Full" step (soit demi-tour ou tour complet).
Il faut aussi la fréquence de fonctionnement du moteur. Pour cela, il existe un sketch dans la librairie, "Frequency_Test". Il suffit de brancher votre moteur, d'uploader le sketch sur l'arduino, d'ouvrir le moniteur et de noter quelle fréquence fait tourner correctement le moteur.



-Tester son Rotoshield

Ce point concerne ceux qui achètent le Rotoshield à souder soi-même. Pour s'assurer qu'il fonctionne correctement et que vos soudures sont bien réalisées, câblez la pin 5 V au M+ du bornier d'alimentation et uploader le sketch suivant;
Code: Tout sélectionner
// Snootlab Max 7313 Motor shield library
// Based on Adafruit Motor shield library
// https://github.com/adafruit/Adafruit-Motor-Shield-library
// copyleft Snootlab, 2011
// this code is public domain, enjoy!
 
/*

   This sketch demonstrates how to address DC motors. It uses 2 motors,
   but you can handle up to 4 motors using this library.

*/

// need to include this first
#include <Wire.h>

// this is the snootor library
#include <snootor.h>

// Declaration of 4 motor objects

SnootorDC Motor_1;
SnootorDC Motor_2;
SnootorDC Motor_3;
SnootorDC Motor_4;
int i;
void setup(){

// Initialization according to pins
Serial.begin(115200);
 Wire.begin();
  Motor_1.init(1);
  Motor_2.init(2);
  Motor_3.init(3);
  Motor_4.init(4);
  Serial.println("init ok");
}

void loop(){
  Serial.print("Round ");
  Serial.println(i++);
  SC.dump();
// run forward at maximal speed

  Motor_1.setSpeed(255);
  Motor_2.setSpeed(255);
      Motor_3.setSpeed(255);
  Motor_4.setSpeed(255);
  Motor_1.run(FORWARD);
  Motor_2.run(FORWARD);

  Motor_3.run(FORWARD);
  Motor_4.run(FORWARD);
  delay(2000);

// stop for 2 seconds
  Motor_1.run(RELEASE);
  Motor_2.run(RELEASE);
    Motor_3.run(RELEASE);
  Motor_4.run(RELEASE);
  delay(2000);

// run backward at maximal speed

  Motor_1.setSpeed(255);
  Motor_2.setSpeed(255);
  Motor_3.setSpeed(255);
  Motor_4.setSpeed(255);
  Motor_1.run(BACKWARD);
  Motor_2.run(BACKWARD);
    Motor_3.run(BACKWARD);
  Motor_4.run(BACKWARD);
  delay(2000);
}


Normalement, les 4 leds devraient s'allumer alternativement du vert au rouge, toutes en même temps.
Avatar de l’utilisateur
fred
 
Messages: 215
Inscription: Lun 20 Déc 2010 15:32
Localisation: Toulouse

Retourner vers Rotoshield

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités