Arduino Uno et moteurs (partie 1)

L’Arduino Uno n’est pas conçu pour alimenter à lui tout seul des moteurs. La raison est que l’intensité en sortie disponible pour une pin est de l’ordre de 20 mA et ça ne fait vraiment pas beaucoup pour alimenter un petit moteur électrique.

Mais, heureusement, il y a de très nombreuses solutions pour compléter l’Arduino et le faire piloter toutes sortes de moteurs.

En voici une première : utiliser un module de contrôle moteur tel le module DF-MD 1.3 de DFRobot (Ref DRI0002). Ce module ajoute 2 sorties moteurs à la carte Uno.

Fichier hébergé par Archive-Host.com

Voilà un petit programme abondamment commenté qui commande un moteur courant continu 12 volts en faisant varier sa vitesse et son sens.


// programme pour Arduino UNO + L298 Dfrobot DF-MD V-1.3
// controle vitesse et sens d'un moteur à courant continu


int E1 = 4;     // enable : interrupteur marche/arret

int M1 = 5;    //  controle vitesse et sens avec pwm


// A T T E N T I O N
// Première chose à faire : retirer le cavalier VD=VS du
// controleur moteur et ne jamais le remettre 
// S'il est mis cela veut dire que la carte n'a pas besoin 
// de sa propre alimentation, 
// qu'elle peut se servir de l'alimentation du moteur 
// Il est vraiment préférable de séparer alim moteur et alim
// logique de la carte.
// j'ai grillé un module pour avoir ignoré ce conseil...


// Alim de la carte Arduino : par ex par le port USB

// Alim du controleur moteur VD : par une alim 5v ;
// VD est le +, GND le moins

// Alim du moteur VS : par une alim 12v ou un peu plus 
// (le controleur provoque
// une chute de tension d'environ 2v ;
// si on veut 12v en sortie, il faut mieux 14v en entrée). 
// VS est le +, GND le moins

// Les masses des deux alim carte controleur et moteur 
// sont reliées sur la carte controleur (GND)
// La masse de la carte Arduino est aussi reliée aux masses
// précédentes

// Connexions logiques : 

// Arduino Pin 4 reliée à E1 
// C'est un interrupteur de mise en marche du moteur
// a l'état haut le moteur est alimenté
// à l'état bas il est arreté


// Arduino Pin 5 reliée à M1 
// la pin 5 peut generer des signaux pwm 
// elle est repérée par un signe ~ sur l'Arduino
// elle  va permettre de faire varier la vitesse du moteur
// mais aussi le sens de rotation




void marche(int a)          
{
  analogWrite (M1,a);      
  digitalWrite(E1,HIGH);  
} 

void arret(int a)          
{     
  digitalWrite(E1,LOW); 
  delay(a); 
} 


void setup() // executée une seule fois
{
    pinMode(E1, OUTPUT); 
    pinMode(M1, OUTPUT);     
    
}


void loop() // executée en boucle
{
  
          
    marche(150); // en avant vitesse reduite
    
    delay(3000); //attendre 3 secondes
    
    marche(255); // en avant vitesse maxi
    
    delay(3000);
    
    arret(5000); // arret pendant 5 secondes
    
    marche(-150); // on part en marche arrière vitesse réduite
     
    delay(3000);
    
    marche(-255); // marche arrière vitesse maxi
     
    delay(3000);
    
    arret(5000); // arret pendant 5 secondes
       
}