Omet navegació

6.5.- Arduino Motor Shield R3 (L298)

Arduino Motor Shield R3

Aquesta targeta per motors s'alimenta amb un voltatge d'entre 5 i 12V. Esta basada en el integrat L298P.

Cal tindre-la sempre alimentada amb un font d'alimentació externa. Permet donar al motors 2A per cada canal o un màxim de 4A i té la funció de frenat de motor en cada canal.

L'esquema per connectar dos motors de continua és aquest:

Esquema dos motors amb Arduino Motor Shield R3

El programa per fer anar aquests motors amb Arduino és aquest:

/*Motor Shield: Exemple amb dos motors de continua*/
// Programa de domini públic.
//Font: http://www.arduino.org/learning/tutorials/boards-tutorials/arduino-motor-shield-two-dc-motors-example

//Defineix les variables usades al programa
/*Motor de continua connectat al canal A */
int pinDirA = 12;// Variable usada per configurar la direcció del Motor 1
int PinFreA = 9;// Variable usada per frenar el Motor1
int pinPwmA = 3;// Variable usada per seleccionar la velocitat del Motor1
 
/*Motor de continua connectat al canal B */
int pinDirB = 13;// Variable usada per configurar la direcció del Motor 2
int PinFreB = 8;// Variable usada per frenar el Motor2
int pinPwmB = 11;// Variable usada per seleccionar la velocitat del Motor2
 
void setup() 
{
// inicialitza el Motor1
  pinMode(pinDirA, OUTPUT);
  pinMode(pinPwmA, OUTPUT);
  pinMode(PinFreA, OUTPUT);
// inicialitza el Motor2
  pinMode(pinDirB, OUTPUT);
  pinMode(pinPwmB, OUTPUT);
  pinMode(PinFreB, OUTPUT);
}
 
void loop()
{
  //Prova1: Direcció: Motor1 i Motor2 endavant; Velocitat: Motor1 i Motor2 màxima
  /*Motor1*/
  digitalWrite(pinDirA, HIGH); //Configura la direcció del Motor1 cap endavant
  digitalWrite(PinFreA,LOW);   //Desactiva el fre per al Motor1
  analogWrite(pinPwmA, 255);   //Configura la velocitat del Motor1 a màxima
  /*Motor2*/
  digitalWrite(pinDirB, HIGH); //Configura la direcció del Motor2 cap endavant
  digitalWrite(PinFreB,LOW);   //Desactiva el fre per al Motor2
  analogWrite(pinPwmB, 255);   //Configura la velocitat del Motor2 a màxima
  delay(2500);
 
  //Atura els motors
  digitalWrite(PinFreA, HIGH);  //Activa el fre per al canal A
  digitalWrite(PinFreB, HIGH); //Activa el fre per al canal B
  delay(1000);
 
  //Prova2: Direcció: Motor1 i Motor2 endarrere; Velocitat: Motor1 i Motor2 màxima
   /*Motor1*/
  digitalWrite(pinDirA,LOW);  //Configura la direcció del Motor1 cap endarrere
  digitalWrite(PinFreA,LOW);  //Desactiva el fre per al Motor1
  analogWrite(pinPwmA, 255);  //Configura la velocitat del Motor1 a màxima
  /*Motor2*/
  digitalWrite(pinDirB, LOW); //Configura la direcció del Motor2 cap endarrere
  digitalWrite(PinFreB,LOW);  //Desactiva el fre per al Motor2
  analogWrite(pinPwmB, 255);  //Configura la velocitat del Motor2 a màxima
  delay(2500);
 
  //Atura els motors
  digitalWrite(PinFreA, HIGH);  //Activa el fre per al canal A
  digitalWrite(PinFreB, HIGH); //Activa el fre per al canal B
  delay(1000);
 
 //Prova3: Direcció: Motor1 endavant i Motor2 endarrere; Velocitat: Motor1 i Motor2 màxima
   /*Motor1*/
  digitalWrite(pinDirA,HIGH);  //Configura la direcció del Motor1 cap endavant
  digitalWrite(PinFreA,LOW);   //Desactiva el fre per al Motor1
  analogWrite(pinPwmA, 255);   //Configura la velocitat del Motor1 a màxima
  /*Motor2*/
  digitalWrite(pinDirB,LOW);   //Configura la direcció del Motor2 cap endarrere
  digitalWrite(PinFreB,LOW);   //Desactiva el fre per al Motor2
  analogWrite(pinPwmB, 255);   //Configura la velocitat del Motor2 a màxima
  delay(2500);
 
  //Atura els motors
  digitalWrite(PinFreA, HIGH);  //Activa el fre per al canal A
  digitalWrite(PinFreB, HIGH); //Activa el fre per al canal B
  delay(1000); 
 
  //Prova4: Direcció: Motor1 endarrere i Motor2 endavant; Velocitat: Motor1 i Motor2 màxima
 /*Motor1*/
  digitalWrite(pinDirA,LOW);  //Configura la direcció del Motor1 cap endarrere
  digitalWrite(PinFreA,LOW);  //Desactiva el fre per al Motor1
  analogWrite(pinPwmA, 255);  //Configura la velocitat del Motor1 a màxima
  /*Motor2*/
  digitalWrite(pinDirB, HIGH); //Configura la direcció del Motor2 cap endavant
  digitalWrite(PinFreB,LOW);  //Desactiva el fre per al Motor2
  analogWrite(pinPwmB, 255);  //Configura la velocitat del Motor2 a màxima
  delay(2500);
 
  //Atura els motors
  digitalWrite(PinFreA, HIGH);  //Activa el fre per al canal A
  digitalWrite(PinFreB, HIGH); //Activa el fre per al canal B
  delay(1000);
 
}